2021-09-29 20:53:33 +00:00
|
|
|
|
# coding: utf-8
|
|
|
|
|
|
|
|
|
|
# ⚠ Don't use relative imports
|
|
|
|
|
from yt_dlp.postprocessor.common import PostProcessor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ℹ️ See the docstring of yt_dlp.postprocessor.common.PostProcessor
|
|
|
|
|
class SamplePluginPP(PostProcessor):
|
|
|
|
|
def __init__(self, downloader=None, **kwargs):
|
|
|
|
|
# ⚠ Only kwargs can be passed from the CLI, and all argument values will be string
|
|
|
|
|
# Also, "downloader", "when" and "key" are reserved names
|
|
|
|
|
super().__init__(downloader)
|
|
|
|
|
self._kwargs = kwargs
|
|
|
|
|
|
|
|
|
|
# ℹ️ See docstring of yt_dlp.postprocessor.common.PostProcessor.run
|
|
|
|
|
def run(self, info):
|
2022-01-02 10:53:20 +00:00
|
|
|
|
if info.get('_type', 'video') != 'video': # PP was called for playlist
|
|
|
|
|
self.to_screen(f'Post-processing playlist {info.get("id")!r} with {self._kwargs}')
|
|
|
|
|
elif info.get('filepath'): # PP was called after download (default)
|
|
|
|
|
filepath = info.get('filepath')
|
2021-09-29 20:53:33 +00:00
|
|
|
|
self.to_screen(f'Post-processed {filepath!r} with {self._kwargs}')
|
2022-01-03 13:36:26 +00:00
|
|
|
|
elif info.get('requested_downloads'): # PP was called after_video
|
|
|
|
|
filepaths = [f.get('filepath') for f in info.get('requested_downloads')]
|
|
|
|
|
self.to_screen(f'Post-processed {filepaths!r} with {self._kwargs}')
|
2021-09-29 20:53:33 +00:00
|
|
|
|
else: # PP was called before actual download
|
|
|
|
|
filepath = info.get('_filename')
|
|
|
|
|
self.to_screen(f'Pre-processed {filepath!r} with {self._kwargs}')
|
|
|
|
|
return [], info # return list_of_files_to_delete, info_dict
|