projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
69d3b2d
)
Always extract original URL from next_url (#318)
author
Filippo Valsorda
<filippo.valsorda@gmail.com>
Sat, 24 Mar 2012 00:17:36 +0000
(
01:17
+0100)
committer
Filippo Valsorda
<filippo.valsorda@gmail.com>
Sat, 24 Mar 2012 00:17:36 +0000
(
01:17
+0100)
youtube-dl
patch
|
blob
|
history
diff --git
a/youtube-dl
b/youtube-dl
index d8b33e52c8bdee221d5532684d352527edd6e2c9..c7a116d9df750bc83a6e4994d6ee3ef53c2d4e32 100755
(executable)
--- a/
youtube-dl
+++ b/
youtube-dl
@@
-1171,12
+1171,11
@@
class InfoExtractor(object):
class YoutubeIE(InfoExtractor):
"""Information extractor for youtube.com."""
class YoutubeIE(InfoExtractor):
"""Information extractor for youtube.com."""
- _PREFIX = r'(?:https?://)?(?:youtu\.be/|(?:\w+\.)?youtube(?:-nocookie)?\.com/)'
- _VALID_URL = r'^('+_PREFIX+r'(?!view_play_list|my_playlists|artist|playlist)(?:(?:(?:v|embed|e)/)|(?:(?:watch(?:_popup)?(?:\.php)?)?(?:\?|#!?)(?:.+&)?v=))?)?([0-9A-Za-z_-]+)(?(1).+)?$'
- _VALID_URL_WITH_AGE = r'^('+_PREFIX+')verify_age\?next_url=([^&]+)(?:.+)?$'
+ _VALID_URL = r'^((?:https?://)?(?:youtu\.be/|(?:\w+\.)?youtube(?:-nocookie)?\.com/)(?!view_play_list|my_playlists|artist|playlist)(?:(?:(?:v|embed|e)/)|(?:(?:watch(?:_popup)?(?:\.php)?)?(?:\?|#!?)(?:.+&)?v=))?)?([0-9A-Za-z_-]+)(?(1).+)?$'
_LANG_URL = r'http://www.youtube.com/?hl=en&persist_hl=1&gl=US&persist_gl=1&opt_out_ackd=1'
_LOGIN_URL = 'https://www.youtube.com/signup?next=/&gl=US&hl=en'
_AGE_URL = 'http://www.youtube.com/verify_age?next_url=/&gl=US&hl=en'
_LANG_URL = r'http://www.youtube.com/?hl=en&persist_hl=1&gl=US&persist_gl=1&opt_out_ackd=1'
_LOGIN_URL = 'https://www.youtube.com/signup?next=/&gl=US&hl=en'
_AGE_URL = 'http://www.youtube.com/verify_age?next_url=/&gl=US&hl=en'
+ _NEXT_URL_RE = r'[\?&]next_url=([^&]+)'
_NETRC_MACHINE = 'youtube'
# Listed in order of quality
_available_formats = ['38', '37', '22', '45', '35', '44', '34', '18', '43', '6', '5', '17', '13']
_NETRC_MACHINE = 'youtube'
# Listed in order of quality
_available_formats = ['38', '37', '22', '45', '35', '44', '34', '18', '43', '6', '5', '17', '13']
@@
-1337,13
+1336,10
@@
class YoutubeIE(InfoExtractor):
return
def _real_extract(self, url):
return
def _real_extract(self, url):
- # Extract original video URL from URL with age verification, using next_url parameter
- mobj = re.
match(self._VALID_URL_WITH_AG
E, url)
+ # Extract original video URL from URL with
redirection, like
age verification, using next_url parameter
+ mobj = re.
search(self._NEXT_URL_R
E, url)
if mobj:
if mobj:
- urldecode = lambda x: re.sub(r'%([0-9a-hA-H][0-9a-hA-H])', lambda m: chr(int(m.group(1), 16)), x)
- # Keep original domain. We can probably change to www.youtube.com, but it should not hurt so keep it.
- # We just make sure we do not have double //, in URL, so we strip starting slash in next_url.
- url = mobj.group(1) + re.sub(r'^/', '', urldecode(mobj.group(2)))
+ url = 'http://www.youtube.com/' + urllib.unquote(mobj.group(1)).lstrip('/')
# Extract video id from URL
mobj = re.match(self._VALID_URL, url)
# Extract video id from URL
mobj = re.match(self._VALID_URL, url)