diff --git a/src/invidious/database/users.cr b/src/invidious/database/users.cr index a9512816..78b17f69 100644 --- a/src/invidious/database/users.cr +++ b/src/invidious/database/users.cr @@ -79,6 +79,16 @@ module Invidious::Database::Users PG_DB.exec(request, user.email) end + def get_watched(user : User) + request = <<-SQL + SELECT watched + from users + where email = $1 + SQL + + PG_DB.query_one?(request, user.email, &.read(Array(JSON::Any))) + end + # ------------------- # Update (channels) # ------------------- diff --git a/src/invidious/routes/embed.cr b/src/invidious/routes/embed.cr index 00f24159..f6065fd8 100644 --- a/src/invidious/routes/embed.cr +++ b/src/invidious/routes/embed.cr @@ -124,7 +124,7 @@ module Invidious::Routes::Embed user = env.get?("user").try &.as(User) if user subscriptions = user.subscriptions - watched = user.watched + # watched = user.watched notifications = user.notifications end subscriptions ||= [] of String diff --git a/src/invidious/routes/feeds.cr b/src/invidious/routes/feeds.cr index a43301c5..51f766a5 100644 --- a/src/invidious/routes/feeds.cr +++ b/src/invidious/routes/feeds.cr @@ -123,15 +123,17 @@ module Invidious::Routes::Feeds end user = user.as(User) + watched = Invidious::Database::Users.get_watched(user) max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE) max_results ||= user.preferences.max_results max_results ||= CONFIG.default_user_preferences.max_results - if user.watched[(page - 1) * max_results]? - watched = user.watched.reverse[(page - 1) * max_results, max_results] - end - watched ||= [] of String + # TODO: History!! + # if user.watched[(page - 1) * max_results]? + # watched = user.watched.reverse[(page - 1) * max_results, max_results] + # end + # watched ||= [] of String # Used for pagination links base_url = "/feed/history" diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index 0d014ba0..c09483b2 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -43,7 +43,7 @@ module Invidious::Routes::Watch user = env.get?("user").try &.as(User) if user subscriptions = user.subscriptions - watched = user.watched + # watched = user.watched notifications = user.notifications end subscriptions ||= [] of String @@ -74,7 +74,7 @@ module Invidious::Routes::Watch "author" => JSON::Any.new(video.author) }) - if watched && preferences.watch_history + if preferences.watch_history Invidious::Database::Users.mark_watched(user.as(User), history_details) end diff --git a/src/invidious/routes/xd.xml b/src/invidious/routes/xd.xml new file mode 100644 index 00000000..40a7f962 --- /dev/null +++ b/src/invidious/routes/xd.xml @@ -0,0 +1,22 @@ + + + + + YouTube video feed + 2024-12-18T23:19:42.357314923+00:00 + + yt:video:YYBivfsnwIU + YYBivfsnwIU + + UCn8n_wDeUDrdDMQfoElZlfw + How To Make Silicone Tray Liners For the HARVESTRIGHT FREEZE DRYER #siliconetrayliners + \x0A + \x0A + TheFreeze Drying Community + https://www.youtube.com/channel/UCn8n_wDeUDrdDMQfoElZlfw + + + 2021-02-07T14:00:17+00:00\x0A 2024-12-18T23:19:42.357314923+00:00 + \x0A + + \ No newline at end of file diff --git a/src/invidious/user/exports.cr b/src/invidious/user/exports.cr index b52503c9..266ea1f1 100644 --- a/src/invidious/user/exports.cr +++ b/src/invidious/user/exports.cr @@ -8,7 +8,7 @@ struct Invidious::User return JSON.build do |json| json.object do json.field "subscriptions", user.subscriptions - json.field "watch_history", user.watched + # json.field "watch_history", user.watched json.field "preferences", user.preferences json.field "playlists" do json.array do diff --git a/src/invidious/user/imports.cr b/src/invidious/user/imports.cr index 533c18d9..704a8cab 100644 --- a/src/invidious/user/imports.cr +++ b/src/invidious/user/imports.cr @@ -100,11 +100,11 @@ struct Invidious::User Invidious::Database::Users.update_subscriptions(user) end - if data["watch_history"]? - user.watched += data["watch_history"].as_a.map(&.as_s) - user.watched.reverse!.uniq!.reverse! - Invidious::Database::Users.update_watch_history(user) - end + # if data["watch_history"]? + # user.watched += data["watch_history"].as_a.map(&.as_s) + # user.watched.reverse!.uniq!.reverse! + # Invidious::Database::Users.update_watch_history(user) + # end if data["preferences"]? user.preferences = Preferences.from_json(data["preferences"].to_json) @@ -219,23 +219,23 @@ struct Invidious::User end def from_youtube_wh(user : User, body : String, filename : String, type : String) : Bool - extension = filename.split(".").last + # extension = filename.split(".").last - if extension == "json" || type == "application/json" - data = JSON.parse(body) - watched = data.as_a.compact_map do |item| - next unless url = item["titleUrl"]? - next unless match = url.as_s.match(/\?v=(?[a-zA-Z0-9_-]+)$/) - match["video_id"] - end - watched.reverse! # YouTube have newest first - user.watched += watched - user.watched.uniq! - Invidious::Database::Users.update_watch_history(user) - return true - else + # if extension == "json" || type == "application/json" + # data = JSON.parse(body) + # watched = data.as_a.compact_map do |item| + # next unless url = item["titleUrl"]? + # next unless match = url.as_s.match(/\?v=(?[a-zA-Z0-9_-]+)$/) + # match["video_id"] + # end + # watched.reverse! # YouTube have newest first + # user.watched += watched + # user.watched.uniq! + # Invidious::Database::Users.update_watch_history(user) + # return true + # else return false - end + # end end # ------------------- @@ -310,11 +310,11 @@ struct Invidious::User db = DB.open("sqlite3://" + tempfile.path) - user.watched += db.query_all("SELECT url FROM streams", as: String) - .map(&.lchop("https://www.youtube.com/watch?v=")) + # user.watched += db.query_all("SELECT url FROM streams", as: String) + # .map(&.lchop("https://www.youtube.com/watch?v=")) - user.watched.uniq! - Invidious::Database::Users.update_watch_history(user) + # user.watched.uniq! + # Invidious::Database::Users.update_watch_history(user) user.subscriptions += db.query_all("SELECT url FROM subscriptions", as: String) .map(&.lchop("https://www.youtube.com/channel/")) diff --git a/src/invidious/user/user.cr b/src/invidious/user/user.cr index a6d05fd1..c0e74de0 100644 --- a/src/invidious/user/user.cr +++ b/src/invidious/user/user.cr @@ -12,7 +12,7 @@ struct Invidious::User property preferences : Preferences property password : String? property token : String - property watched : Array(String) + # property watched : Array(String) property feed_needs_update : Bool? module PreferencesConverter diff --git a/src/invidious/views/components/item.ecr b/src/invidious/views/components/item.ecr index 6d227cfc..e542b83e 100644 --- a/src/invidious/views/components/item.ecr +++ b/src/invidious/views/components/item.ecr @@ -1,6 +1,6 @@ <%- thin_mode = env.get("preferences").as(Preferences).thin_mode - item_watched = !item.is_a?(SearchChannel | SearchHashtag | SearchPlaylist | InvidiousPlaylist | Category) && env.get?("user").try &.as(User).watched.index(item.id) != nil + # item_watched = !item.is_a?(SearchChannel | SearchHashtag | SearchPlaylist | InvidiousPlaylist | Category) && env.get?("user").try &.as(User).watched.index(item.id) != nil author_verified = item.responds_to?(:author_verified) && item.author_verified -%> @@ -117,10 +117,10 @@ - <% if item_watched %> + <% #if item_watched %>
- <% end %> + <% #end %>
<%- else -%>
diff --git a/src/invidious/views/feeds/history.ecr b/src/invidious/views/feeds/history.ecr index bda4e1f3..cb4afb75 100644 --- a/src/invidious/views/feeds/history.ecr +++ b/src/invidious/views/feeds/history.ecr @@ -4,7 +4,7 @@
-

<%= translate_count(locale, "generic_videos_count", user.watched.size, NumberFormatting::HtmlSpan) %>

+

<%= translate_count(locale, "generic_videos_count", watched.size, NumberFormatting::HtmlSpan) %>