From dbd292c6218d113a58dc08a3cd3660d3204242b9 Mon Sep 17 00:00:00 2001
From: Peter Uhrig <peter@uhrig.net>
Date: Fri, 26 Apr 2019 18:27:02 +0200
Subject: [PATCH] [dump-video-list-only] Add option to dump video list only

---
 youtube_dl/YoutubeDL.py | 5 +++++
 youtube_dl/__init__.py  | 1 +
 youtube_dl/options.py   | 4 ++++
 3 files changed, 10 insertions(+)

diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py
index 57f52f888..b4a1ea2a4 100755
--- a/youtube_dl/YoutubeDL.py
+++ b/youtube_dl/YoutubeDL.py
@@ -925,6 +925,11 @@ class YoutubeDL(object):
 
             ie_entries = ie_result['entries']
 
+            if self.params.get("dump_video_list_only", False):
+                # ie_entries is a generator, so it depletes when we iterate through it and no videos remain for download
+                for entry in ie_entries:
+                    print(entry)
+
             def make_playlistitems_entries(list_ie_entries):
                 num_entries = len(list_ie_entries)
                 return [
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index 9d4859bcf..90d71c923 100644
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -335,6 +335,7 @@ def _real_main(argv=None):
         'forceformat': opts.getformat,
         'forcejson': opts.dumpjson or opts.print_json,
         'dump_single_json': opts.dump_single_json,
+        'dump_video_list_only': opts.dump_video_list_only,
         'simulate': opts.simulate or any_getting,
         'skip_download': opts.skip_download,
         'format': opts.format,
diff --git a/youtube_dl/options.py b/youtube_dl/options.py
index 1ffabc62b..1ad1adb18 100644
--- a/youtube_dl/options.py
+++ b/youtube_dl/options.py
@@ -602,6 +602,10 @@ def parseOpts(overrideArguments=None):
         '--get-id',
         action='store_true', dest='getid', default=False,
         help='Simulate, quiet but print id')
+    verbosity.add_option(
+        '--dump-video-list-only',
+        action='store_true', dest='dump_video_list_only', default=False,
+        help='Just dump the list of videos in a channel/playlist and do not perform other requests. Use together with -i and -q to obtain parseable JSON Lines format.')
     verbosity.add_option(
         '--get-thumbnail',
         action='store_true', dest='getthumbnail', default=False,