Page 30 of 30

Re: YouTube

PostPosted: Thu Aug 05, 2021 3:36 pm
by it.x
Hello,

fast and nice way to bring the Serviio YouTube plugin back to life, is to replace the lines <106..132> (YouTube.groovy rel.09.02.2020/14005B) with this code:

  Code:
// body of youtube.groovy rel.09.02.2020 (14005B)
// lines <0..105>

      for (elType in ['&el=embedded', '&el=detailpage', '&el=vevo', '']) {
            // ver.1 blocked by Google  ca. 01.05.2021 def videoInfoUrl = "https://www.youtube.com/get_video_info?&video_id=$videoId$elType&ps=default&eurl=&gl=US&hl=en"
            // ver.2 blocked by Google  19.06.2021 def videoInfoUrl = "https://www.youtube.com/get_video_info?html5=1&video_id=$videoId$elType&ps=default&eurl=&gl=US&hl=en"
            // ver.3 blocked by Google  30.07.2021 def videoInfoUrl = "https://www.youtube.com/get_video_info?video_id=$videoId&eurl=https%3A%2F%2Fyoutube.googleapis.com%2Fv%2F$videoId&html5=1&c=TVHTML5&cver=6.20180913$elType&ps=default&eurl=&gl=US&hl=en"
            def videoInfoUrl = "https://youtubei.googleapis.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"
           
            def TmpPost = new URL("https://youtubei.googleapis.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8").openConnection();
            def TmpBody ='{"context": {"client": {"hl": "en",  "clientName": "WEB", "clientVersion": "2.20210721.00.00",  "mainAppWebInfo": {"graftUrl":  "/watch?v='+"$videoId"+'"}}},  "videoId":  "'+"$videoId"+'"}'
            TmpPost.setRequestMethod("POST")
            TmpPost.setDoOutput(true)
            TmpPost.setRequestProperty("Content-Type", "application/json")
            TmpPost.getOutputStream().write(TmpBody.getBytes("UTF-8"))
            //org def videoInfoWebPage = new URL(videoInfoUrl).getText()
            def videoInfoWebPage = TmpPost.getInputStream().getText()         
            //org def parameters = [:]
            //org videoInfoWebPage.split('&').each { item -> addParameter(item, parameters, '=') }
            def jsonSlurper2 = new JsonSlurper()
            def parameters = jsonSlurper2.parseText(videoInfoWebPage)
            // org def playerResponse = parameters['player_response']
            def playerResponse = parameters['responseContext']
            if(playerResponse) {
                //org def pr = new JsonSlurper().parseText(URLDecoder.decode(playerResponse, 'UTF-8'))
                //org def streamingData = pr['streamingData']
                def streamingData =  parameters['streamingData']
                if(!streamingData) {
                    continue
                }

// lines <133..322>
// body of youtube.groovy rel.09.02.2020 (14005B)


Fyi:
- cause of a problem: YouTube API v3 "/get_video_info" issue (looks like step blocking by Google in 2021)
- solution: change groovy URL.GetText() method to REST POST request to symulate native YouTube player and then test new JSON response
- JSON response: property "player_response" has been changed to "responseContext"

- fully modified and functional version of plugin attached
- please remember to manage your own API key ( line 53/55 acc. to file version)
- 17.06.2022: reformatting comments and testing original Serviio API key (at this time works fine)

Thanks to:
- https://stackoverflow.com/questions/676 ... -not-found
- https://stackoverflow.com/questions/256 ... ttp-client


Enjoj :) gratitude by any donation are welcome: https://zrzutka.pl/en/y4nk6p


Regards and good luck to Serviio Team :)

Re: YouTube

PostPosted: Thu Sep 02, 2021 3:25 pm
by bmn
it.x wrote:Hello,

fast and nice way to bring the Serviio YouTube plugin back to life, is to replace the lines <106..132> (YouTube.groovy rel.09.02.2020/14005B) with this code:


Doesnt work (anymore?).

  Code:

[WebResourceParser] Plugin YouTube returned no value for resource item 'null'



EDIT : btw, returns HTTP ERROR 410

Re: YouTube

PostPosted: Thu Sep 02, 2021 7:30 pm
by it.x
It works fine and stable for many weeks.

I non stop use searches and channels like this:

SEARCHES:
  Code:
 https://www.googleapis.com/youtube/v3/search?q=YOUR_STRING_TO_FIND&order=date


CHANNELS:
  Code:
https://www.googleapis.com/youtube/v3/channels?forUsername=YOUR_STRING_TO_FIND




Maybe you have a problem with the right Google API key: line 53.

Good luck.

Re: YouTube

PostPosted: Fri Sep 03, 2021 2:34 pm
by bmn
it.x wrote:I
Maybe you have a problem with the right Google API key: line 53.


The key is in line 55 and Im using mine. Still got [WebResourceParser] Plugin YouTube returned no value for resource item 'null'

Re: YouTube

PostPosted: Fri Sep 03, 2021 5:18 pm
by it.x
My job ended when plugin start working again.

There are many possible causes for your problem: maybe you need search this forum or ask Serviio support for help, but you definitely need to be brave and smart against quotas, firewalls, antivir, etc... :)

Re: YouTube

PostPosted: Sat Jan 08, 2022 8:55 pm
by Alex532
Greetings to the developer and all users, the plugin is working at the moment, if so then you can have detailed instructions on how to install it from 0, I am using this technology for the first time.

Re: YouTube

PostPosted: Sun Jan 09, 2022 1:03 am
by atc98092
The instructions for using this plugin should be back in the original post. You have to copy the plugin file into the plugins folder where Serviio is installed on your computer. On Windows, that's C:\Program Files\Serviio\plugins

Re: YouTube

PostPosted: Sun Jan 09, 2022 7:07 am
by Alex532
Thank you for the quick answer, yes I did it, but what to do next, how to open a video from YouTube on my TV?)) :?

Re: YouTube

PostPosted: Thu Apr 07, 2022 4:06 pm
by SlavaUkraini
Unfortunately the offered plugin has errors, about 9 lines of the previous version were missing, the attribute "streamingFormats" was no longer defined. :roll:

I guess that an own Google API key is still required and has to be set in line 57 of my version.

Re: YouTube

PostPosted: Thu Jun 02, 2022 11:03 pm
by it.x
Hello,

It works fine and stable - I use it often and conveniently with DLNA vs TV Sony Bravia sets or Sony Blu-ray/DVD/network/multimedia/... , several models of Android TV box and few other native DLNA players like Android/iOS apps etc.

I see that you are using the wrong version of groovy file to modify.

Maybe I will help by repeating - two ways:

1. (education:) get the original, last working file, from Serviio Admins post:

https://forum.serviio.org/viewtopic.php?f=20&t=3276&hilit=you+tube#p21613
(Youtube.groovy rel.09.02.2020/14005B)

than make the modifications I am writing about:

https://forum.serviio.org/viewtopic.php?f=20&t=3276&hilit=you+tube&start=580#p133877


that is replace lines <106..132> with new code and manage your own API key at line 53.



2. (fast) get the file already modified by me:

https://forum.serviio.org/viewtopic.php?f=20&t=3276&hilit=you+tube&start=580#p133877
(Youtube.groovy rel.30.07.2021/15673B)

and manage only your own API key at line 55.

good luck
it.x