Add fix for videos that don't have specific keys

This commit is contained in:
Omar Roth 2018-01-19 18:31:47 -06:00
parent 19309f5ef6
commit 6418d87a63

View File

@ -185,7 +185,6 @@ get "/watch" do |env|
next templated "error" next templated "error"
end end
player_response = JSON.parse(video.info["player_response"])
fmt_stream = [] of HTTP::Params fmt_stream = [] of HTTP::Params
video.info["url_encoded_fmt_stream_map"].split(",") do |string| video.info["url_encoded_fmt_stream_map"].split(",") do |string|
@ -195,10 +194,21 @@ get "/watch" do |env|
fmt_stream.reverse! # We want lowest quality first fmt_stream.reverse! # We want lowest quality first
adaptive_fmts = [] of HTTP::Params adaptive_fmts = [] of HTTP::Params
video.info["adaptive_fmts"].split(",") do |string| if video.info.has_key?("adaptive_fmts")
adaptive_fmts << HTTP::Params.parse(string) video.info["adaptive_fmts"].split(",") do |string|
adaptive_fmts << HTTP::Params.parse(string)
end
end end
rvs = [] of Hash(String, String)
if video.info.has_key?("rvs")
video.info["rvs"].split(",").each do |rv|
rvs << HTTP::Params.parse(rv).to_h
end
end
player_response = JSON.parse(video.info["player_response"])
likes = video.html.xpath_node(%q(//button[@title="I like this"]/span)) likes = video.html.xpath_node(%q(//button[@title="I like this"]/span))
likes = likes ? likes.content.delete(",").to_i : 1 likes = likes ? likes.content.delete(",").to_i : 1
@ -214,11 +224,6 @@ get "/watch" do |env|
engagement = ((dislikes.to_f + likes.to_f)/views * 100) engagement = ((dislikes.to_f + likes.to_f)/views * 100)
calculated_rating = (likes.to_f/(likes.to_f + dislikes.to_f) * 4 + 1) calculated_rating = (likes.to_f/(likes.to_f + dislikes.to_f) * 4 + 1)
rvs = [] of Hash(String, String)
video.info["rvs"].split(",").each do |rv|
rvs << HTTP::Params.parse(rv).to_h
end
templated "watch" templated "watch"
end end