-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #120 from JVT038/threading-attempt-two
Add some threading to the download process
- Loading branch information
Showing
12 changed files
with
432 additions
and
250 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
''' | ||
Source: https://github.com/yt-dlp/yt-dlp/blob/master/devscripts/cli_to_api.py | ||
Allow direct execution | ||
''' | ||
import os | ||
import sys | ||
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||
|
||
import yt_dlp | ||
import yt_dlp.options | ||
|
||
create_parser = yt_dlp.options.create_parser | ||
|
||
|
||
def parse_patched_options(opts): | ||
patched_parser = create_parser() | ||
patched_parser.defaults.update({ | ||
'ignoreerrors': False, | ||
'retries': 0, | ||
'fragment_retries': 0, | ||
'extract_flat': False, | ||
'concat_playlist': 'never', | ||
}) | ||
yt_dlp.options.create_parser = lambda: patched_parser | ||
try: | ||
return yt_dlp.parse_options(opts) | ||
finally: | ||
yt_dlp.options.create_parser = create_parser | ||
|
||
|
||
default_opts = parse_patched_options([]).ydl_opts | ||
|
||
|
||
def cli_to_api(opts, cli_defaults=False): | ||
opts = (yt_dlp.parse_options if cli_defaults else parse_patched_options)(opts).ydl_opts | ||
|
||
diff = {k: v for k, v in opts.items() if default_opts[k] != v} | ||
if 'postprocessors' in diff: | ||
diff['postprocessors'] = [pp for pp in diff['postprocessors'] | ||
if pp not in default_opts['postprocessors']] | ||
return diff | ||
|
||
|
||
if __name__ == '__main__': | ||
from pprint import pprint | ||
|
||
print('\nThe arguments passed translate to:\n') | ||
pprint(cli_to_api(sys.argv[1:])) | ||
print('\nCombining these with the CLI defaults gives:\n') | ||
pprint(cli_to_api(sys.argv[1:], True)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.