diff options
| -rw-r--r-- | src/invidious.cr | 15 | ||||
| -rw-r--r-- | src/invidious/views/data_control.ecr | 7 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index 07f135d0..5d1b1797 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -1002,6 +1002,21 @@ post "/data_control" do |env| end end end + when "import_freetube" + body.scan(/"channelId":"(?<channel_id>[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) + + begin + client = make_client(YT_URL) + get_channel(ucid, client, PG_DB, false, false) + rescue ex + next + end + end + end when "import_newpipe_subscriptions" body = JSON.parse(body) body["subscriptions"].as_a.each do |channel| diff --git a/src/invidious/views/data_control.ecr b/src/invidious/views/data_control.ecr index be896f86..97e4fafd 100644 --- a/src/invidious/views/data_control.ecr +++ b/src/invidious/views/data_control.ecr @@ -19,6 +19,11 @@ </div> <div class="pure-control-group"> + <label for="import_freetube">Import Freetube subscriptions (.db)</label> + <input type="file" id="import_freetube" name="import_freetube"> + </div> + + <div class="pure-control-group"> <label for="import_newpipe_subscriptions">Import NewPipe subscriptions (.json)</label> <input type="file" id="import_newpipe_subscriptions" name="import_newpipe_subscriptions"> </div> @@ -39,7 +44,7 @@ </div> <div class="pure-control-group"> - <a href="/subscription_manager?action_takeout=1&format=newpipe">Export subscriptions as OPML (NewPipe)</a> + <a href="/subscription_manager?action_takeout=1&format=newpipe">Export subscriptions as OPML (for NewPipe & FreeTube)</a> </div> <div class="pure-control-group"> |
