summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious/helpers/serialized_yt_data.cr14
-rw-r--r--src/invidious/routes/feeds.cr7
-rw-r--r--src/invidious/yt_backend/extractors.cr40
3 files changed, 58 insertions, 3 deletions
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index 463d5557..c0ca789e 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -13,6 +13,13 @@ struct SearchVideo
property premium : Bool
property premiere_timestamp : Time?
property author_verified : Bool
+ property is_new : Bool
+ property is_4k : Bool
+ property is_8k : Bool
+ property is_vr180 : Bool
+ property is_vr360 : Bool
+ property is_3d : Bool
+ property has_captions : Bool
def to_xml(auto_generated, query_params, xml : XML::Builder)
query_params["v"] = self.id
@@ -95,6 +102,13 @@ struct SearchVideo
if self.premiere_timestamp
json.field "premiereTimestamp", self.premiere_timestamp.try &.to_unix
end
+ json.field "isNew", self.is_new
+ json.field "is4k", self.is_4k
+ json.field "is8k", self.is_8k
+ json.field "isVR180", is_vr180
+ json.field "isVR360", is_vr360
+ json.field "is3d", is_3d
+ json.field "hasCaptions", self.has_captions
end
end
diff --git a/src/invidious/routes/feeds.cr b/src/invidious/routes/feeds.cr
index e20a7139..b76aeb46 100644
--- a/src/invidious/routes/feeds.cr
+++ b/src/invidious/routes/feeds.cr
@@ -197,6 +197,13 @@ module Invidious::Routes::Feeds
premium: false,
premiere_timestamp: nil,
author_verified: false,
+ is_new: false,
+ is_4k: false,
+ is_8k: false,
+ is_vr180: false,
+ is_vr360: false,
+ is_3d: false,
+ has_captions: false,
})
end
diff --git a/src/invidious/yt_backend/extractors.cr b/src/invidious/yt_backend/extractors.cr
index 38dc2c04..48c2155b 100644
--- a/src/invidious/yt_backend/extractors.cr
+++ b/src/invidious/yt_backend/extractors.cr
@@ -110,6 +110,13 @@ private module Parsers
live_now = false
premium = false
+ is_new = false
+ is_4k = false
+ is_8k = false
+ is_vr180 = false
+ is_vr360 = false
+ is_3d = false
+ has_captions = false
premiere_timestamp = item_contents.dig?("upcomingEventData", "startTime").try { |t| Time.unix(t.as_s.to_i64) }
@@ -118,12 +125,25 @@ private module Parsers
case b["label"].as_s
when "LIVE NOW"
live_now = true
- when "New", "4K", "CC"
- # TODO
+ when "New"
+ is_new = true
+ when "4K"
+ is_4k = true
+ when "8K"
+ is_8k = true
+ when "VR180"
+ is_vr180 = true
+ when "360°"
+ is_vr360 = true
+ when "3D"
+ is_3d = true
+ when "CC"
+ has_captions = true
when "Premium"
# TODO: Potentially available as item_contents["topStandaloneBadge"]["metadataBadgeRenderer"]
premium = true
- else nil # Ignore
+ else # Ignore
+ puts b["label"].as_s
end
end
@@ -140,6 +160,13 @@ private module Parsers
premium: premium,
premiere_timestamp: premiere_timestamp,
author_verified: author_verified,
+ is_new: is_new,
+ is_4k: is_4k,
+ is_8k: is_8k,
+ is_vr180: is_vr180,
+ is_vr360: is_vr360,
+ is_3d: is_3d,
+ has_captions: has_captions,
})
end
@@ -567,6 +594,13 @@ private module Parsers
premium: false,
premiere_timestamp: Time.unix(0),
author_verified: false,
+ is_new: false,
+ is_4k: false,
+ is_8k: false,
+ is_vr180: false,
+ is_vr360: false,
+ is_3d: false,
+ has_captions: false,
})
end