From 07cce701de0ad07a60203d86879c6c737f936a18 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Tue, 18 May 2021 23:50:59 +0530 Subject: [PATCH] [cleanup] linter, code formatting and readme --- README.md | 4 ++-- yt_dlp/YoutubeDL.py | 27 ++++++++++----------------- yt_dlp/extractor/common.py | 2 ++ yt_dlp/extractor/youtube.py | 2 +- ytdlp_plugins/extractor/__init__.py | 1 + ytdlp_plugins/extractor/sample.py | 8 +++++--- 6 files changed, 21 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 940b61c8e7..e1022da37f 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ Python versions 3.6+ (CPython and PyPy) are officially supported. Other versions On windows, [Microsoft Visual C++ 2010 Redistributable Package (x86)](https://www.microsoft.com/en-us/download/details.aspx?id=26999) is also necessary to run yt-dlp. You probably already have this, but if the executable throws an error due to missing `MSVCR100.dll` you need to install it. -Although there are no other required dependencies, `ffmpeg` and `ffprobe` are highly recommended. Other optional dependencies are `sponskrub`, `AtomicParsley`, `mutagen`, `pycryptodome` and any of the supported external downloaders. Note that the windows releases are already built with the python interpreter, mutagen and pycryptodome included. +Although there are no other required dependencies, `ffmpeg` and `ffprobe` are highly recommended. Other optional dependencies are `sponskrub`, `AtomicParsley`, `mutagen`, `pycryptodome`, `phantomjs` and any of the supported external downloaders. Note that the windows releases are already built with the python interpreter, mutagen and pycryptodome included. ### UPDATE You can use `yt-dlp -U` to update if you are using the provided release. @@ -818,7 +818,7 @@ You can configure yt-dlp by placing any supported command line option to a confi * `~/yt-dlp.conf.txt` Note that `~` points to `C:\Users\` on windows. Also, `%XDG_CONFIG_HOME%` defaults to `~/.config` if undefined -1. **System Configuration**: `/etc/yt-dlp.conf` or `/etc/yt-dlp.conf` +1. **System Configuration**: `/etc/yt-dlp.conf` For example, with the following configuration file yt-dlp will always extract the audio, not copy the mtime, use a proxy and save all videos under `YouTube` directory in your home directory: ``` diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 55bc49a9ea..3f4885cfde 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -1191,10 +1191,10 @@ class YoutubeDL(object): elif result_type == 'url': # We have to add extra_info to the results because it may be # contained in a playlist - return self.extract_info(ie_result['url'], - download, - ie_key=ie_result.get('ie_key'), - extra_info=extra_info) + return self.extract_info( + ie_result['url'], download, + ie_key=ie_result.get('ie_key'), + extra_info=extra_info) elif result_type == 'url_transparent': # Use the information from the embedding page info = self.extract_info( @@ -2136,12 +2136,9 @@ class YoutubeDL(object): self.report_warning('Requested format is not available') elif download: self.to_screen( - '[info] %s: Downloading format(s) %s' - % (info_dict['id'], ", ".join([f['format_id'] for f in formats_to_download]))) - if len(formats_to_download) > 1: - self.to_screen( - '[info] %s: Downloading video in %s formats' - % (info_dict['id'], len(formats_to_download))) + '[info] %s: Downloading %d format(s): %s' % ( + info_dict['id'], len(formats_to_download), + ", ".join([f['format_id'] for f in formats_to_download]))) for fmt in formats_to_download: new_info = dict(info_dict) new_info.update(fmt) @@ -2790,13 +2787,9 @@ class YoutubeDL(object): actual_post_extract(video_dict or {}) return - if '__post_extractor' not in info_dict: - return - post_extractor = info_dict['__post_extractor'] - if post_extractor: - info_dict.update(post_extractor().items()) - del info_dict['__post_extractor'] - return + post_extractor = info_dict.get('__post_extractor') or (lambda: {}) + info_dict.update(post_extractor().items()) + info_dict.pop('__post_extractor', None) actual_post_extract(info_dict or {}) diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index 42824182f0..3b2bda0e75 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -554,6 +554,8 @@ class InfoExtractor(object): self.initialize() self.write_debug('Extracting URL: %s' % url) ie_result = self._real_extract(url) + if ie_result is None: + return None if self._x_forwarded_for_ip: ie_result['__x_forwarded_for_ip'] = self._x_forwarded_for_ip subtitles = ie_result.get('subtitles') diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 145b89a6ec..4ffb90cb97 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -3636,7 +3636,7 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor): def get_mobj(url): mobj = self._url_re.match(url).groupdict() - mobj.update((k, '') for k,v in mobj.items() if v is None) + mobj.update((k, '') for k, v in mobj.items() if v is None) return mobj mobj = get_mobj(url) diff --git a/ytdlp_plugins/extractor/__init__.py b/ytdlp_plugins/extractor/__init__.py index e1a83b909d..92f2bfd861 100644 --- a/ytdlp_plugins/extractor/__init__.py +++ b/ytdlp_plugins/extractor/__init__.py @@ -1,2 +1,3 @@ # flake8: noqa + from .sample import SamplePluginIE diff --git a/ytdlp_plugins/extractor/sample.py b/ytdlp_plugins/extractor/sample.py index 5d8df1df50..99a3841409 100644 --- a/ytdlp_plugins/extractor/sample.py +++ b/ytdlp_plugins/extractor/sample.py @@ -1,11 +1,13 @@ +# coding: utf-8 + from __future__ import unicode_literals -# Don't use relative imports +# ⚠ Don't use relative imports from yt_dlp.extractor.common import InfoExtractor -# See https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site -# for instuctions on making extractors +# ℹī¸ Instructions on making extractors can be found at: +# 🔗 https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site class SamplePluginIE(InfoExtractor): _WORKING = False