Merge pull request #211 from techtonik/patch-1
authorPhilipp Hagemeister <phihag@phihag.de>
Tue, 15 Nov 2011 09:39:17 +0000 (01:39 -0800)
committerPhilipp Hagemeister <phihag@phihag.de>
Tue, 15 Nov 2011 09:39:17 +0000 (01:39 -0800)
Fix duplicated downloads from YouTube user page where watch URLs are not. Thanks to anatoly techtonik.

1  2 
youtube-dl

diff --combined youtube-dl
index fb66d64af061b11dd84dee9ba4042b008499f0a5,5e98b9dbdbda0a06c7ee85960d0c6eed607dad59..1475a203f6958b8770983461c0656836a94f816f
@@@ -2470,7 -2470,7 +2470,7 @@@ class YahooSearchIE(InfoExtractor)
  class YoutubePlaylistIE(InfoExtractor):
        """Information Extractor for YouTube playlists."""
  
 -      _VALID_URL = r'(?:https?://)?(?:\w+\.)?youtube\.com/(?:(?:course|view_play_list|my_playlists|artist|playlist)\?.*?(p|a|list)=|user/.*?/user/|p/|user/.*?#[pg]/c/)(?:PL)?([0-9A-Za-z]+)(?:/.*?/([0-9A-Za-z_-]+))?.*'
 +      _VALID_URL = r'(?:https?://)?(?:\w+\.)?youtube\.com/(?:(?:course|view_play_list|my_playlists|artist|playlist)\?.*?(p|a|list)=|user/.*?/user/|p/|user/.*?#[pg]/c/)(?:PL)?([0-9A-Za-z-_]+)(?:/.*?/([0-9A-Za-z_-]+))?.*'
        _TEMPLATE_URL = 'http://www.youtube.com/%s?%s=%s&page=%s&gl=US&hl=en'
        _VIDEO_INDICATOR = r'/watch\?v=(.+?)&'
        _MORE_PAGES_INDICATOR = r'(?m)>\s*Next\s*</a>'
  
                while True:
                        self.report_download_page(playlist_id, pagenum)
 -                      request = urllib2.Request(self._TEMPLATE_URL % (playlist_access, playlist_prefix, playlist_id, pagenum))
 +                      url = self._TEMPLATE_URL % (playlist_access, playlist_prefix, playlist_id, pagenum)
 +                      request = urllib2.Request(url)
                        try:
                                page = urllib2.urlopen(request).read()
                        except (urllib2.URLError, httplib.HTTPException, socket.error), err:
@@@ -2549,7 -2548,7 +2549,7 @@@ class YoutubeUserIE(InfoExtractor)
        _TEMPLATE_URL = 'http://gdata.youtube.com/feeds/api/users/%s'
        _GDATA_PAGE_SIZE = 50
        _GDATA_URL = 'http://gdata.youtube.com/feeds/api/users/%s/uploads?max-results=%d&start-index=%d'
-       _VIDEO_INDICATOR = r'/watch\?v=(.+?)&'
+       _VIDEO_INDICATOR = r'/watch\?v=(.+?)[\<&]'
        _youtube_ie = None
        IE_NAME = u'youtube:user'