From 5a38e698413df59589f5ff2c6fb4f7992fb8db5a Mon Sep 17 00:00:00 2001 From: 0x24d Date: Mon, 15 Nov 2021 20:28:06 +0000 Subject: [PATCH] Implement importing Youtube subscriptions from CSV --- src/invidious.cr | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/invidious.cr b/src/invidious.cr index 21a12ff2..7ba8d28c 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +require "csv" require "digest/md5" require "file_utils" require "kemal" @@ -829,11 +830,14 @@ post "/data_control" do |env| user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel| channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0] end - else + elsif body[0] == "{" subscriptions = JSON.parse(body) user.subscriptions += subscriptions.as_a.compact_map do |entry| entry["snippet"]["resourceId"]["channelId"].as_s end + else + subscriptions = CSV.parse(body) + user.subscriptions += subscriptions.compact_map { |entry| entry[0] if entry.size > 0 } end user.subscriptions.uniq!