From fcec088154a445769ad6e525b6a0528ce63775cd Mon Sep 17 00:00:00 2001 From: Fijxu Date: Sat, 31 Oct 2026 18:37:47 -0300 Subject: [PATCH] chore: move FreeTube OPML export to `Invidious::User::Export` module (#6107) --- src/invidious/routes/subscriptions.cr | 20 +------------------- src/invidious/user/exports.cr | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/invidious/routes/subscriptions.cr b/src/invidious/routes/subscriptions.cr index 0c2bda315..fc13058bb 100644 --- a/src/invidious/routes/subscriptions.cr +++ b/src/invidious/routes/subscriptions.cr @@ -96,25 +96,7 @@ module Invidious::Routes::Subscriptions else env.response.content_type = "application/xml" env.response.headers["Content-Disposition"] = "attachment; filename=\"invidious_subscriptions_#{export_time}.opml\"" - - export = XML.build do |xml| - xml.element("opml", version: "1.1") do - xml.element("body") do - title = "Invidious Subscriptions" - - xml.element("outline", text: title, title: title) do - subscriptions.each do |channel| - xml_url = "#{HOST_URL}/feed/channel/#{channel.id}" - - xml.element("outline", text: channel.author, title: channel.author, - "type": "rss", xmlUrl: xml_url) - end - end - end - end - end - - return export.gsub(%(\n), "") + return Invidious::User::Export.to_freetube_opml(subscriptions) end end diff --git a/src/invidious/user/exports.cr b/src/invidious/user/exports.cr index f7bf826e4..d8f3d5385 100644 --- a/src/invidious/user/exports.cr +++ b/src/invidious/user/exports.cr @@ -76,5 +76,26 @@ struct Invidious::User def to_invidious(user : User) Invidious.new(user).to_json end + + def to_freetube_opml(subscriptions : Array(InvidiousChannel)) + export = XML.build do |xml| + xml.element("opml", version: "1.1") do + xml.element("body") do + title = "Invidious Subscriptions" + + xml.element("outline", text: title, title: title) do + subscriptions.each do |channel| + xml_url = "#{HOST_URL}/feed/channel/#{channel.id}" + + xml.element("outline", text: channel.author, title: channel.author, + "type": "rss", xmlUrl: xml_url) + end + end + end + end + end + + export.gsub(%(\n), "") + end end # module end