mirror of
https://github.com/iv-org/invidious.git
synced 2024-08-30 18:23:25 +00:00
API: convey info "is post live" from Youtube response (#4569)
Returns the 'isPostLiveDvr' field in the videos API when the video is a post-live DVR (= ended livestream that hasn't been reprocessed into VOD yet). Example taken 10 minutes after that livestream ended: /api/v1/videos/euqnWk-uP6M { ... "isPostLiveDvr": true, ... } Partially fixes 4421
This commit is contained in:
commit
f1fd197cbc
@ -62,6 +62,7 @@ module Invidious::JSONify::APIv1
|
|||||||
json.field "rating", 0_i64
|
json.field "rating", 0_i64
|
||||||
json.field "isListed", video.is_listed
|
json.field "isListed", video.is_listed
|
||||||
json.field "liveNow", video.live_now
|
json.field "liveNow", video.live_now
|
||||||
|
json.field "isPostLiveDvr", video.post_live_dvr
|
||||||
json.field "isUpcoming", video.is_upcoming
|
json.field "isUpcoming", video.is_upcoming
|
||||||
|
|
||||||
if video.premiere_timestamp
|
if video.premiere_timestamp
|
||||||
|
@ -82,6 +82,10 @@ struct Video
|
|||||||
return (self.video_type == VideoType::Livestream)
|
return (self.video_type == VideoType::Livestream)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def post_live_dvr
|
||||||
|
return info["isPostLiveDvr"].as_bool
|
||||||
|
end
|
||||||
|
|
||||||
def premiere_timestamp : Time?
|
def premiere_timestamp : Time?
|
||||||
info
|
info
|
||||||
.dig?("microformat", "playerMicroformatRenderer", "liveBroadcastDetails", "startTimestamp")
|
.dig?("microformat", "playerMicroformatRenderer", "liveBroadcastDetails", "startTimestamp")
|
||||||
|
@ -216,6 +216,9 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
|
|||||||
live_now = microformat.dig?("liveBroadcastDetails", "isLiveNow")
|
live_now = microformat.dig?("liveBroadcastDetails", "isLiveNow")
|
||||||
.try &.as_bool || false
|
.try &.as_bool || false
|
||||||
|
|
||||||
|
post_live_dvr = video_details.dig?("isPostLiveDvr")
|
||||||
|
.try &.as_bool || false
|
||||||
|
|
||||||
# Extra video infos
|
# Extra video infos
|
||||||
|
|
||||||
allowed_regions = microformat["availableCountries"]?
|
allowed_regions = microformat["availableCountries"]?
|
||||||
@ -417,6 +420,7 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
|
|||||||
"isListed" => JSON::Any.new(is_listed || false),
|
"isListed" => JSON::Any.new(is_listed || false),
|
||||||
"isUpcoming" => JSON::Any.new(is_upcoming || false),
|
"isUpcoming" => JSON::Any.new(is_upcoming || false),
|
||||||
"keywords" => JSON::Any.new(keywords.map { |v| JSON::Any.new(v) }),
|
"keywords" => JSON::Any.new(keywords.map { |v| JSON::Any.new(v) }),
|
||||||
|
"isPostLiveDvr" => JSON::Any.new(post_live_dvr),
|
||||||
# Related videos
|
# Related videos
|
||||||
"relatedVideos" => JSON::Any.new(related),
|
"relatedVideos" => JSON::Any.new(related),
|
||||||
# Description
|
# Description
|
||||||
|
Loading…
Reference in New Issue
Block a user