| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
YouTube reverted the changes they made that prompted f9f5d5ba.
In case they change their minds again, this adds support for both
formats.
The liberal_update and conservative_update functions needed to be
modified to handle the cases of empty lists, so that
a successfully extracted 'music_list': [{'Author':...},...] will
not be overwritten by 'music_list': [] in the calls to
liberal_dict_update.
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
|
|
|
|
|
|
| |
From
https://github.com/yt-dlp/yt-dlp/issues/574#issuecomment-887171136
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
|
|
|
|
|
|
|
|
| |
Also moves some microformat extraction from
_extract_watch_info_mobile to extract_watch_info where it belongs.
_extract_watch_info_mobile is really only for stuff visible on the
page, and thus specialized for either mobile or desktop.
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
YouTube now includes e.g. {"fe": ...} instead of just {fe: ...}
in the javascript object entries in the object holding the
operation definitions.
Fixes #2
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
|
|
|
|
|
|
| |
Makes it work if there are additional javascripts statements
after the playerResponse variable
Signed-off-by: Jesús <heckyel@hyperbola.info>
|
|
|
|
|
|
| |
Youtube removed the url from the pbj responses. They are now
only in the html page. Replaces previous fix for the missing
base.js issue.
|
|
|
|
| |
Fixes failure mode 3 in #22
|
|
|
|
|
|
|
| |
Embedded playlist info was missing author_url key if author_id was
None. This caused KeyError in watch.py when it expected that key
Closes #37
|
|
|
|
|
| |
Previous fix didn't work. Should work now. The non-embedded player
response can still be present but the urls will be missing.
|
| |
|
|
|
|
| |
Fixes failure mode 1 in #22
|
|
|
|
|
| |
Use true video height extracted from youtube to handle videos
shorter than their quality size. (e.g. widescreen videos)
|
|
|
|
|
|
|
| |
Since there are no formats, it was retrying with the
non-embedded playerResponse, which resulted in the
hls_manifest_urls from the embedded player_response being
overwritten with None. So use conservative_update instead
|
|
|
|
|
| |
Also for livestreams which are over whose other sources
aren't present or aren't ready yet.
|
|
|
|
|
|
|
|
| |
Change so it extracts other stuff from regular playerResponse
Extract formats from embedded player response, but fallback to
regular one if that doesn't work.
Sometimes there is no 'player' at top_level and the urls are in
the regular playerResponse
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
The base.js url format changed, so the identifier at the end
was no longer unique. So it was using the wrong cached decryption
function
Changes the identifier to just be the whole url so
this won't happen again.
|
|
|
|
|
| |
The 'cipher' parameter which contains the url is sometimes called
'signatureCipher' instead now.
|
| |
|
|
|
|
| |
because of A/B test.
|
|
|
|
|
|
| |
Happens when there's an error on the page and there was no
visible stuff on the page. 'playlist' wasn't set to None in that
case.
|
| |
|
| |
|
|
|
|
|
| |
'ip_address' was not set when no formats are available
'allowed_countries' was set to None rather than [] in extract_desktop_info which it turns out is the function that gets used in these cases
|
|
|
|
| |
Should help with debugging various content blocks
|
|
|
|
| |
the youtube-dl formats table doesn't have all the necessary information
|
|
|
|
|
|
|
|
| |
The function body regex was capturing some unrelated new code before the actual function body. Example:
`function(a){a=a.split("");var b=[function(c,d){d=(d%c.length+c.length)%c.length;c.splice(-d).reverse().forEach(function(e){return c.unshift(e)}`
If you look closely, the closing bracket doesn't match the opening one. I have added `{` to the `[^\}]+` part to make sure it only captures matching brackets. Additionally, I've added `return a\.join\(""\)` to the end for good measure.
|
|
|
|
| |
yt_data_extract
|
|
|
|
| |
yt_data_extract
|
|
|
|
|
|
| |
internal helper function names
Move get_captions_url in watch_extraction to bottom next to other exported, public functions
|
|
|