← yt-playlist-export

support cookies argument (#8)

c7fb9d603773a2bd4bd0d8a2eb5fa84c717e44a8 · Aleksandr Tabakov · Mar 28, 2025 11:15

+6 −1 · 1 file changed

  • src/yt_playlist_export/yt_playlist_export.py +6 −1
diff --git a/src/yt_playlist_export/yt_playlist_export.py b/src/yt_playlist_export/yt_playlist_export.py
index 7064fd2..e0233b7 100755
--- a/src/yt_playlist_export/yt_playlist_export.py
+++ b/src/yt_playlist_export/yt_playlist_export.py
@@ -10,6 +10,7 @@ from yt_dlp.cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS
 
 parser = argparse.ArgumentParser(description='yt-playlist-export exports YouTube playlists to JSON or CSV')
 parser.add_argument('--browser', type=str, required=False, default='firefox', help='browser where you logged in to YouTube')
+parser.add_argument('--cookies', type=str, required=False, help='absolute path to a Netscape formatted cookie file')
 parser.add_argument('-f', '--format', type=str, choices=['csv', 'json'], required=False, default='csv', help='output\'s format')
 parser.add_argument('-o', '--output', type=str, required=False, help='filename to store output, by default it\'s printed to stdout')
 parser.add_argument('-v', '--verbose', action='store_true', help='verbose')
@@ -116,12 +117,16 @@ def parse_browser_arg(cookiesfrombrowser):
 
 # See help(yt_dlp.YoutubeDL) for a list of available options and public functions
 ydl_opts = {
-    'cookiesfrombrowser': parse_browser_arg(args.browser),
     'ignoreerrors': 'only_download',
     'extract_flat': True,
     'quiet': not verbose
 }
 
+if args.cookies:
+    ydl_opts['cookies'] = args.cookies
+else:
+    ydl_opts['cookiesfrombrowser'] = parse_browser_arg(args.browser)
+
 def main():
     with yt_dlp.YoutubeDL(ydl_opts) as ydl:
         info = ydl.extract_info(playlist, download=False)