mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-30 03:51:30 +00:00
[cleanup] Misc
This commit is contained in:
parent
49b4ceaedf
commit
1e4fca9a87
10
Changelog.md
10
Changelog.md
|
@ -20,10 +20,10 @@ ### 2022.08.08
|
||||||
* `--compat-option no-live-chat` should disable danmaku
|
* `--compat-option no-live-chat` should disable danmaku
|
||||||
* Fix misleading DRM message
|
* Fix misleading DRM message
|
||||||
* Import ctypes only when necessary
|
* Import ctypes only when necessary
|
||||||
* Minor bugfixes by [pukkandan](https://github.com/pukkandan)
|
* Minor bugfixes
|
||||||
* Reject entire playlists faster with `--match-filter` by [pukkandan](https://github.com/pukkandan)
|
* Reject entire playlists faster with `--match-filter`
|
||||||
* Remove filtered entries from `-J`
|
* Remove filtered entries from `-J`
|
||||||
* Standardize retry mechanism by [pukkandan](https://github.com/pukkandan)
|
* Standardize retry mechanism
|
||||||
* Validate `--merge-output-format`
|
* Validate `--merge-output-format`
|
||||||
* [downloader] Add average speed to final progress line
|
* [downloader] Add average speed to final progress line
|
||||||
* [extractor] Add field `audio_channels`
|
* [extractor] Add field `audio_channels`
|
||||||
|
@ -31,7 +31,7 @@ ### 2022.08.08
|
||||||
* [ffmpeg] Set `ffmpeg_location` in a contextvar
|
* [ffmpeg] Set `ffmpeg_location` in a contextvar
|
||||||
* [FFmpegThumbnailsConvertor] Fix conversion from GIF
|
* [FFmpegThumbnailsConvertor] Fix conversion from GIF
|
||||||
* [MetadataParser] Don't set `None` when the field didn't match
|
* [MetadataParser] Don't set `None` when the field didn't match
|
||||||
* [outtmpl] Smarter replacing of unsupported characters by [pukkandan](https://github.com/pukkandan)
|
* [outtmpl] Smarter replacing of unsupported characters
|
||||||
* [outtmpl] Treat empty values as None in filenames
|
* [outtmpl] Treat empty values as None in filenames
|
||||||
* [utils] sanitize_open: Allow any IO stream as stdout
|
* [utils] sanitize_open: Allow any IO stream as stdout
|
||||||
* [build, devscripts] Add devscript to set a build variant
|
* [build, devscripts] Add devscript to set a build variant
|
||||||
|
@ -64,7 +64,7 @@ ### 2022.08.08
|
||||||
* [extractor/bbc] Fix news articles by [ajj8](https://github.com/ajj8)
|
* [extractor/bbc] Fix news articles by [ajj8](https://github.com/ajj8)
|
||||||
* [extractor/camtasia] Separate into own extractor by [coletdjnz](https://github.com/coletdjnz)
|
* [extractor/camtasia] Separate into own extractor by [coletdjnz](https://github.com/coletdjnz)
|
||||||
* [extractor/cloudflarestream] Fix video_id padding by [haobinliang](https://github.com/haobinliang)
|
* [extractor/cloudflarestream] Fix video_id padding by [haobinliang](https://github.com/haobinliang)
|
||||||
* [extractor/crunchyroll] Fix conversion of thumbnail from GIF by [pukkandan](https://github.com/pukkandan)
|
* [extractor/crunchyroll] Fix conversion of thumbnail from GIF
|
||||||
* [extractor/crunchyroll] Handle missing metadata correctly by [Burve](https://github.com/Burve), [pukkandan](https://github.com/pukkandan)
|
* [extractor/crunchyroll] Handle missing metadata correctly by [Burve](https://github.com/Burve), [pukkandan](https://github.com/pukkandan)
|
||||||
* [extractor/crunchyroll:beta] Extract timestamp and fix tests by [tejing1](https://github.com/tejing1)
|
* [extractor/crunchyroll:beta] Extract timestamp and fix tests by [tejing1](https://github.com/tejing1)
|
||||||
* [extractor/crunchyroll:beta] Use streams API by [tejing1](https://github.com/tejing1)
|
* [extractor/crunchyroll:beta] Use streams API by [tejing1](https://github.com/tejing1)
|
||||||
|
|
|
@ -28,12 +28,12 @@ ## [coletdjnz](https://github.com/coletdjnz)
|
||||||
[![gh-sponsor](https://img.shields.io/badge/_-Sponsor-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge)](https://github.com/sponsors/coletdjnz)
|
[![gh-sponsor](https://img.shields.io/badge/_-Sponsor-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge)](https://github.com/sponsors/coletdjnz)
|
||||||
|
|
||||||
* YouTube improvements including: age-gate bypass, private playlists, multiple-clients (to avoid throttling) and a lot of under-the-hood improvements
|
* YouTube improvements including: age-gate bypass, private playlists, multiple-clients (to avoid throttling) and a lot of under-the-hood improvements
|
||||||
* Added support for downloading YoutubeWebArchive videos
|
* Added support for new websites YoutubeWebArchive, MainStreaming, PRX, nzherald, Mediaklikk, StarTV etc
|
||||||
* Added support for new websites MainStreaming, PRX, nzherald, etc
|
* Improved/fixed support for Patreon, panopto, gfycat, itv, pbs, SouthParkDE etc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [Ashish0804](https://github.com/Ashish0804)
|
## [Ashish0804](https://github.com/Ashish0804) <sub><sup>[Inactive]</sup></sub>
|
||||||
|
|
||||||
[![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/ashish0804)
|
[![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/ashish0804)
|
||||||
|
|
||||||
|
@ -48,4 +48,5 @@ ## [Lesmiscore](https://github.com/Lesmiscore) (nao20010128nao)
|
||||||
**Monacoin**: mona1q3tf7dzvshrhfe3md379xtvt2n22duhglv5dskr
|
**Monacoin**: mona1q3tf7dzvshrhfe3md379xtvt2n22duhglv5dskr
|
||||||
|
|
||||||
* Download live from start to end for YouTube
|
* Download live from start to end for YouTube
|
||||||
* Added support for new websites mildom, PixivSketch, skeb, radiko, voicy, mirrativ, openrec, whowatch, damtomo, 17.live, mixch etc
|
* Added support for new websites AbemaTV, mildom, PixivSketch, skeb, radiko, voicy, mirrativ, openrec, whowatch, damtomo, 17.live, mixch etc
|
||||||
|
* Improved/fixed support for fc2, YahooJapanNews, tver, iwara etc
|
||||||
|
|
|
@ -146,7 +146,7 @@ ### Differences in default behavior
|
||||||
* Some private fields such as filenames are removed by default from the infojson. Use `--no-clean-infojson` or `--compat-options no-clean-infojson` to revert this
|
* Some private fields such as filenames are removed by default from the infojson. Use `--no-clean-infojson` or `--compat-options no-clean-infojson` to revert this
|
||||||
* When `--embed-subs` and `--write-subs` are used together, the subtitles are written to disk and also embedded in the media file. You can use just `--embed-subs` to embed the subs and automatically delete the separate file. See [#630 (comment)](https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) for more info. `--compat-options no-keep-subs` can be used to revert this
|
* When `--embed-subs` and `--write-subs` are used together, the subtitles are written to disk and also embedded in the media file. You can use just `--embed-subs` to embed the subs and automatically delete the separate file. See [#630 (comment)](https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) for more info. `--compat-options no-keep-subs` can be used to revert this
|
||||||
* `certifi` will be used for SSL root certificates, if installed. If you want to use system certificates (e.g. self-signed), use `--compat-options no-certifi`
|
* `certifi` will be used for SSL root certificates, if installed. If you want to use system certificates (e.g. self-signed), use `--compat-options no-certifi`
|
||||||
* youtube-dl tries to remove some superfluous punctuations from filenames. While this can sometimes be helpful, it is often undesirable. So yt-dlp tries to keep the fields in the filenames as close to their original values as possible. You can use `--compat-options filename-sanitization` to revert to youtube-dl's behavior
|
* yt-dlp's sanitization of invalid characters in filenames is different/smarter than in youtube-dl. You can use `--compat-options filename-sanitization` to revert to youtube-dl's behavior
|
||||||
|
|
||||||
For ease of use, a few more compat options are available:
|
For ease of use, a few more compat options are available:
|
||||||
|
|
||||||
|
@ -1758,9 +1758,7 @@ #### youtube
|
||||||
* `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side)
|
* `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side)
|
||||||
* `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread`. Default is `all,all,all,all`
|
* `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread`. Default is `all,all,all,all`
|
||||||
* E.g. `all,all,1000,10` will get a maximum of 1000 replies total, with up to 10 replies per thread. `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total
|
* E.g. `all,all,1000,10` will get a maximum of 1000 replies total, with up to 10 replies per thread. `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total
|
||||||
* `innertube_host`: Innertube API host to use for all API requests
|
* `innertube_host`: Innertube API host to use for all API requests; e.g. `studio.youtube.com`, `youtubei.googleapis.com`. Note that cookies exported from one subdomain will not work on others
|
||||||
* E.g. `studio.youtube.com`, `youtubei.googleapis.com`
|
|
||||||
* Note: Cookies exported from `www.youtube.com` will not work with hosts other than `*.youtube.com`
|
|
||||||
* `innertube_key`: Innertube API key to use for all API requests
|
* `innertube_key`: Innertube API key to use for all API requests
|
||||||
|
|
||||||
#### youtubetab (YouTube playlists, channels, feeds, etc.)
|
#### youtubetab (YouTube playlists, channels, feeds, etc.)
|
||||||
|
|
|
@ -301,7 +301,7 @@ class YoutubeDL:
|
||||||
should act on each input URL as opposed to for the entire queue
|
should act on each input URL as opposed to for the entire queue
|
||||||
cookiefile: File name or text stream from where cookies should be read and dumped to
|
cookiefile: File name or text stream from where cookies should be read and dumped to
|
||||||
cookiesfrombrowser: A tuple containing the name of the browser, the profile
|
cookiesfrombrowser: A tuple containing the name of the browser, the profile
|
||||||
name/pathfrom where cookies are loaded, and the name of the
|
name/path from where cookies are loaded, and the name of the
|
||||||
keyring, e.g. ('chrome', ) or ('vivaldi', 'default', 'BASICTEXT')
|
keyring, e.g. ('chrome', ) or ('vivaldi', 'default', 'BASICTEXT')
|
||||||
legacyserverconnect: Explicitly allow HTTPS connection to servers that do not
|
legacyserverconnect: Explicitly allow HTTPS connection to servers that do not
|
||||||
support RFC 5746 secure renegotiation
|
support RFC 5746 secure renegotiation
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import (
|
from ..utils import clean_html, float_or_none, traverse_obj, try_call
|
||||||
clean_html,
|
|
||||||
float_or_none,
|
|
||||||
traverse_obj,
|
|
||||||
try_call,
|
|
||||||
)
|
|
||||||
|
|
||||||
# more info about jixie:
|
|
||||||
# [1] https://jixie.atlassian.net/servicedesk/customer/portal/2/article/1339654214?src=-1456335525,
|
|
||||||
# [2] https://scripts.jixie.media/jxvideo.3.1.min.js
|
|
||||||
|
|
||||||
|
|
||||||
class JixieBaseIE(InfoExtractor):
|
class JixieBaseIE(InfoExtractor):
|
||||||
|
"""
|
||||||
|
API Reference:
|
||||||
|
https://jixie.atlassian.net/servicedesk/customer/portal/2/article/1339654214?src=-1456335525,
|
||||||
|
https://scripts.jixie.media/jxvideo.3.1.min.js
|
||||||
|
"""
|
||||||
|
|
||||||
def _extract_data_from_jixie_id(self, display_id, video_id, webpage):
|
def _extract_data_from_jixie_id(self, display_id, video_id, webpage):
|
||||||
json_data = self._download_json(
|
json_data = self._download_json(
|
||||||
'https://apidam.jixie.io/api/public/stream', display_id,
|
'https://apidam.jixie.io/api/public/stream', display_id,
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from .jixie import JixieBaseIE
|
from .jixie import JixieBaseIE
|
||||||
|
|
||||||
# Video from video.kompas.com seems use jixie player
|
|
||||||
|
|
||||||
|
|
||||||
class KompasVideoIE(JixieBaseIE):
|
class KompasVideoIE(JixieBaseIE):
|
||||||
_VALID_URL = r'https?://video\.kompas\.com/\w+/(?P<id>\d+)/(?P<slug>[\w-]+)'
|
_VALID_URL = r'https?://video\.kompas\.com/\w+/(?P<id>\d+)/(?P<slug>[\w-]+)'
|
||||||
|
|
|
@ -325,7 +325,7 @@ def _real_extract(self, url):
|
||||||
airings = self._download_json(
|
airings = self._download_json(
|
||||||
f'https://search-api-mlbtv.mlb.com/svc/search/v2/graphql/persisted/query/core/Airings?variables=%7B%22partnerProgramIds%22%3A%5B%22{video_id}%22%5D%2C%22applyEsniMediaRightsLabels%22%3Atrue%7D',
|
f'https://search-api-mlbtv.mlb.com/svc/search/v2/graphql/persisted/query/core/Airings?variables=%7B%22partnerProgramIds%22%3A%5B%22{video_id}%22%5D%2C%22applyEsniMediaRightsLabels%22%3Atrue%7D',
|
||||||
video_id)['data']['Airings']
|
video_id)['data']['Airings']
|
||||||
|
|
||||||
formats, subtitles = [], {}
|
formats, subtitles = [], {}
|
||||||
for airing in airings:
|
for airing in airings:
|
||||||
m3u8_url = self._download_json(
|
m3u8_url = self._download_json(
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import json
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from .youtube import YoutubeIE
|
from .youtube import YoutubeIE
|
||||||
|
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
clean_html,
|
clean_html,
|
||||||
format_field,
|
format_field,
|
||||||
|
|
|
@ -1169,7 +1169,7 @@ def _real_extract(self, url):
|
||||||
'id': clip.get('id') or video_id,
|
'id': clip.get('id') or video_id,
|
||||||
'_old_archive_ids': [make_archive_id(self, old_id)] if old_id else None,
|
'_old_archive_ids': [make_archive_id(self, old_id)] if old_id else None,
|
||||||
'display_id': video_id,
|
'display_id': video_id,
|
||||||
'title': clip.get('title') or video_id,
|
'title': clip.get('title'),
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'duration': int_or_none(clip.get('durationSeconds')),
|
'duration': int_or_none(clip.get('durationSeconds')),
|
||||||
'view_count': int_or_none(clip.get('viewCount')),
|
'view_count': int_or_none(clip.get('viewCount')),
|
||||||
|
|
|
@ -2,10 +2,7 @@
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import (
|
from ..compat import compat_HTTPError, compat_str
|
||||||
compat_HTTPError,
|
|
||||||
compat_str,
|
|
||||||
)
|
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
|
|
Loading…
Reference in a new issue