mirror of https://github.com/yt-dlp/yt-dlp.git
[extractor/youtube] Add `no-youtube-prefer-utc-upload-date` compat option (#4771)
This option reverts992f9a730b
and17322130a9
to prefer the non-UTC upload date in microformats. Authored by: coletdjnz, pukkandan
This commit is contained in:
parent
825d3ce386
commit
1ff88b7aec
|
@ -141,6 +141,7 @@ Some of yt-dlp's default options are different from that of youtube-dl and youtu
|
||||||
* Live chats (if available) are considered as subtitles. Use `--sub-langs all,-live_chat` to download all subtitles except live chat. You can also use `--compat-options no-live-chat` to prevent any live chat/danmaku from downloading
|
* Live chats (if available) are considered as subtitles. Use `--sub-langs all,-live_chat` to download all subtitles except live chat. You can also use `--compat-options no-live-chat` to prevent any live chat/danmaku from downloading
|
||||||
* Youtube channel URLs are automatically redirected to `/video`. Append a `/featured` to the URL to download only the videos in the home page. If the channel does not have a videos tab, we try to download the equivalent `UU` playlist instead. For all other tabs, if the channel does not show the requested tab, an error will be raised. Also, `/live` URLs raise an error if there are no live videos instead of silently downloading the entire channel. You may use `--compat-options no-youtube-channel-redirect` to revert all these redirections
|
* Youtube channel URLs are automatically redirected to `/video`. Append a `/featured` to the URL to download only the videos in the home page. If the channel does not have a videos tab, we try to download the equivalent `UU` playlist instead. For all other tabs, if the channel does not show the requested tab, an error will be raised. Also, `/live` URLs raise an error if there are no live videos instead of silently downloading the entire channel. You may use `--compat-options no-youtube-channel-redirect` to revert all these redirections
|
||||||
* Unavailable videos are also listed for youtube playlists. Use `--compat-options no-youtube-unavailable-videos` to remove this
|
* Unavailable videos are also listed for youtube playlists. Use `--compat-options no-youtube-unavailable-videos` to remove this
|
||||||
|
* The upload dates extracted from YouTube are in UTC [when available](https://github.com/yt-dlp/yt-dlp/blob/89e4d86171c7b7c997c77d4714542e0383bf0db0/yt_dlp/extractor/youtube.py#L3898-L3900). Use `--compat-options no-youtube-prefer-utc-upload-date` to prefer the non-UTC upload date.
|
||||||
* If `ffmpeg` is used as the downloader, the downloading and merging of formats happen in a single step when possible. Use `--compat-options no-direct-merge` to revert this
|
* If `ffmpeg` is used as the downloader, the downloading and merging of formats happen in a single step when possible. Use `--compat-options no-direct-merge` to revert this
|
||||||
* Thumbnail embedding in `mp4` is done with mutagen if possible. Use `--compat-options embed-thumbnail-atomicparsley` to force the use of AtomicParsley instead
|
* Thumbnail embedding in `mp4` is done with mutagen if possible. Use `--compat-options embed-thumbnail-atomicparsley` to force the use of AtomicParsley instead
|
||||||
* 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
|
||||||
|
|
|
@ -2159,6 +2159,35 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'comment_count': int,
|
'comment_count': int,
|
||||||
'channel_follower_count': int
|
'channel_follower_count': int
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
# Same video as above, but with --compat-opt no-youtube-prefer-utc-upload-date
|
||||||
|
'url': 'https://www.youtube.com/watch?v=2NUZ8W2llS4',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '2NUZ8W2llS4',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'The NP that test your phone performance 🙂',
|
||||||
|
'description': 'md5:144494b24d4f9dfacb97c1bbef5de84d',
|
||||||
|
'uploader': 'Leon Nguyen',
|
||||||
|
'uploader_id': 'VNSXIII',
|
||||||
|
'uploader_url': 'http://www.youtube.com/user/VNSXIII',
|
||||||
|
'channel_id': 'UCRqNBSOHgilHfAczlUmlWHA',
|
||||||
|
'channel_url': 'https://www.youtube.com/channel/UCRqNBSOHgilHfAczlUmlWHA',
|
||||||
|
'duration': 21,
|
||||||
|
'view_count': int,
|
||||||
|
'age_limit': 0,
|
||||||
|
'categories': ['Gaming'],
|
||||||
|
'tags': 'count:23',
|
||||||
|
'playable_in_embed': True,
|
||||||
|
'live_status': 'not_live',
|
||||||
|
'upload_date': '20220102',
|
||||||
|
'like_count': int,
|
||||||
|
'availability': 'public',
|
||||||
|
'channel': 'Leon Nguyen',
|
||||||
|
'thumbnail': 'https://i.ytimg.com/vi_webp/2NUZ8W2llS4/maxresdefault.webp',
|
||||||
|
'comment_count': int,
|
||||||
|
'channel_follower_count': int
|
||||||
|
},
|
||||||
|
'params': {'compat_opts': ['no-youtube-prefer-utc-upload-date']}
|
||||||
}, {
|
}, {
|
||||||
# date text is premiered video, ensure upload date in UTC (published 1641172509)
|
# date text is premiered video, ensure upload date in UTC (published 1641172509)
|
||||||
'url': 'https://www.youtube.com/watch?v=mzZzzBU6lrM',
|
'url': 'https://www.youtube.com/watch?v=mzZzzBU6lrM',
|
||||||
|
@ -3920,7 +3949,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
upload_date = (
|
upload_date = (
|
||||||
unified_strdate(get_first(microformats, 'uploadDate'))
|
unified_strdate(get_first(microformats, 'uploadDate'))
|
||||||
or unified_strdate(search_meta('uploadDate')))
|
or unified_strdate(search_meta('uploadDate')))
|
||||||
if not upload_date or (not info.get('is_live') and not info.get('was_live') and info.get('live_status') != 'is_upcoming'):
|
if not upload_date or (
|
||||||
|
not info.get('is_live')
|
||||||
|
and not info.get('was_live')
|
||||||
|
and info.get('live_status') != 'is_upcoming'
|
||||||
|
and 'no-youtube-prefer-utc-upload-date' not in self.get_param('compat_opts', [])
|
||||||
|
):
|
||||||
upload_date = strftime_or_none(self._extract_time_text(vpir, 'dateText')[0], '%Y%m%d') or upload_date
|
upload_date = strftime_or_none(self._extract_time_text(vpir, 'dateText')[0], '%Y%m%d') or upload_date
|
||||||
info['upload_date'] = upload_date
|
info['upload_date'] = upload_date
|
||||||
|
|
||||||
|
|
|
@ -444,6 +444,7 @@ def create_parser():
|
||||||
'multistreams', 'no-live-chat', 'playlist-index', 'list-formats', 'no-direct-merge',
|
'multistreams', 'no-live-chat', 'playlist-index', 'list-formats', 'no-direct-merge',
|
||||||
'no-youtube-channel-redirect', 'no-youtube-unavailable-videos', 'no-attach-info-json', 'embed-metadata',
|
'no-youtube-channel-redirect', 'no-youtube-unavailable-videos', 'no-attach-info-json', 'embed-metadata',
|
||||||
'embed-thumbnail-atomicparsley', 'seperate-video-versions', 'no-clean-infojson', 'no-keep-subs', 'no-certifi',
|
'embed-thumbnail-atomicparsley', 'seperate-video-versions', 'no-clean-infojson', 'no-keep-subs', 'no-certifi',
|
||||||
|
'no-youtube-prefer-utc-upload-date'
|
||||||
}, 'aliases': {
|
}, 'aliases': {
|
||||||
'youtube-dl': ['all', '-multistreams'],
|
'youtube-dl': ['all', '-multistreams'],
|
||||||
'youtube-dlc': ['all', '-no-youtube-channel-redirect', '-no-live-chat'],
|
'youtube-dlc': ['all', '-no-youtube-channel-redirect', '-no-live-chat'],
|
||||||
|
|
Loading…
Reference in New Issue