mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-01 03:43:02 +00:00
[extractor/youtube] Add live_status=post_live
(#4495)
Related: https://github.com/yt-dlp/yt-dlp/issues/1564 Authored by: lazypete365
This commit is contained in:
parent
3df4f81dfe
commit
e325a21a1f
3 changed files with 11 additions and 9 deletions
|
@ -1257,7 +1257,7 @@ # OUTPUT TEMPLATE
|
||||||
- `average_rating` (numeric): Average rating give by users, the scale used depends on the webpage
|
- `average_rating` (numeric): Average rating give by users, the scale used depends on the webpage
|
||||||
- `comment_count` (numeric): Number of comments on the video (For some extractors, comments are only downloaded at the end, and so this field cannot be used)
|
- `comment_count` (numeric): Number of comments on the video (For some extractors, comments are only downloaded at the end, and so this field cannot be used)
|
||||||
- `age_limit` (numeric): Age restriction for the video (years)
|
- `age_limit` (numeric): Age restriction for the video (years)
|
||||||
- `live_status` (string): One of "is_live", "was_live", "is_upcoming", "not_live"
|
- `live_status` (string): One of "not_live", "is_live", "is_upcoming", "was_live", "post_live" (was live, but VOD is not yet processed)
|
||||||
- `is_live` (boolean): Whether this video is a live stream or a fixed-length video
|
- `is_live` (boolean): Whether this video is a live stream or a fixed-length video
|
||||||
- `was_live` (boolean): Whether this video was originally a live stream
|
- `was_live` (boolean): Whether this video was originally a live stream
|
||||||
- `playable_in_embed` (string): Whether this video is allowed to play in embedded players on other sites
|
- `playable_in_embed` (string): Whether this video is allowed to play in embedded players on other sites
|
||||||
|
|
|
@ -312,7 +312,8 @@ class InfoExtractor:
|
||||||
live stream that goes on instead of a fixed-length video.
|
live stream that goes on instead of a fixed-length video.
|
||||||
was_live: True, False, or None (=unknown). Whether this video was
|
was_live: True, False, or None (=unknown). Whether this video was
|
||||||
originally a live stream.
|
originally a live stream.
|
||||||
live_status: 'is_live', 'is_upcoming', 'was_live', 'not_live' or None (=unknown)
|
live_status: None (=unknown), 'is_live', 'is_upcoming', 'was_live', 'not_live'
|
||||||
|
or 'post_live' (was live, but VOD is not yet processed)
|
||||||
If absent, automatically set from is_live, was_live
|
If absent, automatically set from is_live, was_live
|
||||||
start_time: Time in seconds where the reproduction should start, as
|
start_time: Time in seconds where the reproduction should start, as
|
||||||
specified in the URL.
|
specified in the URL.
|
||||||
|
|
|
@ -3463,13 +3463,6 @@ def feed_entry(name):
|
||||||
or get_first(microformats, 'lengthSeconds')
|
or get_first(microformats, 'lengthSeconds')
|
||||||
or parse_duration(search_meta('duration'))) or None
|
or parse_duration(search_meta('duration'))) or None
|
||||||
|
|
||||||
if get_first(video_details, 'isPostLiveDvr'):
|
|
||||||
self.write_debug('Video is in Post-Live Manifestless mode')
|
|
||||||
if (duration or 0) > 4 * 3600:
|
|
||||||
self.report_warning(
|
|
||||||
'The livestream has not finished processing. Only 4 hours of the video can be currently downloaded. '
|
|
||||||
'This is a known issue and patches are welcome')
|
|
||||||
|
|
||||||
live_broadcast_details, is_live, streaming_data, formats, automatic_captions = \
|
live_broadcast_details, is_live, streaming_data, formats, automatic_captions = \
|
||||||
self._list_formats(video_id, microformats, video_details, player_responses, player_url)
|
self._list_formats(video_id, microformats, video_details, player_responses, player_url)
|
||||||
|
|
||||||
|
@ -3600,6 +3593,14 @@ def feed_entry(name):
|
||||||
'release_timestamp': live_start_time,
|
'release_timestamp': live_start_time,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if get_first(video_details, 'isPostLiveDvr'):
|
||||||
|
self.write_debug('Video is in Post-Live Manifestless mode')
|
||||||
|
info['live_status'] = 'post_live'
|
||||||
|
if (duration or 0) > 4 * 3600:
|
||||||
|
self.report_warning(
|
||||||
|
'The livestream has not finished processing. Only 4 hours of the video can be currently downloaded. '
|
||||||
|
'This is a known issue and patches are welcome')
|
||||||
|
|
||||||
subtitles = {}
|
subtitles = {}
|
||||||
pctr = traverse_obj(player_responses, (..., 'captions', 'playerCaptionsTracklistRenderer'), expected_type=dict)
|
pctr = traverse_obj(player_responses, (..., 'captions', 'playerCaptionsTracklistRenderer'), expected_type=dict)
|
||||||
if pctr:
|
if pctr:
|
||||||
|
|
Loading…
Reference in a new issue