Fix code broken when extracting data control route

This commit is contained in:
matthewmcgarvey 2022-01-25 19:28:16 -06:00
parent 8ef1e81294
commit df9f897ebe

View file

@ -316,7 +316,7 @@ module Invidious::Routes::PreferencesRoute
body = part.body.gets_to_end body = part.body.gets_to_end
type = part.headers["Content-Type"] type = part.headers["Content-Type"]
return if body.empty? next if body.empty?
# TODO: Unify into single import based on content-type # TODO: Unify into single import based on content-type
case part.name case part.name
@ -349,9 +349,9 @@ module Invidious::Routes::PreferencesRoute
description = item["description"]?.try &.as_s?.try &.delete("\r") description = item["description"]?.try &.as_s?.try &.delete("\r")
privacy = item["privacy"]?.try &.as_s?.try { |privacy| PlaylistPrivacy.parse? privacy } privacy = item["privacy"]?.try &.as_s?.try { |privacy| PlaylistPrivacy.parse? privacy }
return if !title next if !title
return if !description next if !description
return if !privacy next if !privacy
playlist = create_playlist(title, privacy, user) playlist = create_playlist(title, privacy, user)
Invidious::Database::Playlists.update_description(playlist.id, description) Invidious::Database::Playlists.update_description(playlist.id, description)
@ -360,12 +360,12 @@ module Invidious::Routes::PreferencesRoute
raise InfoException.new("Playlist cannot have more than 500 videos") if idx > 500 raise InfoException.new("Playlist cannot have more than 500 videos") if idx > 500
video_id = video_id.try &.as_s? video_id = video_id.try &.as_s?
return if !video_id next if !video_id
begin begin
video = get_video(video_id) video = get_video(video_id)
rescue ex rescue ex
return next
end end
playlist_video = PlaylistVideo.new({ playlist_video = PlaylistVideo.new({
@ -425,12 +425,12 @@ module Invidious::Routes::PreferencesRoute
body = JSON.parse(body) body = JSON.parse(body)
user.subscriptions += body["subscriptions"].as_a.compact_map do |channel| user.subscriptions += body["subscriptions"].as_a.compact_map do |channel|
if match = channel["url"].as_s.match(/\/channel\/(?<channel>UC[a-zA-Z0-9_-]{22})/) if match = channel["url"].as_s.match(/\/channel\/(?<channel>UC[a-zA-Z0-9_-]{22})/)
return match["channel"] next match["channel"]
elsif match = channel["url"].as_s.match(/\/user\/(?<user>.+)/) elsif match = channel["url"].as_s.match(/\/user\/(?<user>.+)/)
response = YT_POOL.client &.get("/user/#{match["user"]}?disable_polymer=1&hl=en&gl=US") response = YT_POOL.client &.get("/user/#{match["user"]}?disable_polymer=1&hl=en&gl=US")
html = XML.parse_html(response.body) html = XML.parse_html(response.body)
ucid = html.xpath_node(%q(//link[@rel="canonical"])).try &.["href"].split("/")[-1] ucid = html.xpath_node(%q(//link[@rel="canonical"])).try &.["href"].split("/")[-1]
return ucid if ucid next ucid if ucid
end end
nil nil