summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2018-01-19 18:31:47 -0600
committerOmar Roth <omarroth@hotmail.com>2018-01-19 18:31:47 -0600
commit6418d87a63bb121062aab83a30271705d052a31b (patch)
tree3bf4ce571c9c1ab026a7aa5d7f7cc915bd0a0168 /src
parent19309f5ef69e8ad57beb7e8da73f28deeb7f2ced (diff)
downloadinvidious-6418d87a63bb121062aab83a30271705d052a31b.tar.gz
invidious-6418d87a63bb121062aab83a30271705d052a31b.tar.bz2
invidious-6418d87a63bb121062aab83a30271705d052a31b.zip
Add fix for videos that don't have specific keys
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 11636118..0481b026 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -185,20 +185,30 @@ get "/watch" do |env|
next templated "error"
end
- player_response = JSON.parse(video.info["player_response"])
-
+
fmt_stream = [] of HTTP::Params
video.info["url_encoded_fmt_stream_map"].split(",") do |string|
fmt_stream << HTTP::Params.parse(string)
end
-
+
fmt_stream.reverse! # We want lowest quality first
-
+
adaptive_fmts = [] of HTTP::Params
- video.info["adaptive_fmts"].split(",") do |string|
- adaptive_fmts << HTTP::Params.parse(string)
+ if video.info.has_key?("adaptive_fmts")
+ video.info["adaptive_fmts"].split(",") do |string|
+ adaptive_fmts << HTTP::Params.parse(string)
+ 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 = likes ? likes.content.delete(",").to_i : 1
@@ -214,11 +224,6 @@ get "/watch" do |env|
engagement = ((dislikes.to_f + likes.to_f)/views * 100)
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"
end