Merge pull request #4423 from tleydxdy/xml-namespace

Fix pubsub feed parsing
This commit is contained in:
Émilien (perso) 2024-02-12 08:29:44 +01:00 committed by GitHub
commit cf686202e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -407,14 +407,23 @@ module Invidious::Routes::Feeds
end end
spawn do spawn do
rss = XML.parse_html(body) # TODO: unify this with the other almost identical looking parts in this and channels.cr somehow?
rss.xpath_nodes("//feed/entry").each do |entry| namespaces = {
id = entry.xpath_node("videoid").not_nil!.content "yt" => "http://www.youtube.com/xml/schemas/2015",
author = entry.xpath_node("author/name").not_nil!.content "default" => "http://www.w3.org/2005/Atom",
published = Time.parse_rfc3339(entry.xpath_node("published").not_nil!.content) }
updated = Time.parse_rfc3339(entry.xpath_node("updated").not_nil!.content) rss = XML.parse(body)
rss.xpath_nodes("//default:feed/default:entry", namespaces).each do |entry|
id = entry.xpath_node("yt:videoId", namespaces).not_nil!.content
author = entry.xpath_node("default:author/default:name", namespaces).not_nil!.content
published = Time.parse_rfc3339(entry.xpath_node("default:published", namespaces).not_nil!.content)
updated = Time.parse_rfc3339(entry.xpath_node("default:updated", namespaces).not_nil!.content)
begin
video = get_video(id, force_refresh: true) video = get_video(id, force_refresh: true)
rescue
next # skip this video since it raised an exception (e.g. it is a scheduled live event)
end
if CONFIG.enable_user_notifications if CONFIG.enable_user_notifications
# Deliver notifications to `/api/v1/auth/notifications` # Deliver notifications to `/api/v1/auth/notifications`