mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-22 06:00:00 +00:00
[cleanup] linter, code formatting and readme
This commit is contained in:
parent
74e001af1d
commit
07cce701de
6 changed files with 21 additions and 23 deletions
|
@ -168,7 +168,7 @@ ### DEPENDENCIES
|
||||||
|
|
||||||
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.
|
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
|
### UPDATE
|
||||||
You can use `yt-dlp -U` to update if you are using the provided release.
|
You can use `yt-dlp -U` to update if you are using the provided release.
|
||||||
|
@ -818,7 +818,7 @@ # CONFIGURATION
|
||||||
* `~/yt-dlp.conf.txt`
|
* `~/yt-dlp.conf.txt`
|
||||||
|
|
||||||
Note that `~` points to `C:\Users\<user name>` on windows. Also, `%XDG_CONFIG_HOME%` defaults to `~/.config` if undefined
|
Note that `~` points to `C:\Users\<user name>` 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:
|
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:
|
||||||
```
|
```
|
||||||
|
|
|
@ -1191,10 +1191,10 @@ def process_ie_result(self, ie_result, download=True, extra_info={}):
|
||||||
elif result_type == 'url':
|
elif result_type == 'url':
|
||||||
# We have to add extra_info to the results because it may be
|
# We have to add extra_info to the results because it may be
|
||||||
# contained in a playlist
|
# contained in a playlist
|
||||||
return self.extract_info(ie_result['url'],
|
return self.extract_info(
|
||||||
download,
|
ie_result['url'], download,
|
||||||
ie_key=ie_result.get('ie_key'),
|
ie_key=ie_result.get('ie_key'),
|
||||||
extra_info=extra_info)
|
extra_info=extra_info)
|
||||||
elif result_type == 'url_transparent':
|
elif result_type == 'url_transparent':
|
||||||
# Use the information from the embedding page
|
# Use the information from the embedding page
|
||||||
info = self.extract_info(
|
info = self.extract_info(
|
||||||
|
@ -2136,12 +2136,9 @@ def is_wellformed(f):
|
||||||
self.report_warning('Requested format is not available')
|
self.report_warning('Requested format is not available')
|
||||||
elif download:
|
elif download:
|
||||||
self.to_screen(
|
self.to_screen(
|
||||||
'[info] %s: Downloading format(s) %s'
|
'[info] %s: Downloading %d format(s): %s' % (
|
||||||
% (info_dict['id'], ", ".join([f['format_id'] for f in formats_to_download])))
|
info_dict['id'], len(formats_to_download),
|
||||||
if len(formats_to_download) > 1:
|
", ".join([f['format_id'] for f in formats_to_download])))
|
||||||
self.to_screen(
|
|
||||||
'[info] %s: Downloading video in %s formats'
|
|
||||||
% (info_dict['id'], len(formats_to_download)))
|
|
||||||
for fmt in formats_to_download:
|
for fmt in formats_to_download:
|
||||||
new_info = dict(info_dict)
|
new_info = dict(info_dict)
|
||||||
new_info.update(fmt)
|
new_info.update(fmt)
|
||||||
|
@ -2790,13 +2787,9 @@ def actual_post_extract(info_dict):
|
||||||
actual_post_extract(video_dict or {})
|
actual_post_extract(video_dict or {})
|
||||||
return
|
return
|
||||||
|
|
||||||
if '__post_extractor' not in info_dict:
|
post_extractor = info_dict.get('__post_extractor') or (lambda: {})
|
||||||
return
|
info_dict.update(post_extractor().items())
|
||||||
post_extractor = info_dict['__post_extractor']
|
info_dict.pop('__post_extractor', None)
|
||||||
if post_extractor:
|
|
||||||
info_dict.update(post_extractor().items())
|
|
||||||
del info_dict['__post_extractor']
|
|
||||||
return
|
|
||||||
|
|
||||||
actual_post_extract(info_dict or {})
|
actual_post_extract(info_dict or {})
|
||||||
|
|
||||||
|
|
|
@ -554,6 +554,8 @@ def extract(self, url):
|
||||||
self.initialize()
|
self.initialize()
|
||||||
self.write_debug('Extracting URL: %s' % url)
|
self.write_debug('Extracting URL: %s' % url)
|
||||||
ie_result = self._real_extract(url)
|
ie_result = self._real_extract(url)
|
||||||
|
if ie_result is None:
|
||||||
|
return None
|
||||||
if self._x_forwarded_for_ip:
|
if self._x_forwarded_for_ip:
|
||||||
ie_result['__x_forwarded_for_ip'] = self._x_forwarded_for_ip
|
ie_result['__x_forwarded_for_ip'] = self._x_forwarded_for_ip
|
||||||
subtitles = ie_result.get('subtitles')
|
subtitles = ie_result.get('subtitles')
|
||||||
|
|
|
@ -3636,7 +3636,7 @@ def __real_extract(self, url, smuggled_data):
|
||||||
|
|
||||||
def get_mobj(url):
|
def get_mobj(url):
|
||||||
mobj = self._url_re.match(url).groupdict()
|
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
|
return mobj
|
||||||
|
|
||||||
mobj = get_mobj(url)
|
mobj = get_mobj(url)
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
# flake8: noqa
|
# flake8: noqa
|
||||||
|
|
||||||
from .sample import SamplePluginIE
|
from .sample import SamplePluginIE
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
# Don't use relative imports
|
# ⚠ Don't use relative imports
|
||||||
from yt_dlp.extractor.common import InfoExtractor
|
from yt_dlp.extractor.common import InfoExtractor
|
||||||
|
|
||||||
|
|
||||||
# See https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site
|
# ℹ️ Instructions on making extractors can be found at:
|
||||||
# for instuctions on making extractors
|
# 🔗 https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site
|
||||||
|
|
||||||
class SamplePluginIE(InfoExtractor):
|
class SamplePluginIE(InfoExtractor):
|
||||||
_WORKING = False
|
_WORKING = False
|
||||||
|
|
Loading…
Reference in a new issue