forked from midou/invidious
Fix OPML import
This commit is contained in:
parent
99d770be64
commit
60e870b277
@ -105,12 +105,25 @@ struct Invidious::User
|
|||||||
# Youtube
|
# Youtube
|
||||||
# -------------------
|
# -------------------
|
||||||
|
|
||||||
|
private def is_opml?(mimetype : String, extension : String)
|
||||||
|
opml_mimetypes = [
|
||||||
|
"application/xml",
|
||||||
|
"text/xml",
|
||||||
|
"text/x-opml",
|
||||||
|
"text/x-opml+xml",
|
||||||
|
]
|
||||||
|
|
||||||
|
opml_extensions = ["xml", "opml"]
|
||||||
|
|
||||||
|
return opml_mimetypes.any?(&.== mimetype) || opml_extensions.any?(&.== extension)
|
||||||
|
end
|
||||||
|
|
||||||
# Import subscribed channels from Youtube
|
# Import subscribed channels from Youtube
|
||||||
# Returns success status
|
# Returns success status
|
||||||
def from_youtube(user : User, body : String, filename : String, type : String) : Bool
|
def from_youtube(user : User, body : String, filename : String, type : String) : Bool
|
||||||
extension = filename.split(".").last
|
extension = filename.split(".").last
|
||||||
|
|
||||||
if extension == "xml" || type == "application/xml" || type == "text/xml"
|
if is_opml?(type, extension)
|
||||||
subscriptions = XML.parse(body)
|
subscriptions = XML.parse(body)
|
||||||
user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel|
|
user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel|
|
||||||
channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0]
|
channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0]
|
||||||
|
Loading…
Reference in New Issue
Block a user