From 3273672854919bea33829ac7e33a60286f2dcc7b Mon Sep 17 00:00:00 2001 From: Steven Wallace Date: Wed, 22 Jul 2015 20:55:43 -0500 Subject: [PATCH] Basic playlist generation logic. --- README.md | 1 + youtube_dl/YoutubeDL.py | 9 +++++++++ youtube_dl/__init__.py | 1 + youtube_dl/options.py | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/README.md b/README.md index df419abe8..5625b88ba 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,7 @@ which means you can modify it, redistribute it or use it however you like. --write-info-json Write video metadata to a .info.json file --write-annotations Write video annotations to a .annotations.xml file + --write-playlists Write playlists to .m3u files --load-info FILE JSON file containing the video information (created with the "--write-info-json" option) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 9a8c7da05..8566ac652 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -835,6 +835,15 @@ class YoutubeDL(object): extra_info=extra) playlist_results.append(entry_result) ie_result['entries'] = playlist_results + + if download and self.params.get('writeplaylists'): + ie_result['ext'] = 'm3u' + playlist_filename = self.prepare_filename(ie_result) + playlist_file = open(playlist_filename, 'w') + for entry in ie_result['entries']: + filename = self.prepare_filename(entry) + playlist_file.write(filename + '\n') + self.to_screen('[download] Finished downloading playlist: %s' % playlist) return ie_result elif result_type == 'compat_list': diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9f131f5db..29d234f86 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -320,6 +320,7 @@ def _real_main(argv=None): 'write_all_thumbnails': opts.write_all_thumbnails, 'writesubtitles': opts.writesubtitles, 'writeautomaticsub': opts.writeautomaticsub, + 'writeplaylists': opts.writeplaylists, 'allsubtitles': opts.allsubtitles, 'listsubtitles': opts.listsubtitles, 'subtitlesformat': opts.subtitlesformat, diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 359e8d300..bdb6dda39 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -643,6 +643,10 @@ def parseOpts(overrideArguments=None): '--write-annotations', action='store_true', dest='writeannotations', default=False, help='Write video annotations to a .annotations.xml file') + filesystem.add_option( + '--write-playlists', + action='store_true', dest='writeplaylists', default=False, + help='Write playlists to .m3u files') filesystem.add_option( '--load-info', dest='load_info_filename', metavar='FILE',