summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRadoslavL <rlelchev@abv.bg>2023-10-09 12:26:38 +0300
committerRadoslavL <rlelchev@abv.bg>2023-10-09 12:26:38 +0300
commitb0b4f09b3a3638a97fd6d7845dad1638e56490ae (patch)
tree9399dfcdaee6e4c0a816d27b27bf500cd3bf4c06
parent48af0af9d5e0ca873fb216e8bf88eadb18428a7e (diff)
downloadinvidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.tar.gz
invidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.tar.bz2
invidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.zip
Seperated the code in a function
-rw-r--r--src/invidious/videos/parser.cr151
1 files changed, 80 insertions, 71 deletions
diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr
index 1b627c62..5444088b 100644
--- a/src/invidious/videos/parser.cr
+++ b/src/invidious/videos/parser.cr
@@ -158,6 +158,85 @@ def try_fetch_streaming_data(id : String, client_config : YoutubeAPI::ClientConf
end
end
+def parse_published_string(item)
+ time_text = item["publishedTimeText"]?
+ time_string = nil
+ if !time_text.nil?
+ time_string = time_text["simpleText"]?
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("minute ago")
+ time = Time.utc.to_unix - 60
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("minutes ago") && !time_string.to_s.starts_with?("Streamed")
+ minutes = time_string.to_s.rchop(" minutes ago").to_i
+ time = Time.utc.to_unix - 60*minutes
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("minutes ago") && time_string.to_s.starts_with?("Streamed")
+ minutes = time_string.to_s.lchop("Streamed ").rchop(" minutes ago").to_i
+ time = Time.utc.to_unix - 60*minutes
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("hour ago")
+ time = Time.utc.to_unix - 3600
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("hours ago") && !time_string.to_s.starts_with?("Streamed")
+ hours = time_string.to_s.rchop(" hours ago").to_i
+ time = Time.utc.to_unix - 3600*hours
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("hours ago") && time_string.to_s.starts_with?("Streamed")
+ hours = time_string.to_s.lchop("Streamed ").rchop(" hours ago").to_i
+ time = Time.utc.to_unix - 3600*hours
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("day ago")
+ time = Time.utc.to_unix - 86400
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("days ago") && !time_string.to_s.starts_with?("Streamed")
+ days = time_string.to_s.rchop(" days ago").to_i
+ time = Time.utc.to_unix - 86400*days
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("days ago") && time_string.to_s.starts_with?("Streamed")
+ days = time_string.to_s.lchop("Streamed ").rchop(" days ago").to_i
+ time = Time.utc.to_unix - 86400*days
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("week ago")
+ time = Time.utc.to_unix - 604800
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("weeks ago") && !time_string.to_s.starts_with?("Streamed")
+ weeks = time_string.to_s.rchop(" weeks ago").to_i
+ time = Time.utc.to_unix - 604800*weeks
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("weeks ago") && time_string.to_s.starts_with?("Streamed")
+ weeks = time_string.to_s.lchop("Streamed ").rchop(" weeks ago").to_i
+ time = Time.utc.to_unix - 604800*weeks
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("month ago")
+ time = Time.utc.to_unix - 2629743
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("months ago") && !time_string.to_s.starts_with?("Streamed")
+ months = time_string.to_s.rchop(" months ago").to_i
+ time = Time.utc.to_unix - 2629743*months
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("months ago") && time_string.to_s.starts_with?("Streamed")
+ months = time_string.to_s.lchop("Streamed ").rchop(" months ago").to_i
+ time = Time.utc.to_unix - 2629743*months
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("year ago")
+ time = Time.utc.to_unix - 31556926
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("years ago") && !time_string.to_s.starts_with?("Streamed")
+ years = time_string.to_s.rchop(" years ago").to_i
+ time = Time.utc.to_unix - 31556926*years
+ end
+ if !time_string.nil? && time_string.to_s.ends_with?("years ago") && time_string.to_s.starts_with?("Streamed")
+ years = time_string.to_s.lchop("Streamed ").rchop(" years ago").to_i
+ time = Time.utc.to_unix - 31556926*years
+ end
+ if time_string.nil?
+ time = nil
+ end
+
+ return time
+end
+
def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any), proxy_region : String? = nil) : Hash(String, JSON::Any)
# Top level elements
@@ -236,77 +315,7 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
.dig?("secondaryResults", "secondaryResults", "results")
secondary_results.try &.as_a.each do |element|
if item = element["compactVideoRenderer"]?
- time_text = item["publishedTimeText"]?
- time_string = nil
- if !time_text.nil?
- time_string = time_text["simpleText"]?
- end
- if !time_string.nil? && time_string.to_s.ends_with?("minute ago")
- time = Time.utc.to_unix - 60
- end
- if !time_string.nil? && time_string.to_s.ends_with?("minutes ago") && !time_string.to_s.starts_with?("Streamed")
- minutes = time_string.to_s.rchop(" minutes ago").to_i
- time = Time.utc.to_unix - 60*minutes
- end
- if !time_string.nil? && time_string.to_s.ends_with?("minutes ago") && time_string.to_s.starts_with?("Streamed")
- minutes = time_string.to_s.lchop("Streamed ").rchop(" minutes ago").to_i
- time = Time.utc.to_unix - 60*minutes
- end
- if !time_string.nil? && time_string.to_s.ends_with?("hour ago")
- time = Time.utc.to_unix - 3600
- end
- if !time_string.nil? && time_string.to_s.ends_with?("hours ago") && !time_string.to_s.starts_with?("Streamed")
- hours = time_string.to_s.rchop(" hours ago").to_i
- time = Time.utc.to_unix - 3600*hours
- end
- if !time_string.nil? && time_string.to_s.ends_with?("hours ago") && time_string.to_s.starts_with?("Streamed")
- hours = time_string.to_s.lchop("Streamed ").rchop(" hours ago").to_i
- time = Time.utc.to_unix - 3600*hours
- end
- if !time_string.nil? && time_string.to_s.ends_with?("day ago")
- time = Time.utc.to_unix - 86400
- end
- if !time_string.nil? && time_string.to_s.ends_with?("days ago") && !time_string.to_s.starts_with?("Streamed")
- days = time_string.to_s.rchop(" days ago").to_i
- time = Time.utc.to_unix - 86400*days
- end
- if !time_string.nil? && time_string.to_s.ends_with?("days ago") && time_string.to_s.starts_with?("Streamed")
- days = time_string.to_s.lchop("Streamed ").rchop(" days ago").to_i
- time = Time.utc.to_unix - 86400*days
- end
- if !time_string.nil? && time_string.to_s.ends_with?("week ago")
- time = Time.utc.to_unix - 604800
- end
- if !time_string.nil? && time_string.to_s.ends_with?("weeks ago") && !time_string.to_s.starts_with?("Streamed")
- weeks = time_string.to_s.rchop(" weeks ago").to_i
- time = Time.utc.to_unix - 604800*weeks
- end
- if !time_string.nil? && time_string.to_s.ends_with?("weeks ago") && time_string.to_s.starts_with?("Streamed")
- weeks = time_string.to_s.lchop("Streamed ").rchop(" weeks ago").to_i
- time = Time.utc.to_unix - 604800*weeks
- end
- if !time_string.nil? && time_string.to_s.ends_with?("month ago")
- time = Time.utc.to_unix - 2629743
- end
- if !time_string.nil? && time_string.to_s.ends_with?("months ago") && !time_string.to_s.starts_with?("Streamed")
- months = time_string.to_s.rchop(" months ago").to_i
- time = Time.utc.to_unix - 2629743*months
- end
- if !time_string.nil? && time_string.to_s.ends_with?("months ago") && time_string.to_s.starts_with?("Streamed")
- months = time_string.to_s.lchop("Streamed ").rchop(" months ago").to_i
- time = Time.utc.to_unix - 2629743*months
- end
- if !time_string.nil? && time_string.to_s.ends_with?("year ago")
- time = Time.utc.to_unix - 31556926
- end
- if !time_string.nil? && time_string.to_s.ends_with?("years ago") && !time_string.to_s.starts_with?("Streamed")
- years = time_string.to_s.rchop(" years ago").to_i
- time = Time.utc.to_unix - 31556926*years
- end
- if !time_string.nil? && time_string.to_s.ends_with?("years ago") && time_string.to_s.starts_with?("Streamed")
- years = time_string.to_s.lchop("Streamed ").rchop(" years ago").to_i
- time = Time.utc.to_unix - 31556926*years
- end
+ time = parse_published_string(item)
published1 = JSON::Any.new(time.to_s)
related_video = parse_related_video(item, published1)
related << JSON::Any.new(related_video) if related_video