summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
authorOmar Roth <omarroth@protonmail.com>2019-08-16 15:46:37 -0500
committerOmar Roth <omarroth@protonmail.com>2019-08-16 15:46:59 -0500
commita19cdb5e7251cb5b51d08e0c844119d8267440b3 (patch)
tree4312e45a1094265410ab0d7631a49985ef352d7c /src/invidious.cr
parentf54fbd057ebb8d1e9631782b6d182b403598648f (diff)
downloadinvidious-a19cdb5e7251cb5b51d08e0c844119d8267440b3.tar.gz
invidious-a19cdb5e7251cb5b51d08e0c844119d8267440b3.tar.bz2
invidious-a19cdb5e7251cb5b51d08e0c844119d8267440b3.zip
Fix season playlists
Diffstat (limited to 'src/invidious.cr')
-rw-r--r--src/invidious.cr40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 712a408f..21d6544d 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -3047,8 +3047,7 @@ get "/channel/:ucid" do |env|
item.author
end
end
- items.select! { |item| item.responds_to?(:thumbnail_id) && item.thumbnail_id }
- items = items.map { |item| item.as(SearchPlaylist) }
+ items = items.select { |item| item.is_a?(SearchPlaylist) }.map { |item| item.as(SearchPlaylist) }
items.each { |item| item.author = "" }
else
sort_options = {"newest", "oldest", "popular"}
@@ -5086,6 +5085,43 @@ get "/sb/:id/:storyboard/:index" do |env|
end
end
+get "/s_p/:id/:name" do |env|
+ id = env.params.url["id"]
+ name = env.params.url["name"]
+
+ host = "https://i9.ytimg.com"
+ client = make_client(URI.parse(host))
+ url = env.request.resource
+
+ headers = HTTP::Headers.new
+ REQUEST_HEADERS_WHITELIST.each do |header|
+ if env.request.headers[header]?
+ headers[header] = env.request.headers[header]
+ end
+ end
+
+ begin
+ client.get(url, headers) do |response|
+ env.response.status_code = response.status_code
+ response.headers.each do |key, value|
+ if !RESPONSE_HEADERS_BLACKLIST.includes? key
+ env.response.headers[key] = value
+ end
+ end
+
+ env.response.headers["Access-Control-Allow-Origin"] = "*"
+
+ if response.status_code >= 300 && response.status_code != 404
+ env.response.headers.delete("Transfer-Encoding")
+ break
+ end
+
+ proxy_file(response, env)
+ end
+ rescue ex
+ end
+end
+
get "/vi/:id/:name" do |env|
id = env.params.url["id"]
name = env.params.url["name"]