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,17 +129,20 @@ module Invidious::Routes::Watch
video_streams = video.video_streams
audio_streams = video.audio_streams
# Older videos may not have audio sources available.
# We redirect here so they're not unplayable
if audio_streams.empty? && !video.live_now
if params.quality == "dash"
env.params.query.delete_all("quality")
env.params.query["quality"] = "medium"
return env.redirect "/watch?#{env.params.query}"
elsif params.listen
env.params.query.delete_all("listen")
env.params.query["listen"] = "0"
return env.redirect "/watch?#{env.params.query}"
# 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
if params.quality == "dash"
env.params.query.delete_all("quality")
env.params.query["quality"] = "medium"
return env.redirect "/watch?#{env.params.query}"
elsif params.listen
env.params.query.delete_all("listen")
env.params.query["listen"] = "0"
return env.redirect "/watch?#{env.params.query}"
end
end
end

View File

@ -81,9 +81,10 @@ struct Video
end
def premiere_timestamp : Time?
info
.dig?("microformat", "playerMicroformatRenderer", "liveBroadcastDetails", "startTimestamp")
.try { |t| Time.parse_rfc3339(t.as_s) }
if self.video_type == VideoType::Scheduled
return info["published"]?
.try { |t| Time.parse_rfc3339(t.as_s) }
end
end
def related_videos