ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
130.27k stars 9.83k forks source link

detect all piped instances #30820

Open AnthillSudoku opened 2 years ago

AnthillSudoku commented 2 years ago

Checklist

Example URLs

piped instances

Description

At the moment, only the official piped instance https://piped.kavin.rocks is supported

Every instance begin with "https://piped."

Considering that the number of instances can grow, is it worth to find a way to make youtube-dl works based on that instead on rely of the list of all instances?

garoto commented 2 years ago

Any domain could use piped as a subdomain, so that selector would be broken from the very beginning.

They would be added as valid domains for youtube videos, just like invidious instances are currently.

dirkf commented 2 years ago

There are several examples of sites that have multiple instances with unrelated URLs/domains, and listing all the instances is a maintenance headache.

In this case I'd rather avoid matching r'https?://piped(?:\.[^.]+)+ in case of false positives.

Normally yt-dl routes a page to an extractor based on a URL pattern. We need a framework to handle cases where the URL (at least the domain part) can't be matched but the extractor can be selected based on the content of the page.

  1. The extractor for such a site should have a (say) _page_suitable() class method and also a URL pattern matching a pseudo-scheme, say ytdlie:{IE_name}.
  2. In the generic extractor, iterate over extractor classes calling ie._page_suitable(url, webpage).
  3. If this is truthy for some IE, smuggle the actual URL into the ytdlie: URL for the IE and return the extraction result from that URL.

Incidentally the site, eg https://piped.silkky.cloud/, displays blank in my browser.

dirkf commented 2 years ago

Apparently the "legacy build" for browsers without dynamic import() doesn't work ...

dirkf commented 2 years ago

https://github.com/TeamPiped/Piped

As with Invidious, the presence of an OpenSearch <link> with title=Piped can be used to identify the pages. However, as the pages are generated dynamically with JS, we can't do much with them except redirect to the equivalent YT pages.

gamer191 commented 2 years ago

I've said this on the yt-dlp discord server, but I'll say it again: If you can't support a website, just don't support it. Don't pretend to support it and secretly download it from a different website instead. Nobody wants a "convenience feature" to "save them the trouble of having to edit the piped domain out of their urls"

dirkf commented 2 years ago

...we can't do much with them except redirect to the equivalent YT pages.

Not quite true: apparently we could use the API. Then we'd have to make a new extractor using the API, which presumably could include all the subtle features of the YouTube extractor, all over again. OTOH at least the API is simple and documented.

ghost commented 1 year ago

Not even https://piped.kavin.rocks work

$[~]$ youtube-dl -F https://piped.kavin.rocks/watch?v=LXb3EKWsInQ
[youtube] LXb3EKWsInQ: Downloading webpage
WARNING: Unable to download webpage: <urlopen error [Errno -3] Temporary failure in name resolution>
[youtube] LXb3EKWsInQ: Downloading API JSON

That warning loops forever

AnthillSudoku commented 1 year ago

$[~]$ youtube-dl -F https://piped.kavin.rocks/watch?v=LXb3EKWsInQ

No issue for me, youtube-dl 2021.12.17 (the latest official). Check your internet connections and try again

ghost commented 1 year ago

[ ] youtube-dl -F https://piped.kavin.rocks/watch?v=LXb3EKWsInQ

No issue for me, youtube-dl 2021.12.17 (the latest official). Check your internet connections and try again

Okay. So this is the problem. I've blocked googlevideo.com on router level. Piped Instances actually route youtube traffic into their own servers. So I can still enjoy Piped on browser even with youtube blocked. It starts working as soon as I unblock youtube.

Looks like piped detection from ytdl just re-uses youtube servers instead of piped servers. It just grabs ?v= query after /watch & just appends it to youtube.com/. It's just a simple url redirection, which is not an accurate workaround if you'd ask me.

There are places where youtube is generally blocked. And piped instances give us hope to enjoy youtube without VPN. Sadly, I couldn't download streams from piped instances.

rautamiekka commented 1 year ago

The question mark is the problem, most likely. ALWAYS double-quote (or single-quote, if your shell supports it, like most Linux shells and PowerShell) web addresses.

ghost commented 1 year ago

The question mark is the problem, most likely. ALWAYS double-quote (or single-quote, if your shell supports it, like most Linux shells and PowerShell) web addresses.

What ! no... question mark exists. It's a part of query syntax. Also, quoting ain't mandatory when there aren't any spaces or escape characters in URL. (I've retested with or without, & it's the same)

rautamiekka commented 1 year ago

It's always best to, as even the same shells are inconsistent with it. Besides: better safe than sorry, the latter of which it absolutely doesn't get with addresses when you just need to add 2 quotes to ensure it works as intended.

ghost commented 1 year ago

Besides: better safe than sorry

You make it sound like rm -rf / lmao Is not like you'll break your Linux machine with yt-dl unquoted ¯\_(ツ)_/¯ I don't even know why this is a big deal. If the 1st go doesn't work, 2nd trial's ofc gonna be quotes included

rautamiekka commented 1 year ago

What a weak and lazy argument ... Whatever, just take a look at how many tickets have been made by ppl who didn't quote and blamed it on the app (yt-dlp or youtube-dl).

ghost commented 1 year ago

For YouTube/piped links, quoting is not necessary, although I understand what you saying (that it's a good practice)

rautamiekka commented 1 year ago

In my and many others' experience it is necessary.

dirkf commented 1 year ago

In a POSIX shell, ? is a shell matching character that will normally be expanded relative to the current directory. It's unlikely that a URL containing ? will match a filename, so the expansion will just give the original URL back. However, where ? is, & may not be far away and that will definitely need to be quoted. So it's easier always to quote the 'URL argument' to yt-dl rather than having to check each time.

Windows cmd has its own more arcane traps (eg, = delimits batch parameters) that justify quoting the "URL argument" in that case.

dirkf commented 1 year ago

Looks like piped detection from ytdl just re-uses youtube servers instead of piped servers. It just grabs ?v= query after /watch & just appends it to youtube.com/. It's just a simple url redirection, which is not an accurate workaround if you'd ask me.

I wasn't aware that Piped served YT video other than via the YT stream URLs: presumably just by proxying the YT/GV streams? As the webpage is entirely created with JS, the only data available to yt-dl is the ID in the URL. If there's a simple way to generate Piped URLs from the ID, we could use it. However, it could be nice to include the YT streams with a higher preference for people who don't block GV, so as to avoid unnecessarily loading the Piped instance.

ghost commented 1 year ago

However there are geolocations that have blocked Google services like china & select cities in EU. Piped works very well there (on browsers) caz of their own servers. But unfortunately you can't download them caz yt-dl instead parses YouTube servers behind.

Atleast one can download 360p/720p streams directly from invidious, but I expected yt-dl to handle these proxied instances better.

dirkf commented 1 year ago

We can study https://piped-docs.kavin.rocks/docs/architecture/, etc.

Each Piped instance/site provides an opaque JS front-end to an open API implemented by the back-end. The front-end may direct requests to a different instance back-end. Finally there is a YT proxy which seems to use a hostname prefix like pipedproxy.

As in https://github.com/ytdl-org/youtube-dl/issues/30820#issuecomment-1159188042, the data for a video can be returned with a URL like this:

JSON from https://pipedapi.kavin.rocks/streams/BaW_jenozKc

 {
  'title': 'youtube-dl test video "\'/\\ä↭𝕐',
  'description': 'test chars:  "\'/\\ä↭𝕐
test URL: https://github.com/rg3/youtube-dl/iss...

This is a test video for youtube-dl.

For more information, contact phihag@phihag.de .', 'uploadDate': '2012-10-02', 'uploader': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s48-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'thumbnailUrl': 'https://pipedproxy.kavin.rocks/vi/BaW_jenozKc/maxresdefault.jpg?host=i.ytimg.com', 'hls': 'https://pipedproxy-cwl.kavin.rocks/api/manifest/hls_variant/expire/1664306468/ei/xPgyY9SiCpLYxN8Praq3uAU/ip/129.151.90.107/id/05a5bf8de9e8cca7/source/youtube/requiressl/yes/playback_host/rr2---sn-aigzrnze.googlevideo.com/mh/Rf/mm/31%2C29/mn/sn-aigzrnze%2Csn-aigl6nsk/ms/au%2Crdu/mv/m/mvi/2/pl/24/tx/24197277/txs/24197275%2C24197276%2C24197277/hfr/1/demuxed/1/tts_caps/1/maudio/1/initcwndbps/1373750/vprv/1/go/1/mt/1664284642/fvip/4/nvgoi/1/short_key/1/ncsapi/1/keepalive/yes/fexp/24001373%2C24007246/dover/13/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Ctx%2Ctxs%2Chfr%2Cdemuxed%2Ctts_caps%2Cmaudio%2Cvprv%2Cgo%2Citag%2Cplaylist_type/sig/AOq0QJ8wRAIgQr2IXUkmalIqk0rv81987NHeAua7OI6gJX_FO6UFbYECIEf4fwJVOQFgrx8Y8s_FD4T3XQIDXeZofwhgFSlXXcYS/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRgIhALWeYfjTFn6hRBJwNo5gMsI2a8n4H0KbnA6QkLhFWrNkAiEAv97XRYQiMzHxHrFaNcBblZ6yLymPW3qQ7N4pBdO8rFQ%3D/file/index.m3u8?host=manifest.googlevideo.com', 'dash': null, 'lbryId': null, 'uploaderVerified': false, 'duration': 10, 'views': 49843, 'likes': 442, 'dislikes': 18, 'uploaderSubscriberCount': 89, 'audioStreams': [ { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=139&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=audio%2Fmp4&gir=yes&clen=59999&dur=9.984&lmt=1387961817987635&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgF8WRru204NvDyv8y2H2hCz5jsn3eeKLkcGzTj6tRwgACIGMb3ZHeFd4A2KPcdEMgZDMRNNJ2bj4_o_KJ1zE7wx3a&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'M4A', 'quality': '0 kbps', 'mimeType': 'audio/mp4', 'codec': 'mp4a.40.5', 'videoOnly': false, 'bitrate': 48071, 'initStart': 0, 'initEnd': 592, 'indexStart': 593, 'indexEnd': 636, 'width': 0, 'height': 0, 'fps': 0 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=249&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=59570&dur=9.841&lmt=1506055615351916&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgNFGMJOLl6ETPcxErgFDL2-mrqQD4VuOybkZ-K3vTjq8CIQDh8AFD03ojguQGI12myGdTmBdqJ6JxM7NlNBhsdDnGpQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBMA_OPUS', 'quality': '0 kbps', 'mimeType': 'audio/webm', 'codec': 'opus', 'videoOnly': false, 'bitrate': 48425, 'initStart': 0, 'initEnd': 271, 'indexStart': 272, 'indexEnd': 289, 'width': 0, 'height': 0, 'fps': 0 } ], 'videoStreams': [ { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=137&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=2208750&dur=9.800&lmt=1387961822987808&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgFlrvW6JojzMaKswgeDt1XtG3CO8zRUvjQaec3l20MnICIQD_0i-DWldwYvPNQEyE96pcJcpWzWikw1YN80yDwDDVOA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '1080p', 'mimeType': 'video/mp4', 'codec': 'avc1.640028', 'videoOnly': true, 'bitrate': 1835080, 'initStart': 0, 'initEnd': 711, 'indexStart': 712, 'indexEnd': 767, 'width': 1920, 'height': 1080, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=248&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=988479&dur=9.833&lmt=1544741703689523&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhALReHURgfPfPDsQ3JcEqckR4pooRKsNBFqvVIU_OVAlrAiEAikGn2yEGiXMTS8jW-lSnvFWUYKCVEckO7IROeHWo4CA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '1080p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 879258, 'initStart': 0, 'initEnd': 218, 'indexStart': 219, 'indexEnd': 252, 'width': 1920, 'height': 1080, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=136&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=1673012&dur=9.800&lmt=1387961826998447&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhANinT45-M0GIsX-KEcdJ_L9dTBeSSLpceGVwWvv_tbzIAiAVyrh2cYz_cCfAWpiU0VKbs2a3lWg-hJM7g1Hu0FEiRg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '720p', 'mimeType': 'video/mp4', 'codec': 'avc1.4d401f', 'videoOnly': true, 'bitrate': 1425450, 'initStart': 0, 'initEnd': 709, 'indexStart': 710, 'indexEnd': 765, 'width': 1280, 'height': 720, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=247&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=516789&dur=9.833&lmt=1544742069676660&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAP0d5VD02inL8IEGrQqpmmtz-pT3swF6G2aKo-SVqG6dAiBaE8pcxIok41-HJUavupO8NYavCmFqzEixkPHPrXlSCg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '720p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 448626, 'initStart': 0, 'initEnd': 218, 'indexStart': 219, 'indexEnd': 252, 'width': 1280, 'height': 720, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=135&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=869800&dur=9.800&lmt=1387961813016693&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgOCzPMqzn6tfYJTSy8Ku3fWaZMeEFGR7NSCx2ybDR5XsCIQD9_288B2etmshVotuMzuHYI-KkwmQcZOlC89XLW8Gq2A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '480p', 'mimeType': 'video/mp4', 'codec': 'avc1.4d401f', 'videoOnly': true, 'bitrate': 727286, 'initStart': 0, 'initEnd': 708, 'indexStart': 709, 'indexEnd': 764, 'width': 854, 'height': 480, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=244&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=169461&dur=9.833&lmt=1544742069676265&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAOlqP9TT7u6KMSgoA89UdsDF47MlnmgEStU-LdRxbuMnAiEAzFjoIqYrBeCT2GZQNccGaBzopsbvC2Ddm_Ep7smCq_E%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '480p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 158487, 'initStart': 0, 'initEnd': 218, 'indexStart': 219, 'indexEnd': 252, 'width': 854, 'height': 480, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=134&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=357985&dur=9.800&lmt=1387961808021466&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAMcBa0aXeAPJkT4idPhD2Om-LemgMoplv1YNMAXRgA5FAiEAqo835vLk3ClQO-jlBxoQ5ph8COHgmoHjU6wgw5bX8Fw%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '360p', 'mimeType': 'video/mp4', 'codec': 'avc1.4d401e', 'videoOnly': true, 'bitrate': 294053, 'initStart': 0, 'initEnd': 708, 'indexStart': 709, 'indexEnd': 764, 'width': 640, 'height': 360, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=243&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=77366&dur=9.833&lmt=1544742069744565&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAJPqLmZWSaYE7Dx2RTELJwFTGmCBMjGNnK54NLY-ObcOAiApTsVuucqwrsDIMcQ1RV7-z-Y5FoCSIY9F6KagClr8IQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '360p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 67143, 'initStart': 0, 'initEnd': 218, 'indexStart': 219, 'indexEnd': 251, 'width': 640, 'height': 360, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=133&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=301334&dur=9.800&lmt=1387961813015470&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgI85xXRFRau_wMqipDfe84XjlhS1RP2y-JhdBIcJnLSMCIGH1mwcfYuNc_Yz6KzJeY9N0XI_qUacc-KboDoiWxqFh&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '240p', 'mimeType': 'video/mp4', 'codec': 'avc1.4d4015', 'videoOnly': true, 'bitrate': 246286, 'initStart': 0, 'initEnd': 673, 'indexStart': 674, 'indexEnd': 729, 'width': 426, 'height': 240, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=242&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=34067&dur=9.833&lmt=1544742069764189&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgNxZ59t4QG_jy8Nd3I752PWpsFzYI_EKZf9bASaIArYkCIQDfs5U05dlbav7Spgec7dTYIWCjUzgDYe_JDhcGB2TM7g%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '240p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 28022, 'initStart': 0, 'initEnd': 217, 'indexStart': 218, 'indexEnd': 250, 'width': 426, 'height': 240, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=160&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&gir=yes&clen=138321&dur=9.800&lmt=1387961804993526&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgDRglCoZ0ZHyOc8RR2GL_tymlFXrBxrotI1C4DIX5sw4CIQCXAHAg5ZFUGcx5T3Aaf-0UU9TzxsleYmvspKiWLDd1wg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '144p', 'mimeType': 'video/mp4', 'codec': 'avc1.4d400c', 'videoOnly': true, 'bitrate': 115551, 'initStart': 0, 'initEnd': 670, 'indexStart': 671, 'indexEnd': 726, 'width': 256, 'height': 144, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=278&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fwebm&gir=yes&clen=53473&dur=9.833&lmt=1544742069769006&mt=1664284642&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5432432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALE3nezvzfXZDL_Z6EAFmK4lX_EhxaZG_y_aw28Uj6c3AiBivTlJhM_Yt1jDmuiTLHvx6m1GLwrYKMuag-ETHhEm3w%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'WEBM', 'quality': '144p', 'mimeType': 'video/webm', 'codec': 'vp9', 'videoOnly': true, 'bitrate': 49218, 'initStart': 0, 'initEnd': 217, 'indexStart': 218, 'indexEnd': 250, 'width': 256, 'height': 144, 'fps': 30 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=17&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2F3gpp&gir=yes&clen=57125&dur=10.216&lmt=1387961822994781&mt=1664284642&fvip=4&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgLx4Iu3ZMG7q3tkv9POu69Pz5bmOBTj1nTyF79iKPhxMCIQCwA16Qs08i8b8JpYPJ7RUpW-vaIWyhL-AURWeFzigCvA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'v3GPP', 'quality': '144p', 'mimeType': 'video/3gpp', 'codec': null, 'videoOnly': false, 'bitrate': 0, 'initStart': 0, 'initEnd': 0, 'indexStart': 0, 'indexEnd': 0, 'width': 0, 'height': 0, 'fps': 0 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=18&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&cnr=14&ratebypass=yes&dur=9.891&lmt=1664093440806762&mt=1664284642&fvip=4&fexp=24001373%2C24007246&c=ANDROID&txp=1438434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Ccnr%2Cratebypass%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAIRwP2XADgerdBFqMVyo8b3GRPo0MoJbBTvQIh3889JDAiEAqvGBMfXU_m-ybXyh1oi8ukohMqw24lTYgq1n-24v5iA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '360p', 'mimeType': 'video/mp4', 'codec': null, 'videoOnly': false, 'bitrate': 0, 'initStart': 0, 'initEnd': 0, 'indexStart': 0, 'indexEnd': 0, 'width': 0, 'height': 0, 'fps': 0 }, { 'url': 'https://pipedproxy-cwl.kavin.rocks/videoplayback?expire=1664306468&ei=xPgyY5XEGOf6xN8P5aup-AU&ip=129.151.90.107&id=o-ADxcf27-f0Cc1OAztYlKcIPbgbYO0rBP1Vci6BeJTQog&itag=22&source=youtube&requiressl=yes&mh=Rf&mm=31%2C29&mn=sn-aigzrnze%2Csn-aigl6nsk&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1373750&spc=yR2vpwDR_8WKHjvGViYqGcGkfvhbq9Y&vprv=1&svpuc=1&mime=video%2Fmp4&cnr=14&ratebypass=yes&dur=9.891&lmt=1472250137564567&mt=1664284642&fvip=4&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Ccnr%2Cratebypass%2Cdur%2Clmt&sig=AOq0QJ8wRAIgedwNI5txh7uO94wX0aol3Cl7okCGQ1yoUItoGDCVl6sCIESVk_p4RygaWk9c35heTLxZQWiw7DLDfkvwfJdMm7SC&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgP_1L9vJAVHE55IcUjxKjdoTkKDhPZCkP2zmAbMLOurACIDISuG36tobto2rdQPz8a6PMyKux-XeeUbaBnqEdq7c0&cpn=9JmIJjEINxjPIjUe&host=rr2---sn-aigzrnze.googlevideo.com', 'format': 'MPEG_4', 'quality': '720p', 'mimeType': 'video/mp4', 'codec': null, 'videoOnly': false, 'bitrate': 0, 'initStart': 0, 'initEnd': 0, 'indexStart': 0, 'indexEnd': 0, 'width': 0, 'height': 0, 'fps': 0 } ], 'relatedStreams': [ { 'url': '/watch?v=J91ti_MpdHA', 'title': 'Alicia Keys - Girl on Fire (Official Video)', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/J91ti_MpdHA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCtUEp6osr9ZAgQlva1YSVkoYaIaA&host=i.ytimg.com', 'uploaderName': 'Alicia Keys', 'uploaderUrl': '/channel/UCK5X3f0fxO4YnVKVZP8p6hg', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/jIYPJvITPpP11vVpFQp8ZBgreKPb2HKLXRqz9GyAm-_ju1NN4P4IAz4p2E4vmGSWx5WoZx9t=s88-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '9 years ago', 'shortDescription': null, 'duration': 233, 'views': 390757836, 'uploaded': 1380200400000, 'uploaderVerified': true }, { 'url': '/watch?v=0FB9i7P9Zs4', 'title': 'Denzel Washington\'s Life Advice Will Leave You SPEECHLESS |LISTEN THIS EVERYDAY AND CHANGE YOUR LIFE', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/0FB9i7P9Zs4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBsuLVtlw9qi0eAXduijqggjggoOw&host=i.ytimg.com', 'uploaderName': 'Grow Successful', 'uploaderUrl': '/channel/UClH7jNaN8mrgTdYczffwtOw', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu9-j2vSNwDAOaV-XR9zjNO6uZ_1Med3Z45Hedw_dQ=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '3 years ago', 'shortDescription': null, 'duration': 618, 'views': 20356969, 'uploaded': 1569502800000, 'uploaderVerified': false }, { 'url': '/watch?v=T1m9fc8uz9g', 'title': 'Countries Got Independence From Different Countries #datacomparison #datavibes #independenceday', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/T1m9fc8uz9g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJRsFDqZP7KKWD4ZZRwDFmAB3r7g&host=i.ytimg.com', 'uploaderName': 'Data Vibes', 'uploaderUrl': '/channel/UC76uh8ZIRcCcs5T9g5IHrdQ', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/b0BFsBRHq5eSSwDuA5CAk4lFiyNuv7u35dv2H18TkNk1QN5G6v_C0B3OvXncRAz-RwjLcwVmDA=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 days ago', 'shortDescription': null, 'duration': 121, 'views': 381, 'uploaded': 1663938000000, 'uploaderVerified': false }, { 'url': '/watch?v=Bsjco4NEzmk', 'title': 'Niesner-Wochenendcamp Januar 2017: Ballmaschine Philipp', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/Bsjco4NEzmk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDiQ5bVCScCc1aRiBk3du1IJGv3-Q&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '5 years ago', 'shortDescription': null, 'duration': 116, 'views': 480, 'uploaded': 1506430800000, 'uploaderVerified': false }, { 'url': '/watch?v=ZbZSe6N_BXs', 'title': 'Pharrell Williams - Happy (Video)', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/ZbZSe6N_BXs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGoKEt2dKruBwX4rBkx8zfFx6dDQ&host=i.ytimg.com', 'uploaderName': 'Pharrell Williams', 'uploaderUrl': '/channel/UCNUbNl2U6Hg8J0Zem6hzC2g', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu-8UgZZFWGubKXv5EM5GfsAUCFdAL5JkNQQ3IZabQ=s88-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '8 years ago', 'shortDescription': null, 'duration': 241, 'views': 1048432969, 'uploaded': 1411736400000, 'uploaderVerified': true }, { 'url': '/watch?v=brg8WrIT0uY', 'title': '1. SGU MiniCup U19 2016 - Finale - DD', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/brg8WrIT0uY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3rfU4yG8hOOhwgNA5URsvOPVRrA&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '6 years ago', 'shortDescription': null, 'duration': 1095, 'views': 323, 'uploaded': 1474894800000, 'uploaderVerified': false }, { 'url': '/watch?v=j0QRpPOZaWk', 'title': '1. SGU MiniCup U19 2016 - Finale - HD (teilweise)', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/j0QRpPOZaWk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBJY4fo9ovmI3Yxx5mSYLQdUr5hw&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '6 years ago', 'shortDescription': null, 'duration': 1709, 'views': 204, 'uploaded': 1474894800000, 'uploaderVerified': false }, { 'url': '/watch?v=GpSKgyKJml0', 'title': 'Refrath - Trittau HE1 Bundesliga 2018-02-27', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/GpSKgyKJml0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCGHP0zJ-f9KIle_lAdgC9wds3TQ&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 years ago', 'shortDescription': null, 'duration': 2959, 'views': 202, 'uploaded': 1537966800000, 'uploaderVerified': false }, { 'url': '/watch?v=AByfaYcOm4A', 'title': 'Demi Lovato - Heart Attack (Official Video)', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/AByfaYcOm4A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9jJ_VP_BpD8GMSgNr9Y0VF577vw&host=i.ytimg.com', 'uploaderName': 'Demi Lovato', 'uploaderUrl': '/channel/UCZkURf9tDolFOeuw_4RD7XQ', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/CVFddHjn1sOjmD0-wvYCD2tQwGY9fEfQPkA35CyihdTcYkF0YpAPxTKty7jTIQTf8Qr5neH4=s88-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '9 years ago', 'shortDescription': null, 'duration': 216, 'views': 701268473, 'uploaded': 1380200400000, 'uploaderVerified': true }, { 'url': '/watch?v=gR73nLbbgqY', 'title': 'Writing Awesome Command-Line Programs in Python', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/gR73nLbbgqY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArdSBRLAe9o4gGSC6cvXg1eDi8qQ&host=i.ytimg.com', 'uploaderName': 'EuroPython 2014', 'uploaderUrl': '/channel/UCadZ6_NWdCN6YolgQdfV8Pg', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu94AiX-pEPwPqVRqrjaI-FtdWOoTUuiNs0ldA9j=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '8 years ago', 'shortDescription': null, 'duration': 2485, 'views': 125166, 'uploaded': 1411736400000, 'uploaderVerified': false }, { 'url': '/watch?v=r37ylwYIkRU', 'title': 'Learn Polish in 30 Minutes - ALL the Basics You Need', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/r37ylwYIkRU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMGrDxBmCELYfW-51lItJeAaeWlA&host=i.ytimg.com', 'uploaderName': 'Learn Polish with PolishPod101.com', 'uploaderUrl': '/channel/UC3b6n6hqQPXmSCin87BYxwg', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu-r_qW9hEijzn7ceaj_betvQCcEHGOcwqlw098z4P8=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 years ago', 'shortDescription': null, 'duration': 1706, 'views': 980204, 'uploaded': 1537966800000, 'uploaderVerified': true }, { 'url': '/watch?v=z-kRyGauLr8', 'title': 'Niesner-Camp Sommer 2016 - Full-Court Ballmaschine Philipp', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/z-kRyGauLr8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0hX3fYy0Hsi5EzcZkFfJ1ohQCVw&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '6 years ago', 'shortDescription': null, 'duration': 398, 'views': 329, 'uploaded': 1474894800000, 'uploaderVerified': false }, { 'url': '/watch?v=CRPDTGFATE4', 'title': 'SGU Düsseldorf 4 - ASC Ratingen-West 1 - HD1 (2)', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/CRPDTGFATE4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKGgn61DqkyogKzsZ-zqaQyJSAww&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '5 years ago', 'shortDescription': null, 'duration': 356, 'views': 74, 'uploaded': 1506430800000, 'uploaderVerified': false }, { 'url': '/watch?v=J0vBrRbXQrA', 'title': 'How to install any Software Package (RPM) in LINUX ?', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/J0vBrRbXQrA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBzpTw9UKhnTQk2k-grEfLwpp0drQ&host=i.ytimg.com', 'uploaderName': 'gv', 'uploaderUrl': '/channel/UCevElMO-YgpeBiUrrO04ctw', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu9NVgg5vy3ts8yVWLRf4C_AGRYu36ueL_DE-hmbOQ=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '8 years ago', 'shortDescription': null, 'duration': 1847, 'views': 95580, 'uploaded': 1411736400000, 'uploaderVerified': false }, { 'url': '/watch?v=uScoev7knKM', 'title': 'Refrath - Trittau DE Bundesliga 2018-02-27', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/uScoev7knKM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBkpNsnpkEAe0w8s_3B0yjTLbwf7g&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 years ago', 'shortDescription': null, 'duration': 2064, 'views': 90, 'uploaded': 1537966800000, 'uploaderVerified': false }, { 'url': '/watch?v=6X2iRov_xl8', 'title': 'Refrath - Trittau MX Bundesliga 2018-02-27', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/6X2iRov_xl8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA-GJhYgsB6bi-CZ1AISa-8haGrJQ&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 years ago', 'shortDescription': null, 'duration': 2304, 'views': 193, 'uploaded': 1537966800000, 'uploaderVerified': false }, { 'url': '/watch?v=0desitRumNU', 'title': 'How to Pronounce Portuguese Like a Native Speaker', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/0desitRumNU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDi33WJ-Gd9VKUF1j4EkXme3QZd_w&host=i.ytimg.com', 'uploaderName': 'Learn Portuguese with PortuguesePod101.com', 'uploaderUrl': '/channel/UCgF23VqDjioQVQqHUzzSe9g', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu-L23nONnZS2NvkyEWRaeBHg1CiqDtolkPjLgi67Q=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '3 years ago', 'shortDescription': null, 'duration': 1300, 'views': 609218, 'uploaded': 1569502800000, 'uploaderVerified': true }, { 'url': '/watch?v=Fqma2YPacbI', 'title': 'Niesner-Silvestercamp 2017: Ballmaschine Dameneinzel Philipp', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/Fqma2YPacbI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC4ElaLmeTfZhEDXRSNjG9w9gCong&host=i.ytimg.com', 'uploaderName': 'Philipp Hagemeister', 'uploaderUrl': '/channel/UCLqxVugv74EIW3VWh2NOa3Q', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_Dl8S89cO0PWnJv2MEM_O4z0VOqFH7eUdL_Vfn=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '4 years ago', 'shortDescription': null, 'duration': 213, 'views': 299, 'uploaded': 1537966800000, 'uploaderVerified': false }, { 'url': '/watch?v=evQsOFQju08', 'title': 'Is Your Red The Same as My Red?', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/evQsOFQju08/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfxnzzGvrdNT6M-UzrRZ3QpxJwvQ&host=i.ytimg.com', 'uploaderName': 'Vsauce', 'uploaderUrl': '/channel/UC6nSFpj9HTCZ5t-N3Rm3-HA', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu8QeR_gsP0RzdCIQyQlQTe58PlD4UKzOpIVd2QC6g=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '9 years ago', 'shortDescription': null, 'duration': 575, 'views': 27072945, 'uploaded': 1380200400000, 'uploaderVerified': true }, { 'url': '/watch?v=MHMV6tUuadA', 'title': 'How to install wordpress locally with wamp for beginners.', 'thumbnail': 'https://pipedproxy.kavin.rocks/vi/MHMV6tUuadA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrvRdyOFrM2eGkv_Q9oGJxCBktcQ&host=i.ytimg.com', 'uploaderName': 'Lee Furniture', 'uploaderUrl': '/channel/UC_UHjuC-ZNQyKweLSumE8gg', 'uploaderAvatar': 'https://pipedproxy.kavin.rocks/ytc/AMLnZu_IwZEkYEVeVy9X3mSayhFfDBJ5kOrzeXS7iV07UQ=s68-c-k-c0x00ffffff-no-rw?host=yt3.ggpht.com', 'uploadedDate': '9 years ago', 'shortDescription': null, 'duration': 1319, 'views': 431396, 'uploaded': 1380200400000, 'uploaderVerified': false } ], 'subtitles': [ { 'url': 'https://pipedproxy.kavin.rocks/api/timedtext?v=BaW_jenozKc&caps=asr&xoaf=5&hl=en-GB&ip=0.0.0.0&ipbits=0&expire=1664310068&sparams=ip,ipbits,expire,v,caps,xoaf&signature=B00A4C6C2EBA07D8276EC1A1631F21484571C04A.A5562F31A80387FC8888D2961B6D25E24173E4C7&key=yt8&lang=en&fmt=ttml&host=www.youtube.com', 'mimeType': 'application/ttml+xml', 'name': 'English', 'code': 'en', 'autoGenerated': false } ], 'livestream': false, 'proxyUrl': 'https://pipedproxy-cwl.kavin.rocks', 'chapters': [ ] }

Processing an actual Piped page would require

Unfortunately we can't just mung the formats returned by YT to bypass GV blockage because the proxy host names can vary (a) according to how the instance configuration (b) (I assume) as above the leading domain part can vary if the site is configured with a CDN. The proxied links have to be returned by the API.

The front-end is being replaced, so there's no point working further on this at the moment.

ghost commented 1 year ago

Piped instances utilize Newpipe Extractor to parse yt streams. But still, I don't think this'll be relevant since processing pipedproxy is the only way to achieve this.

dirkf commented 1 year ago

Agreed. And Newpipe Extractor is IIRC a Java program which imports a JavaScript interpreter module from the runtime library. Unfortunately this is one area where Java wins over Python.

apjyotirmay commented 1 year ago

Agreed. And Newpipe Extractor is IIRC a Java program which imports a JavaScript interpreter module from the runtime library. Unfortunately this is one area where Java wins over Python.

Won't it be possible to handover a request to the Java runtime from python using OS calls?

dirkf commented 1 year ago

At least if you invoked a node.js-alike you'd be passing it to the right language.

gamer191 commented 7 months ago

Processing an actual Piped page would require

What? The actual Piped page uses the documented api backend