Fix TypeError in decode() method and unordered playlist URLs
authorRicardo Garcia <sarbalap+freshmeat@gmail.com>
Sat, 1 Nov 2008 14:52:51 +0000 (15:52 +0100)
committerRicardo Garcia <sarbalap+freshmeat@gmail.com>
Sun, 31 Oct 2010 10:23:41 +0000 (11:23 +0100)
youtube-dl

index d8e14f3eebab6f30e919300148b8f80bb0ed963f..e5cf43411b7932d7c6db43e3fd90b8797ccc4ef1 100755 (executable)
@@ -753,10 +753,11 @@ class YoutubePlaylistIE(InfoExtractor):
                                return [None]
 
                        # Extract video identifiers
-                       ids_in_page = set()
+                       ids_in_page = []
                        for mobj in re.finditer(self._VIDEO_INDICATOR, page):
-                               ids_in_page.add(mobj.group(1))
-                       video_ids.extend(list(ids_in_page))
+                               if mobj.group(1) not in ids_in_page:
+                                       ids_in_page.append(mobj.group(1))
+                       video_ids.extend(ids_in_page)
 
                        if (self._MORE_PAGES_INDICATOR % (playlist_id, pagenum + 1)) not in page:
                                break
@@ -901,6 +902,9 @@ if __name__ == '__main__':
                youtube_pl_ie = YoutubePlaylistIE(youtube_ie)
 
                # File downloader
+               charset = locale.getdefaultlocale()[1]
+               if charset is None:
+                       charset = 'ascii'
                fd = FileDownloader({
                        'usenetrc': opts.usenetrc,
                        'username': opts.username,
@@ -910,7 +914,7 @@ if __name__ == '__main__':
                        'forcetitle': opts.gettitle,
                        'simulate': (opts.simulate or opts.geturl or opts.gettitle),
                        'format': opts.format,
-                       'outtmpl': ((opts.outtmpl is not None and opts.outtmpl.decode(locale.getdefaultlocale()[1]))
+                       'outtmpl': ((opts.outtmpl is not None and opts.outtmpl.decode(charset))
                                or (opts.usetitle and u'%(stitle)s-%(id)s.%(ext)s')
                                or (opts.useliteral and u'%(title)s-%(id)s.%(ext)s')
                                or u'%(id)s.%(ext)s'),