mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[cleanup] Misc
This commit is contained in:
		
							
								
								
									
										10
									
								
								Changelog.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Changelog.md
									
									
									
									
									
								
							@@ -20,10 +20,10 @@
 | 
				
			|||||||
* `--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 @@
 | 
				
			|||||||
* [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 @@
 | 
				
			|||||||
* [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 @@ You can also find lists of all [contributors of yt-dlp](CONTRIBUTORS) and [autho
 | 
				
			|||||||
[](https://github.com/sponsors/coletdjnz)
 | 
					[](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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[](https://ko-fi.com/ashish0804)
 | 
					[](https://ko-fi.com/ashish0804)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,4 +48,5 @@ You can also find lists of all [contributors of yt-dlp](CONTRIBUTORS) and [autho
 | 
				
			|||||||
**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 @@ Some of yt-dlp's default options are different from that of youtube-dl and youtu
 | 
				
			|||||||
* 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 @@ The following extractors use this feature:
 | 
				
			|||||||
* `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-]+)'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 @@ class TwitchClipsIE(TwitchBaseIE):
 | 
				
			|||||||
            '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 @@ import re
 | 
				
			|||||||
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,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user