mirror of https://github.com/iv-org/invidious.git
Improve playback statistics
This commit is contained in:
parent
9e8baa3539
commit
6a88c098f0
|
@ -27,6 +27,12 @@ class Invidious::Jobs::StatisticsRefreshJob < Invidious::Jobs::BaseJob
|
||||||
"playback" => {} of String => Int64 | Float64,
|
"playback" => {} of String => Int64 | Float64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Latches the playback success stats from before statistics gets refreshed
|
||||||
|
# Used to ensure that the object won't get reset back to an empty object
|
||||||
|
LATCHED_PLAYBACK_STATS = {
|
||||||
|
"playback" => {} of String => Int64 | Float64,
|
||||||
|
}
|
||||||
|
|
||||||
private getter db : DB::Database
|
private getter db : DB::Database
|
||||||
|
|
||||||
def initialize(@db, @software_config : Hash(String, String))
|
def initialize(@db, @software_config : Hash(String, String))
|
||||||
|
@ -65,6 +71,7 @@ class Invidious::Jobs::StatisticsRefreshJob < Invidious::Jobs::BaseJob
|
||||||
}
|
}
|
||||||
|
|
||||||
# Reset playback requests tracker
|
# Reset playback requests tracker
|
||||||
|
LATCHED_PLAYBACK_STATS["playback"] = STATISTICS["playback"].as(Hash(String, Int64 | Float64))
|
||||||
STATISTICS["playback"] = {} of String => Int64 | Float64
|
STATISTICS["playback"] = {} of String => Int64 | Float64
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -19,6 +19,8 @@ module Invidious::Routes::API::V1::Misc
|
||||||
else
|
else
|
||||||
tracker["ratio"] = (success_count / (total_requests)).round(2)
|
tracker["ratio"] = (success_count / (total_requests)).round(2)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
return (Invidious::Jobs::StatisticsRefreshJob::STATISTICS.merge Invidious::Jobs::StatisticsRefreshJob::LATCHED_PLAYBACK_STATS).to_json
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,14 @@ def extract_video_info(video_id : String, proxy_region : String? = nil)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
reason = nil
|
reason = nil
|
||||||
|
|
||||||
|
# Although technically not a call to /videoplayback, because we are counting requests
|
||||||
|
# in which YouTube returned a "this content is not available" video as a failure,
|
||||||
|
# we should also count requests that returned the correct video as a success
|
||||||
|
# in order to ensure a correct and accurate ratio
|
||||||
|
playback_stats = get_playback_statistic()
|
||||||
|
playback_stats["totalRequests"] += 1
|
||||||
|
playback_stats["successfulRequests"] += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
# Don't fetch the next endpoint if the video is unavailable.
|
# Don't fetch the next endpoint if the video is unavailable.
|
||||||
|
|
Loading…
Reference in New Issue