[docs,cleanup] Fix linter and misc cleanup

Closes #2419
pull/2540/head
pukkandan 2 years ago
parent bb66c24797
commit 88f23a18e0
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

@ -3,3 +3,6 @@ contact_links:
- name: Get help from the community on Discord - name: Get help from the community on Discord
url: https://discord.gg/H5MNcFW63r url: https://discord.gg/H5MNcFW63r
about: Join the yt-dlp Discord for community-powered support! about: Join the yt-dlp Discord for community-powered support!
- name: Matrix Bridge to the Discord server
url: https://matrix.to/#/#yt-dlp:matrix.org
about: For those who do not want to use Discord

@ -379,8 +379,9 @@ You can also fork the project on github and run your fork's [build workflow](.gi
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. --proxy URL Use the specified HTTP/HTTPS/SOCKS proxy.
To enable SOCKS proxy, specify a proper To enable SOCKS proxy, specify a proper
scheme. For example scheme. For example
socks5://127.0.0.1:1080/. Pass in an empty socks5://user:pass@127.0.0.1:1080/. Pass in
string (--proxy "") for direct connection an empty string (--proxy "") for direct
connection
--socket-timeout SECONDS Time to wait before giving up, in seconds --socket-timeout SECONDS Time to wait before giving up, in seconds
--source-address IP Client-side IP address to bind to --source-address IP Client-side IP address to bind to
-4, --force-ipv4 Make all connections via IPv4 -4, --force-ipv4 Make all connections via IPv4
@ -1049,7 +1050,7 @@ You can configure yt-dlp by placing any supported command line option to a confi
1. **Main Configuration**: The file given by `--config-location` 1. **Main Configuration**: The file given by `--config-location`
1. **Portable Configuration**: `yt-dlp.conf` in the same directory as the bundled binary. If you are running from source-code (`<root dir>/yt_dlp/__main__.py`), the root directory is used instead. 1. **Portable Configuration**: `yt-dlp.conf` in the same directory as the bundled binary. If you are running from source-code (`<root dir>/yt_dlp/__main__.py`), the root directory is used instead.
1. **Home Configuration**: `yt-dlp.conf` in the home path given by `-P "home:<path>"`, or in the current directory if no such path is given 1. **Home Configuration**: `yt-dlp.conf` in the home path given by `-P`, or in the current directory if no such path is given
1. **User Configuration**: 1. **User Configuration**:
* `%XDG_CONFIG_HOME%/yt-dlp/config` (recommended on Linux/macOS) * `%XDG_CONFIG_HOME%/yt-dlp/config` (recommended on Linux/macOS)
* `%XDG_CONFIG_HOME%/yt-dlp.conf` * `%XDG_CONFIG_HOME%/yt-dlp.conf`

@ -220,7 +220,7 @@ def sanitize_got_info_dict(got_dict):
IGNORED_PREFIXES = ('', 'playlist', 'requested', 'webpage') IGNORED_PREFIXES = ('', 'playlist', 'requested', 'webpage')
def sanitize(key, value): def sanitize(key, value):
if isinstance(value, str) and len(value) > 100: if isinstance(value, str) and len(value) > 100 and key != 'thumbnail':
return f'md5:{md5(value)}' return f'md5:{md5(value)}'
elif isinstance(value, list) and len(value) > 10: elif isinstance(value, list) and len(value) > 10:
return f'count:{len(value)}' return f'count:{len(value)}'

@ -484,6 +484,7 @@ class YoutubeDL(object):
extractor_args: A dictionary of arguments to be passed to the extractors. extractor_args: A dictionary of arguments to be passed to the extractors.
See "EXTRACTOR ARGUMENTS" for details. See "EXTRACTOR ARGUMENTS" for details.
Eg: {'youtube': {'skip': ['dash', 'hls']}} Eg: {'youtube': {'skip': ['dash', 'hls']}}
mark_watched: Mark videos watched (even with --simulate). Only for YouTube
youtube_include_dash_manifest: Deprecated - Use extractor_args instead. youtube_include_dash_manifest: Deprecated - Use extractor_args instead.
If True (default), DASH manifests and related If True (default), DASH manifests and related
data will be downloaded and processed by extractor. data will be downloaded and processed by extractor.
@ -3504,7 +3505,7 @@ class YoutubeDL(object):
delim=self._format_screen('\u2500', self.Styles.DELIM, '-', test_encoding=True)) delim=self._format_screen('\u2500', self.Styles.DELIM, '-', test_encoding=True))
def render_thumbnails_table(self, info_dict): def render_thumbnails_table(self, info_dict):
thumbnails = list(info_dict.get('thumbnails')) thumbnails = list(info_dict.get('thumbnails') or [])
if not thumbnails: if not thumbnails:
return None return None
return render_table( return render_table(

@ -300,7 +300,7 @@ class ABCIViewShowSeriesIE(InfoExtractor):
unescapeHTML(webpage_data).encode('utf-8').decode('unicode_escape'), show_id) unescapeHTML(webpage_data).encode('utf-8').decode('unicode_escape'), show_id)
video_data = video_data['route']['pageData']['_embedded'] video_data = video_data['route']['pageData']['_embedded']
highlight = try_get(video_data, lambda x: ['highlightVideo']['shareUrl']) highlight = try_get(video_data, lambda x: x['highlightVideo']['shareUrl'])
if not self._yes_playlist(show_id, bool(highlight), video_label='highlight video'): if not self._yes_playlist(show_id, bool(highlight), video_label='highlight video'):
return self.url_result(highlight, ie=ABCIViewIE.ie_key()) return self.url_result(highlight, ie=ABCIViewIE.ie_key())

@ -440,7 +440,7 @@ class YoutubeWebArchiveIE(InfoExtractor):
}, { }, {
'url': 'ytarchive:BaW_jenozKc:20050214000000', 'url': 'ytarchive:BaW_jenozKc:20050214000000',
'only_matching': True 'only_matching': True
},{ }, {
'url': 'ytarchive:BaW_jenozKc', 'url': 'ytarchive:BaW_jenozKc',
'only_matching': True 'only_matching': True
}, },

@ -65,7 +65,7 @@ class LiTVIE(InfoExtractor):
return self.playlist_result(all_episodes, content_id, episode_title) return self.playlist_result(all_episodes, content_id, episode_title)
def _real_extract(self, url): def _real_extract(self, url):
url, data = unsmuggle_url(url, {}) url, smuggled_data = unsmuggle_url(url, {})
video_id = self._match_id(url) video_id = self._match_id(url)

@ -22,7 +22,6 @@ from ..utils import (
unified_strdate, unified_strdate,
unsmuggle_url, unsmuggle_url,
url_or_none, url_or_none,
urljoin,
) )

@ -345,7 +345,7 @@ def create_parser():
help=( help=(
'Use the specified HTTP/HTTPS/SOCKS proxy. To enable ' 'Use the specified HTTP/HTTPS/SOCKS proxy. To enable '
'SOCKS proxy, specify a proper scheme. For example ' 'SOCKS proxy, specify a proper scheme. For example '
'socks5://127.0.0.1:1080/. Pass in an empty string (--proxy "") ' 'socks5://user:pass@127.0.0.1:1080/. Pass in an empty string (--proxy "") '
'for direct connection')) 'for direct connection'))
network.add_option( network.add_option(
'--socket-timeout', '--socket-timeout',

@ -66,7 +66,7 @@ class MetadataParserPP(PostProcessor):
self.write_debug(f'Searching for {out_re.pattern!r} in {template!r}') self.write_debug(f'Searching for {out_re.pattern!r} in {template!r}')
match = out_re.search(data_to_parse) match = out_re.search(data_to_parse)
if match is None: if match is None:
self.report_warning(f'Could not interpret {inp!r} as {out!r}') self.to_screen(f'Could not interpret {inp!r} as {out!r}')
return return
for attribute, value in match.groupdict().items(): for attribute, value in match.groupdict().items():
info[attribute] = value info[attribute] = value
@ -80,7 +80,7 @@ class MetadataParserPP(PostProcessor):
def f(info): def f(info):
val = info.get(field) val = info.get(field)
if val is None: if val is None:
self.report_warning(f'Video does not have a {field}') self.to_screen(f'Video does not have a {field}')
return return
elif not isinstance(val, str): elif not isinstance(val, str):
self.report_warning(f'Cannot replace in field {field} since it is a {type(val).__name__}') self.report_warning(f'Cannot replace in field {field} since it is a {type(val).__name__}')

Loading…
Cancel
Save