diff options
author | Sergey M․ <dstftw@gmail.com> | 2017-01-31 22:19:29 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2017-01-31 22:22:37 +0700 |
commit | 3c90cc8b6fc069930264b41f5505dc34c1077442 (patch) | |
tree | e06a981b0087e9ce10737d82d8043755f8e2031e | |
parent | ae9a173b6421a3fdf70dd50d2dc0386f8861fe71 (diff) | |
download | youtube-dl-3c90cc8b6fc069930264b41f5505dc34c1077442.tar.gz youtube-dl-3c90cc8b6fc069930264b41f5505dc34c1077442.tar.xz youtube-dl-3c90cc8b6fc069930264b41f5505dc34c1077442.zip |
[youtube] Fix extraction for domainless player URLs
Closes #11890 Closes #11891 Closes #11892 Closes #11894 Closes #11895 Closes #11897 Closes #11900 Closes #11903 Closes #11904 Closes #11906 Closes #11907 Closes #11909 Closes #11913 Closes #11914 Closes #11915 Closes #11916 Closes #11917 Closes #11918 Closes #11919
-rw-r--r-- | youtube_dl/extractor/youtube.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 630586796..ea398bcc8 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1028,8 +1028,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor): def _parse_sig_js(self, jscode): funcname = self._search_regex( - r'\.sig\|\|([a-zA-Z0-9$]+)\(', jscode, - 'Initial JS player signature function name') + (r'(["\'])signature\1\s*,\s*(?P<sig>[a-zA-Z0-9$]+)\(', + r'\.sig\|\|(?P<sig>[a-zA-Z0-9$]+)\('), + jscode, 'Initial JS player signature function name', group='sig') jsi = JSInterpreter(jscode) initial_function = jsi.extract_function(funcname) @@ -1050,6 +1051,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor): if player_url.startswith('//'): player_url = 'https:' + player_url + elif not re.match(r'https?://', player_url): + player_url = compat_urlparse.urljoin( + 'https://www.youtube.com', player_url) try: player_id = (player_url, self._signature_cache_id(s)) if player_id not in self._player_cache: |