From 486dd09e0bd8032a3234363231c2b592f725cad6 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Fri, 13 Mar 2015 08:40:20 +0100 Subject: [PATCH] [YoutubeDL] Check for bytes instead of unicode output templates (#5192) Also adapt the embedding examples for those poor souls still using 2.x. --- README.md | 2 ++ youtube_dl/YoutubeDL.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index f41e7ecee..f4fbf0034 100644 --- a/README.md +++ b/README.md @@ -515,6 +515,7 @@ # EMBEDDING YOUTUBE-DL From a Python program, you can embed youtube-dl in a more powerful fashion, like this: ```python +from __future__ import unicode_literals import youtube_dl ydl_opts = {} @@ -527,6 +528,7 @@ # EMBEDDING YOUTUBE-DL Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file: ```python +from __future__ import unicode_literals import youtube_dl diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index be5b3c1ab..e779fc9a8 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -323,6 +323,11 @@ def __init__(self, params=None, auto_init=True): 'Set the LC_ALL environment variable to fix this.') self.params['restrictfilenames'] = True + if isinstance(params.get('outtmpl'), bytes): + self.report_warning( + 'Parameter outtmpl is bytes, but should be a unicode string. ' + 'Put from __future__ import unicode_literals at the top of your code file or consider switching to Python 3.x.') + if '%(stitle)s' in self.params.get('outtmpl', ''): self.report_warning('%(stitle)s is deprecated. Use the %(title)s and the --restrict-filenames flag(which also secures %(uploader)s et al) instead.')