浏览代码

Fix TypeError in decode() method and unordered playlist URLs

Ricardo Garcia 17 年之前
父节点
当前提交
27d98b6e25
共有 1 个文件被更改,包括 8 次插入4 次删除
  1. 8 4
      youtube-dl

+ 8 - 4
youtube-dl

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