diff --git a/src/invidious.cr b/src/invidious.cr index 07f135d0e..5d1b1797a 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -991,6 +991,21 @@ post "/data_control" do |env| subscriptions.xpath_nodes(%q(//outline[@type="rss"])).each do |channel| ucid = channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0] + if !user.subscriptions.includes? ucid + PG_DB.exec("UPDATE users SET subscriptions = array_append(subscriptions,$1) WHERE id = $2", ucid, user.id) + + begin + client = make_client(YT_URL) + get_channel(ucid, client, PG_DB, false, false) + rescue ex + next + end + end + end + when "import_freetube" + body.scan(/"channelId":"(?[a-zA-Z0-9_-]{24})"/).each do |md| + ucid = md["channel_id"] + if !user.subscriptions.includes? ucid PG_DB.exec("UPDATE users SET subscriptions = array_append(subscriptions,$1) WHERE id = $2", ucid, user.id) diff --git a/src/invidious/views/data_control.ecr b/src/invidious/views/data_control.ecr index be896f860..97e4fafdf 100644 --- a/src/invidious/views/data_control.ecr +++ b/src/invidious/views/data_control.ecr @@ -18,6 +18,11 @@ +
+ + +
+
@@ -39,7 +44,7 @@
- Export subscriptions as OPML (NewPipe) + Export subscriptions as OPML (for NewPipe & FreeTube)