diff --git a/src/invidious/compilations.cr b/src/invidious/compilations.cr index 929a5fbd..0315f6ec 100644 --- a/src/invidious/compilations.cr +++ b/src/invidious/compilations.cr @@ -19,7 +19,7 @@ struct CompilationVideo xml.element("yt:videoId") { xml.text self.id } xml.element("yt:channelId") { xml.text self.ucid } xml.element("title") { xml.text self.title } - xml.element("orderIndex") {xml.text self.order_index } + xml.element("orderIndex") { xml.text self.order_index } xml.element("link", rel: "alternate", href: "#{HOST_URL}/watch?v=#{self.id}") xml.element("author") do @@ -263,7 +263,7 @@ def create_compilation(title, privacy, user) index: [] of Int64, first_video_id: "", first_video_starting_timestamp_seconds: 0, - first_video_ending_timestamp_seconds: 0 + first_video_ending_timestamp_seconds: 0, }) Invidious::Database::Compilations.insert(compilation) @@ -273,18 +273,18 @@ end def subscribe_compilation(user, compilation) compilation = InvidiousCompilation.new({ - title: compilation.title.byte_slice(0, 150), - id: compilation.id, - author: user.email, - description: "", # Max 5000 characters - video_count: compilation.video_count, - created: Time.utc, - updated: compilation.updated, - privacy: CompilationPrivacy::Private, - index: [] of Int64, - first_video_id: "", + title: compilation.title.byte_slice(0, 150), + id: compilation.id, + author: user.email, + description: "", # Max 5000 characters + video_count: compilation.video_count, + created: Time.utc, + updated: compilation.updated, + privacy: CompilationPrivacy::Private, + index: [] of Int64, + first_video_id: "", first_video_starting_timestamp_seconds: 0, - first_video_ending_timestamp_seconds: 0 + first_video_ending_timestamp_seconds: 0, }) Invidious::Database::Compilations.insert(compilation) @@ -339,21 +339,21 @@ end def update_first_video_params(compid : String) if compilation = Invidious::Database::Compilations.select(id: compid) compilation_index_array = compilation.index - if (compilation_index_array.size > 0) + if (compilation_index_array.size > 0) first_index = compilation_index_array[0] first_id = Invidious::Database::CompilationVideos.select_id_from_index(first_index) if !first_id.nil? timestamps = Invidious::Database::CompilationVideos.select_timestamps(compid, first_id) if (!timestamps.nil?) - starting_timestamp_seconds=timestamps[0] - ending_timestamp_seconds=timestamps[1] + starting_timestamp_seconds = timestamps[0] + ending_timestamp_seconds = timestamps[1] Invidious::Database::Compilations.update_first_video_params(compid, first_id, starting_timestamp_seconds, ending_timestamp_seconds) end end - end + end else raise NotFoundException.new("Compilation does not exist.") - end + end end def get_compilation_videos(compilation : InvidiousCompilation | Compilation, offset : Int32, video_id = nil) @@ -368,7 +368,7 @@ def get_compilation_videos(compilation : InvidiousCompilation | Compilation, off else if video_id initial_data = YoutubeAPI.next({ - "videoId" => video_id, + "videoId" => video_id, "compilationId" => compilation.id, }) offset = initial_data.dig?("contents", "twoColumnWatchNextResults", "compilation", "compilation", "currentIndex").try &.as_i || offset @@ -441,7 +441,7 @@ def extract_compilation_videos(initial_data : Hash(String, JSON::Any)) published: Time.utc, compid: compid, index: index, - order_index: order_index + order_index: order_index, }) end end diff --git a/src/invidious/database/compilations.cr b/src/invidious/database/compilations.cr index 8c2e00a6..9d82a3eb 100644 --- a/src/invidious/database/compilations.cr +++ b/src/invidious/database/compilations.cr @@ -88,7 +88,7 @@ module Invidious::Database::Compilations SQL PG_DB.exec(request, id, index) - end + end def update_first_video_params(id : String, first_video_id : String, starting_timestamp_seconds : Int32, ending_timestamp_seconds : Int32) request = <<-SQL @@ -100,7 +100,8 @@ module Invidious::Database::Compilations SQL PG_DB.exec(request, id, first_video_id, starting_timestamp_seconds, ending_timestamp_seconds) - end + end + # ------------------- # Select # ------------------- @@ -131,7 +132,7 @@ module Invidious::Database::Compilations SQL PG_DB.query_one?(request, id, as: Array(Int64)) - end + end # ------------------- # Select (filtered) @@ -261,15 +262,13 @@ module Invidious::Database::CompilationVideos end def select_timestamps(compid : String, vid : String) - request = <<-SQL SELECT starting_timestamp_seconds,ending_timestamp_seconds FROM compilation_videos WHERE compid = $1 AND id = $2 LIMIT 1 SQL - return PG_DB.query_one?(request, compid, vid, as: {Int32,Int32}) - + return PG_DB.query_one?(request, compid, vid, as: {Int32, Int32}) end def select_id_from_order_index(order_index : Int32) diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr index 8441ea8f..f4701f74 100644 --- a/src/invidious/helpers/utils.cr +++ b/src/invidious/helpers/utils.cr @@ -38,7 +38,7 @@ def recode_length_seconds(time) if time < 0 return "" elsif time == 0 - return "0:00" + return "0:00" else time = time.seconds text = "#{time.minutes.to_s.rjust(2, '0')}:#{time.seconds.to_s.rjust(2, '0')}" diff --git a/src/invidious/routes/api/v1/authenticated.cr b/src/invidious/routes/api/v1/authenticated.cr index 2846f709..59a380ae 100644 --- a/src/invidious/routes/api/v1/authenticated.cr +++ b/src/invidious/routes/api/v1/authenticated.cr @@ -243,10 +243,10 @@ module Invidious::Routes::API::V1::Authenticated env.response.headers["Location"] = "#{HOST_URL}/api/v1/auth/compilations/#{compilation.id}" env.response.status_code = 201 { - "title" => title, + "title" => title, "compilationId" => compilation.id, }.to_json - end + end def self.create_playlist(env) env.response.content_type = "application/json" diff --git a/src/invidious/routes/api/v1/misc.cr b/src/invidious/routes/api/v1/misc.cr index cf769512..4fdb7074 100644 --- a/src/invidious/routes/api/v1/misc.cr +++ b/src/invidious/routes/api/v1/misc.cr @@ -68,15 +68,14 @@ module Invidious::Routes::API::V1::Misc response = { "compilationHtml" => compilation_html, - "index" => index, - "nextVideo" => next_video, + "index" => index, + "nextVideo" => next_video, }.to_json end response end - # APIv1 currently uses the same logic for both # user playlists and Invidious playlists. This means that we can't # reasonably split them yet. This should be addressed in APIv2 diff --git a/src/invidious/routes/compilations.cr b/src/invidious/routes/compilations.cr index 997e2475..4a8a17ca 100644 --- a/src/invidious/routes/compilations.cr +++ b/src/invidious/routes/compilations.cr @@ -22,7 +22,7 @@ module Invidious::Routes::Compilations user = env.get? "user" sid = env.get? "sid" - referer = get_referer(env) + referer = get_referer(env) return env.redirect "/" if user.nil? @@ -49,7 +49,7 @@ module Invidious::Routes::Compilations if Invidious::Database::Compilations.count_owned_by(user.email) >= 100 return error_template(400, "User cannot have more than 100 compilations.") end - + compilation = create_compilation(title, privacy, user) env.redirect "/compilation?list=#{compilation.id}" @@ -218,7 +218,6 @@ module Invidious::Routes::Compilations return error_template(400, ex) end - if !compid || compid.empty? return error_json(400, "A compilation ID is required") end @@ -245,7 +244,7 @@ module Invidious::Routes::Compilations if !start_timestamp.nil? && !compilation_video[0].id.nil? start_timestamp_seconds = decode_length_seconds(start_timestamp) if !start_timestamp_seconds.nil? - if start_timestamp_seconds >= 0 && start_timestamp_seconds <= compilation_video[0].length_seconds + if start_timestamp_seconds >= 0 && start_timestamp_seconds <= compilation_video[0].length_seconds Invidious::Database::CompilationVideos.update_start_timestamp(compilation_video[0].id, start_timestamp_seconds.to_i) end end @@ -261,14 +260,12 @@ module Invidious::Routes::Compilations end end end - end update_first_video_params(compid) env.redirect "/compilation?list=#{compid}" end - def self.add_compilation_items_page(env) prefs = env.get("preferences").as(Preferences) @@ -314,7 +311,7 @@ module Invidious::Routes::Compilations env.set "add_compilation_items", compid templated "add_compilation_items" - end + end def self.compilation_ajax(env) locale = env.get("preferences").as(Preferences).locale @@ -326,7 +323,7 @@ module Invidious::Routes::Compilations redirect = env.params.query["redirect"]? redirect ||= "true" redirect = redirect == "true" - if !user + if !user if redirect return env.redirect referer else @@ -362,7 +359,7 @@ module Invidious::Routes::Compilations elsif env.params.query["action_move_video_before"]? action = "action_move_video_before" elsif env.params.query["action_move_video_after"]? - action = "action_move_video_after" + action = "action_move_video_after" else return env.redirect referer end @@ -422,7 +419,7 @@ module Invidious::Routes::Compilations compid: compilation_id, live_now: video.live_now, index: Random::Secure.rand(0_i64..Int64::MAX), - order_index: compilation.index.size + order_index: compilation.index.size, }) Invidious::Database::CompilationVideos.insert(compilation_video) @@ -451,7 +448,7 @@ module Invidious::Routes::Compilations compilation_index_array_position = compilation_index_array.index(compilation_video[0].index) if !compilation_index_array_position.nil? compilation_index_array.delete_at(compilation_index_array_position) - compilation_index_array.insert(compilation_index_array_position-1,compilation_video[0].index) + compilation_index_array.insert(compilation_index_array_position - 1, compilation_video[0].index) Invidious::Database::Compilations.move_video_position(compilation_id, compilation_index_array) end update_first_video_params(compilation_id) @@ -473,10 +470,14 @@ module Invidious::Routes::Compilations compilation_index_array_position = compilation_index_array.index(compilation_video[0].index) if !compilation_index_array_position.nil? compilation_index_array.delete_at(compilation_index_array_position) - compilation_index_array.insert(compilation_index_array_position+1,compilation_video[0].index) + if (compilation_index_array_position == compilation_index_array.size) + compilation_index_array.insert(compilation_index_array_position, compilation_video[0].index) + else + compilation_index_array.insert(compilation_index_array_position + 1, compilation_video[0].index) + end Invidious::Database::Compilations.move_video_position(compilation_id, compilation_index_array) end - update_first_video_params(compilation_id) + update_first_video_params(compilation_id) else return error_json(400, "Unsupported action #{action}") end @@ -537,5 +538,5 @@ module Invidious::Routes::Compilations end templated "compilation" - end -end \ No newline at end of file + end +end diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr index bd3245cc..ea71186b 100644 --- a/src/invidious/routes/misc.cr +++ b/src/invidious/routes/misc.cr @@ -28,7 +28,7 @@ module Invidious::Routes::Misc env.redirect "/feed/compilations" else env.redirect "/feed/popular" - end + end else templated "search_homepage", navbar_search: false end diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index 1ba84543..f7529c84 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -41,32 +41,32 @@ module Invidious::Routes::Watch if env.params.query["list"]?.try &.starts_with? "IVPL" plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") continuation = process_continuation(env.params.query, plid, id) - elsif env.params.query["list"]?.try &.starts_with? "IVCMP" + elsif env.params.query["list"]?.try &.starts_with? "IVCMP" compid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") if (!compid.nil?) - index=Invidious::Database::CompilationVideos.select_index(compid,id) - indices_array=Invidious::Database::Compilations.select_index_array(compid) + index = Invidious::Database::CompilationVideos.select_index(compid, id) + indices_array = Invidious::Database::Compilations.select_index_array(compid) if (!indices_array.nil?) - position_of_index=indices_array.index(index) + position_of_index = indices_array.index(index) if (!position_of_index.nil? && position_of_index != indices_array.size - 1) - next_index=indices_array[position_of_index+1] + next_index = indices_array[position_of_index + 1] else - next_index=indices_array[0] - end + next_index = indices_array[0] + end if (!next_index.nil?) - next_id=Invidious::Database::CompilationVideos.select_id_from_index(next_index) + next_id = Invidious::Database::CompilationVideos.select_id_from_index(next_index) if (!next_id.nil?) timestamps = Invidious::Database::CompilationVideos.select_timestamps(compid, next_id) if (!timestamps.nil?) - starting_timestamp_seconds=timestamps[0] - ending_timestamp_seconds=timestamps[1] + starting_timestamp_seconds = timestamps[0] + ending_timestamp_seconds = timestamps[1] end - end - end - end - end + end + end + end + end continuation = process_continuation(env.params.query, compid, id) - end + end nojs = env.params.query["nojs"]? diff --git a/src/invidious/routing.cr b/src/invidious/routing.cr index b5cb0527..a5ee47b9 100644 --- a/src/invidious/routing.cr +++ b/src/invidious/routing.cr @@ -89,7 +89,7 @@ module Invidious::Routing get "/add_compilation_items", Routes::Compilations, :add_compilation_items_page get "/edit_compilation", Routes::Compilations, :edit post "/edit_compilation", Routes::Compilations, :adjust_timestamps - end + end def register_iv_playlist_routes get "/create_playlist", Routes::Playlists, :new diff --git a/src/invidious/search/query.cr b/src/invidious/search/query.cr index de64388e..83e9f597 100644 --- a/src/invidious/search/query.cr +++ b/src/invidious/search/query.cr @@ -81,7 +81,7 @@ module Invidious::Search # string itself (legacy), and the channel is ignored. # @filters, _, @query, _ = Filters.from_legacy_filters(@raw_query) - # + # when .subscriptions?, .regular? if params["sp"]? # Parse the `sp` URL parameter (youtube compatibility)