chore: build premiere_timestamp using video_type and published time

This commit is contained in:
Fijxu 2026-05-30 15:25:59 -04:00
parent a6d4c488ef
commit 5f9b474ecb
No known key found for this signature in database
GPG Key ID: 32C1DDF333EDA6A4
2 changed files with 18 additions and 14 deletions

View File

@ -129,6 +129,8 @@ module Invidious::Routes::Watch
video_streams = video.video_streams
audio_streams = video.audio_streams
# Videos that are a premiere do not have audio streams.
if video.premiere_timestamp.nil?
# Older videos may not have audio sources available.
# We redirect here so they're not unplayable
if audio_streams.empty? && !video.live_now
@ -142,6 +144,7 @@ module Invidious::Routes::Watch
return env.redirect "/watch?#{env.params.query}"
end
end
end
captions = video.captions

View File

@ -81,10 +81,11 @@ struct Video
end
def premiere_timestamp : Time?
info
.dig?("microformat", "playerMicroformatRenderer", "liveBroadcastDetails", "startTimestamp")
if self.video_type == VideoType::Scheduled
return info["published"]?
.try { |t| Time.parse_rfc3339(t.as_s) }
end
end
def related_videos
info["relatedVideos"]?.try &.as_a.map { |h| h.as_h.transform_values &.as_s } || [] of Hash(String, String)