diff options
| author | RadoslavL <rlelchev@abv.bg> | 2023-10-09 12:26:38 +0300 |
|---|---|---|
| committer | RadoslavL <rlelchev@abv.bg> | 2023-10-09 12:26:38 +0300 |
| commit | b0b4f09b3a3638a97fd6d7845dad1638e56490ae (patch) | |
| tree | 9399dfcdaee6e4c0a816d27b27bf500cd3bf4c06 | |
| parent | 48af0af9d5e0ca873fb216e8bf88eadb18428a7e (diff) | |
| download | invidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.tar.gz invidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.tar.bz2 invidious-b0b4f09b3a3638a97fd6d7845dad1638e56490ae.zip | |
Seperated the code in a function
| -rw-r--r-- | src/invidious/videos/parser.cr | 151 |
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 |
