From 70acf7c8a36d463470349a872de0ad5e68741779 Mon Sep 17 00:00:00 2001 From: "mk-pmb feat. Emilien Devos" <4016501+unixfox@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:25:00 +0200 Subject: [PATCH] parser: publishDate: Add even more fallbacks. --- src/invidious/videos/parser.cr | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index e1450abd..42ecce38 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -223,6 +223,19 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any published = microformat["publishDate"]? .try { |t| Time.parse(t.as_s, "%Y-%m-%d", Time::Location::UTC) } || Time.utc + if published.nil? + published_txt = video_primary_renderer + .try &.dig?("dateText", "simpleText") + + if published_txt.try &.as_s.includes?("ago") && !published_txt.nil? + published = decode_date(published_txt.as_s.lchop("Started streaming ")) + elsif published_txt && published_txt.try &.as_s.matches?(/(\w{3} \d{1,2}, \d{4})$/) + published = Time.parse(published_txt.as_s.match!(/(\w{3} \d{1,2}, \d{4})$/)[0], "%b %-d, %Y", Time::Location::UTC) + else + published = Time.utc + end + end + premiere_timestamp = microformat.dig?("liveBroadcastDetails", "startTimestamp") .try { |t| Time.parse_rfc3339(t.as_s) }