Feat: User supplied po_token and visitor_data

This commit is contained in:
Fijxu
2024-10-10 17:43:18 -03:00
parent d61043edea
commit 8dc0a67be3
10 changed files with 83 additions and 26 deletions

View File

@@ -294,7 +294,7 @@ struct Video
predicate_bool upcoming, isUpcoming
end
def get_video(id, refresh = true, region = nil, force_refresh = false)
def get_video(id, refresh = true, region = nil, force_refresh = false, po_token = "", visitor_data = "")
if (video = Invidious::Database::Videos.select(id)) && !region
# If record was last updated over 10 minutes ago, or video has since premiered,
# refresh (expire param in response lasts for 6 hours)
@@ -304,7 +304,7 @@ def get_video(id, refresh = true, region = nil, force_refresh = false)
force_refresh ||
video.schema_version != Video::SCHEMA_VERSION # cache control
begin
video = fetch_video(id, region)
video = fetch_video(id, region, po_token, visitor_data)
Invidious::Database::Videos.insert(video)
rescue ex
Invidious::Database::Videos.delete(id)
@@ -312,7 +312,7 @@ def get_video(id, refresh = true, region = nil, force_refresh = false)
end
end
else
video = fetch_video(id, region)
video = fetch_video(id, region, po_token, visitor_data)
Invidious::Database::Videos.insert(video) if !region
end
@@ -320,11 +320,11 @@ def get_video(id, refresh = true, region = nil, force_refresh = false)
rescue DB::Error
# Avoid common `DB::PoolRetryAttemptsExceeded` error and friends
# Note: All DB errors inherit from `DB::Error`
return fetch_video(id, region)
return fetch_video(id, region, po_token, visitor_data)
end
def fetch_video(id, region)
info = extract_video_info(video_id: id)
def fetch_video(id, region, po_token, visitor_data)
info = extract_video_info(video_id: id, po_token: po_token, visitor_data: visitor_data)
if reason = info["reason"]?
if reason == "Video unavailable"