ytdl-sub 2025.10.15__tar.gz → 2025.11.7.post1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/PKG-INFO +4 -4
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/pyproject.toml +3 -3
- ytdl_sub-2025.11.7.post1/src/ytdl_sub/__init__.py +1 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/entrypoint.py +6 -1
- ytdl_sub-2025.11.7.post1/src/ytdl_sub/cli/parsers/cli_to_sub.py +64 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/parsers/main.py +4 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/defaults.py +2 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/type_checking.py +2 -1
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/ffmpeg.py +5 -1
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/PKG-INFO +4 -4
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/SOURCES.txt +1 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/requires.txt +3 -3
- ytdl_sub-2025.10.15/src/ytdl_sub/__init__.py +0 -1
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/LICENSE +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/README.md +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/setup.cfg +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/output_summary.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/cli/parsers/dl.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/config_file.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/config_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/overrides.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/plugin.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/preset.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/preset_options.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/validators/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/validators/options.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/url/validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/base_entry.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/entry.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/entry_parent.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/variable_types.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/variables/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/variables/override_variables.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/main.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/audio_extract.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/chapters.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/date_range.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/file_convert.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/filter_include.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/format.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/internal/view.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/match_filters.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/music_tags.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/subtitles.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/video_tags.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/array_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/date_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/error_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/json_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/map_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/print_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/string_functions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/parser.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/script.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/script_output.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/array.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/function.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/map.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/resolvable.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/variable.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/variable_dependency.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/exceptions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/name_validation.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/subscription.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/thread/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/chapters.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/datetime.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/exceptions.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/file_handler.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/file_lock.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/file_path.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/logger.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/retry.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/script.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/scriptable.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/subtitles.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/system.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/thumbnail.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/xml.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/utils/yaml.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/file_path_validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/nfo_validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/regex_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/string_datetime.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/string_formatter_validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/string_select_validator.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/validators.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
- {ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ytdl-sub
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.11.7.post1
|
|
4
4
|
Summary: Automate downloading metadata generation with YoutubeDL
|
|
5
5
|
Author: Jesse Bannon
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -689,7 +689,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
689
689
|
Requires-Python: >=3.10
|
|
690
690
|
Description-Content-Type: text/markdown
|
|
691
691
|
License-File: LICENSE
|
|
692
|
-
Requires-Dist: yt-dlp[default]==2025.10.
|
|
692
|
+
Requires-Dist: yt-dlp[default]==2025.10.22
|
|
693
693
|
Requires-Dist: colorama~=0.4
|
|
694
694
|
Requires-Dist: mergedeep~=1.3
|
|
695
695
|
Requires-Dist: mediafile~=0.12
|
|
@@ -700,8 +700,8 @@ Requires-Dist: pytest<9.0,>=7.2; extra == "test"
|
|
|
700
700
|
Requires-Dist: pytest-rerunfailures<17,>=14; extra == "test"
|
|
701
701
|
Provides-Extra: lint
|
|
702
702
|
Requires-Dist: black==24.10.0; extra == "lint"
|
|
703
|
-
Requires-Dist: isort==
|
|
704
|
-
Requires-Dist: pylint==
|
|
703
|
+
Requires-Dist: isort==7.0.0; extra == "lint"
|
|
704
|
+
Requires-Dist: pylint==4.0.1; extra == "lint"
|
|
705
705
|
Provides-Extra: docs
|
|
706
706
|
Requires-Dist: sphinx<9,>=7; extra == "docs"
|
|
707
707
|
Requires-Dist: sphinx-rtd-theme<4,>=2; extra == "docs"
|
|
@@ -15,7 +15,7 @@ classifiers = [
|
|
|
15
15
|
"Programming Language :: Python :: 3.11",
|
|
16
16
|
]
|
|
17
17
|
dependencies = [
|
|
18
|
-
"yt-dlp[default]==2025.10.
|
|
18
|
+
"yt-dlp[default]==2025.10.22",
|
|
19
19
|
"colorama~=0.4",
|
|
20
20
|
"mergedeep~=1.3",
|
|
21
21
|
"mediafile~=0.12",
|
|
@@ -48,8 +48,8 @@ test = [
|
|
|
48
48
|
]
|
|
49
49
|
lint = [
|
|
50
50
|
"black==24.10.0",
|
|
51
|
-
"isort==
|
|
52
|
-
"pylint==
|
|
51
|
+
"isort==7.0.0",
|
|
52
|
+
"pylint==4.0.1",
|
|
53
53
|
]
|
|
54
54
|
docs = [
|
|
55
55
|
"sphinx>=7,<9",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__pypi_version__ = "2025.11.07.post1";__local_version__ = "2025.11.07+e507e6e"
|
|
@@ -12,6 +12,7 @@ from yt_dlp.utils import sanitize_filename
|
|
|
12
12
|
from ytdl_sub.cli.output_summary import output_summary
|
|
13
13
|
from ytdl_sub.cli.output_transaction_log import _maybe_validate_transaction_log_file
|
|
14
14
|
from ytdl_sub.cli.output_transaction_log import output_transaction_log
|
|
15
|
+
from ytdl_sub.cli.parsers.cli_to_sub import print_cli_to_sub
|
|
15
16
|
from ytdl_sub.cli.parsers.dl import DownloadArgsParser
|
|
16
17
|
from ytdl_sub.cli.parsers.main import DEFAULT_CONFIG_FILE_NAME
|
|
17
18
|
from ytdl_sub.cli.parsers.main import parser
|
|
@@ -206,6 +207,10 @@ def main() -> List[Subscription]:
|
|
|
206
207
|
|
|
207
208
|
args, extra_args = parser.parse_known_args()
|
|
208
209
|
|
|
210
|
+
if args.subparser == "cli-to-sub":
|
|
211
|
+
print_cli_to_sub(args=extra_args)
|
|
212
|
+
return []
|
|
213
|
+
|
|
209
214
|
# Load the config
|
|
210
215
|
if args.config:
|
|
211
216
|
config = ConfigFile.from_file_path(args.config)
|
|
@@ -263,7 +268,7 @@ def main() -> List[Subscription]:
|
|
|
263
268
|
_view_url_from_cli(config=config, url=args.url, split_chapters=args.split_chapters)
|
|
264
269
|
)
|
|
265
270
|
else:
|
|
266
|
-
raise ValidationException("Must provide one of the commands: sub, dl, view")
|
|
271
|
+
raise ValidationException("Must provide one of the commands: sub, dl, view, cli-to-sub")
|
|
267
272
|
|
|
268
273
|
if not args.suppress_transaction_log:
|
|
269
274
|
output_transaction_log(
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
import yt_dlp
|
|
4
|
+
import yt_dlp.options
|
|
5
|
+
|
|
6
|
+
from ytdl_sub.utils.logger import Logger
|
|
7
|
+
from ytdl_sub.utils.yaml import dump_yaml
|
|
8
|
+
|
|
9
|
+
logger = Logger.get()
|
|
10
|
+
|
|
11
|
+
# pylint: disable=missing-function-docstring
|
|
12
|
+
|
|
13
|
+
##############################################################
|
|
14
|
+
# --- BEGIN ----
|
|
15
|
+
# Copy of https://github.com/yt-dlp/yt-dlp/blob/master/devscripts/cli_to_api.py
|
|
16
|
+
|
|
17
|
+
create_parser = yt_dlp.options.create_parser
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def parse_patched_options(opts):
|
|
21
|
+
|
|
22
|
+
patched_parser = create_parser()
|
|
23
|
+
patched_parser.defaults.update(
|
|
24
|
+
{
|
|
25
|
+
"ignoreerrors": False,
|
|
26
|
+
"retries": 0,
|
|
27
|
+
"fragment_retries": 0,
|
|
28
|
+
"extract_flat": False,
|
|
29
|
+
"concat_playlist": "never",
|
|
30
|
+
"update_self": False,
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
yt_dlp.options.create_parser = lambda: patched_parser
|
|
34
|
+
try:
|
|
35
|
+
return yt_dlp.parse_options(opts)
|
|
36
|
+
finally:
|
|
37
|
+
yt_dlp.options.create_parser = create_parser
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
default_opts = parse_patched_options([]).ydl_opts
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def cli_to_api(opts, cli_defaults=False):
|
|
44
|
+
opts = (yt_dlp.parse_options if cli_defaults else parse_patched_options)(opts).ydl_opts
|
|
45
|
+
|
|
46
|
+
diff = {k: v for k, v in opts.items() if default_opts[k] != v}
|
|
47
|
+
if "postprocessors" in diff:
|
|
48
|
+
diff["postprocessors"] = [
|
|
49
|
+
pp for pp in diff["postprocessors"] if pp not in default_opts["postprocessors"]
|
|
50
|
+
]
|
|
51
|
+
return diff
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# --- END ----
|
|
55
|
+
##############################################################
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def print_cli_to_sub(args: List[str]) -> None:
|
|
59
|
+
api_args = cli_to_api(args)
|
|
60
|
+
if not api_args:
|
|
61
|
+
logger.info("Does not resolve to any yt-dlp args")
|
|
62
|
+
return
|
|
63
|
+
|
|
64
|
+
print(dump_yaml({"ytdl_options": api_args}))
|
|
@@ -221,3 +221,7 @@ view_parser.add_argument(
|
|
|
221
221
|
help="View source variables after splitting by chapters",
|
|
222
222
|
)
|
|
223
223
|
view_parser.add_argument("url", help="URL to view source variables for")
|
|
224
|
+
|
|
225
|
+
###################################################################################################
|
|
226
|
+
# CLI-TO-SUB PARSER
|
|
227
|
+
cli_to_sub_parser = subparsers.add_parser("cli-to-sub")
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import inspect
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from inspect import FullArgSpec
|
|
5
|
+
from types import NoneType
|
|
5
6
|
from typing import Callable
|
|
6
7
|
from typing import List
|
|
7
8
|
from typing import Optional
|
|
@@ -50,7 +51,7 @@ def get_optional_type(optional_type: Type) -> Type[NamedType]:
|
|
|
50
51
|
-------
|
|
51
52
|
Type within the Optional[Type]
|
|
52
53
|
"""
|
|
53
|
-
return [arg for arg in optional_type.__args__ if arg
|
|
54
|
+
return [arg for arg in optional_type.__args__ if not isinstance(arg, NoneType)][0]
|
|
54
55
|
|
|
55
56
|
|
|
56
57
|
def _is_union_compatible(
|
|
@@ -201,7 +201,11 @@ def add_ffmpeg_metadata_key_values(file_path: str, key_values: Dict[str, str]) -
|
|
|
201
201
|
"-dn", # ignore data streams
|
|
202
202
|
]
|
|
203
203
|
for key, value in key_values.items():
|
|
204
|
-
|
|
204
|
+
# Some special characters (utf-16 maybe?) have null-byte
|
|
205
|
+
# which results in ffmpeg error, remove them outright
|
|
206
|
+
value_null_byte_removed = value.replace("\0", "")
|
|
207
|
+
ffmpeg_args.extend(["-metadata", f"{key}={value_null_byte_removed}"])
|
|
208
|
+
|
|
205
209
|
ffmpeg_args.extend(["-codec", "copy", "-bitexact", tmp_file_path])
|
|
206
210
|
|
|
207
211
|
FFMPEG.run(ffmpeg_args)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ytdl-sub
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.11.7.post1
|
|
4
4
|
Summary: Automate downloading metadata generation with YoutubeDL
|
|
5
5
|
Author: Jesse Bannon
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -689,7 +689,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
689
689
|
Requires-Python: >=3.10
|
|
690
690
|
Description-Content-Type: text/markdown
|
|
691
691
|
License-File: LICENSE
|
|
692
|
-
Requires-Dist: yt-dlp[default]==2025.10.
|
|
692
|
+
Requires-Dist: yt-dlp[default]==2025.10.22
|
|
693
693
|
Requires-Dist: colorama~=0.4
|
|
694
694
|
Requires-Dist: mergedeep~=1.3
|
|
695
695
|
Requires-Dist: mediafile~=0.12
|
|
@@ -700,8 +700,8 @@ Requires-Dist: pytest<9.0,>=7.2; extra == "test"
|
|
|
700
700
|
Requires-Dist: pytest-rerunfailures<17,>=14; extra == "test"
|
|
701
701
|
Provides-Extra: lint
|
|
702
702
|
Requires-Dist: black==24.10.0; extra == "lint"
|
|
703
|
-
Requires-Dist: isort==
|
|
704
|
-
Requires-Dist: pylint==
|
|
703
|
+
Requires-Dist: isort==7.0.0; extra == "lint"
|
|
704
|
+
Requires-Dist: pylint==4.0.1; extra == "lint"
|
|
705
705
|
Provides-Extra: docs
|
|
706
706
|
Requires-Dist: sphinx<9,>=7; extra == "docs"
|
|
707
707
|
Requires-Dist: sphinx-rtd-theme<4,>=2; extra == "docs"
|
|
@@ -14,6 +14,7 @@ src/ytdl_sub/cli/entrypoint.py
|
|
|
14
14
|
src/ytdl_sub/cli/output_summary.py
|
|
15
15
|
src/ytdl_sub/cli/output_transaction_log.py
|
|
16
16
|
src/ytdl_sub/cli/parsers/__init__.py
|
|
17
|
+
src/ytdl_sub/cli/parsers/cli_to_sub.py
|
|
17
18
|
src/ytdl_sub/cli/parsers/dl.py
|
|
18
19
|
src/ytdl_sub/cli/parsers/main.py
|
|
19
20
|
src/ytdl_sub/config/__init__.py
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
yt-dlp[default]==2025.10.
|
|
1
|
+
yt-dlp[default]==2025.10.22
|
|
2
2
|
colorama~=0.4
|
|
3
3
|
mergedeep~=1.3
|
|
4
4
|
mediafile~=0.12
|
|
@@ -18,8 +18,8 @@ sphinx_design~=0.6
|
|
|
18
18
|
|
|
19
19
|
[lint]
|
|
20
20
|
black==24.10.0
|
|
21
|
-
isort==
|
|
22
|
-
pylint==
|
|
21
|
+
isort==7.0.0
|
|
22
|
+
pylint==4.0.1
|
|
23
23
|
|
|
24
24
|
[test]
|
|
25
25
|
coverage[toml]<8.0,>=6.3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__pypi_version__ = "2025.10.15";__local_version__ = "2025.10.15+1b2e34b"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/plugin_mapping.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/plugin_operation.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/config/plugin/preset_plugins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/info_json/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/downloaders/ytdl_options_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/custom_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/function_scripts.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/variable_definitions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/entries/script/variable_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/output_directory_nfo_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/plugins/throttle_protection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/internal/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/internal/view.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/singles.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/array_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/boolean_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/date_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/error_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/json_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/map_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/numeric_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/print_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/regex_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/functions/string_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/types/variable_dependency.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/exception_formatters.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/script/utils/name_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/base_subscription.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/subscriptions/subscription_download.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/audo_codec_validator.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/file_path_validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/strict_dict_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.10.15 → ytdl_sub-2025.11.7.post1}/src/ytdl_sub/validators/string_select_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|