aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rw-r--r--yt_dlp/YoutubeDL.py13
-rw-r--r--yt_dlp/__init__.py1
-rw-r--r--yt_dlp/options.py10
-rw-r--r--yt_dlp/utils.py2
5 files changed, 25 insertions, 6 deletions
diff --git a/README.md b/README.md
index a38d42048..257d88b97 100644
--- a/README.md
+++ b/README.md
@@ -423,6 +423,11 @@ Then simply run `make`. You can also run `make yt-dlp` instead to compile only t
--write-description etc. (default)
--no-write-playlist-metafiles Do not write playlist metadata when using
--write-info-json, --write-description etc.
+ --clean-infojson Remove some private fields such as
+ filenames from the infojson. Note that it
+ could still contain some personal
+ information (default)
+ --no-clean-infojson Write all fields to the infojson
--get-comments Retrieve video comments to be placed in the
.info.json file. The comments are fetched
even without this option if the extraction
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py
index 7a5ad6d0e..e79039b5c 100644
--- a/yt_dlp/YoutubeDL.py
+++ b/yt_dlp/YoutubeDL.py
@@ -216,6 +216,7 @@ class YoutubeDL(object):
logtostderr: Log messages to stderr instead of stdout.
writedescription: Write the video description to a .description file
writeinfojson: Write the video description to a .info.json file
+ clean_infojson: Remove private fields from the infojson
writecomments: Extract video comments. This will not be written to disk
unless writeinfojson is also given
writeannotations: Write the video annotations to a .annotations.xml file
@@ -1201,7 +1202,7 @@ class YoutubeDL(object):
# playlist_info['entries'] = list(playlist_info['entries']) # Entries is a generator which shouldnot be resolved here
self.to_screen('[info] Writing playlist metadata as JSON to: ' + infofn)
try:
- write_json_file(self.filter_requested_info(playlist_info), infofn)
+ write_json_file(self.filter_requested_info(playlist_info, self.params.get('clean_infojson', True)), infofn)
except (OSError, IOError):
self.report_error('Cannot write playlist metadata to JSON file ' + infofn)
@@ -2046,7 +2047,7 @@ class YoutubeDL(object):
print_mandatory('format')
if self.params.get('forcejson', False):
self.post_extract(info_dict)
- self.to_stdout(json.dumps(info_dict))
+ self.to_stdout(json.dumps(info_dict, default=repr))
def process_info(self, info_dict):
"""Process a single resolved IE result."""
@@ -2215,7 +2216,7 @@ class YoutubeDL(object):
else:
self.to_screen('[info] Writing video metadata as JSON to: ' + infofn)
try:
- write_json_file(self.filter_requested_info(info_dict), infofn)
+ write_json_file(self.filter_requested_info(info_dict, self.params.get('clean_infojson', True)), infofn)
except (OSError, IOError):
self.report_error('Cannot write video metadata to JSON file ' + infofn)
return
@@ -2504,7 +2505,7 @@ class YoutubeDL(object):
else:
if self.params.get('dump_single_json', False):
self.post_extract(res)
- self.to_stdout(json.dumps(res))
+ self.to_stdout(json.dumps(res, default=repr))
return self._download_retcode
@@ -2526,7 +2527,9 @@ class YoutubeDL(object):
return self._download_retcode
@staticmethod
- def filter_requested_info(info_dict):
+ def filter_requested_info(info_dict, actually_filter=True):
+ if not actually_filter:
+ return info_dict
exceptions = {
'remove': ['requested_formats', 'requested_subtitles', 'filepath', 'entries'],
'keep': ['_type'],
diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py
index 15a006d50..c58362698 100644
--- a/yt_dlp/__init__.py
+++ b/yt_dlp/__init__.py
@@ -491,6 +491,7 @@ def _real_main(argv=None):
'writeannotations': opts.writeannotations,
'writeinfojson': opts.writeinfojson,
'allow_playlist_files': opts.allow_playlist_files,
+ 'clean_infojson': opts.clean_infojson,
'getcomments': opts.getcomments,
'writethumbnail': opts.writethumbnail,
'write_all_thumbnails': opts.write_all_thumbnails,
diff --git a/yt_dlp/options.py b/yt_dlp/options.py
index e7bf9d564..5c1908bfe 100644
--- a/yt_dlp/options.py
+++ b/yt_dlp/options.py
@@ -986,6 +986,16 @@ def parseOpts(overrideArguments=None):
'Do not write playlist metadata when using '
'--write-info-json, --write-description etc.'))
filesystem.add_option(
+ '--clean-infojson',
+ action='store_true', dest='clean_infojson', default=True,
+ help=(
+ 'Remove some private fields such as filenames from the infojson. '
+ 'Note that it could still contain some personal information (default)'))
+ filesystem.add_option(
+ '--no-clean-infojson',
+ action='store_false', dest='clean_infojson',
+ help='Write all fields to the infojson')
+ filesystem.add_option(
'--get-comments',
action='store_true', dest='getcomments', default=False,
help=(
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index a913b9814..27d649565 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -1836,7 +1836,7 @@ def write_json_file(obj, fn):
try:
with tf:
- json.dump(obj, tf)
+ json.dump(obj, tf, default=repr)
if sys.platform == 'win32':
# Need to remove existing file on Windows, else os.rename raises
# WindowsError or FileExistsError.