aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/FeedSinkPlugin.py
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2023-09-11 12:07:23 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2023-09-11 12:07:23 +0300
commit1314bd01eb67d9935021327faab736a858854e32 (patch)
treee8768156de92df906af816fa0d97e30ef314d053 /plugins/FeedSinkPlugin.py
parent51b5e6ae4d294b6ee8ca1824c8077dbb7e6be47b (diff)
Improve image handling
Diffstat (limited to 'plugins/FeedSinkPlugin.py')
-rw-r--r--plugins/FeedSinkPlugin.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/plugins/FeedSinkPlugin.py b/plugins/FeedSinkPlugin.py
index f126b6d..6785a28 100644
--- a/plugins/FeedSinkPlugin.py
+++ b/plugins/FeedSinkPlugin.py
@@ -20,16 +20,41 @@ class Plugin(PluginInterface):
print(f"[FeedSinkPlugin#{self.id}] feed will be served at path /{self.feed_id}")
def build_xml(self, items: list[Item]):
- rss = ET.Element("rss", {"version": "2.0"})
+ rss = ET.Element(
+ "rss", {"version": "2.0", "xmlns:media": "http://search.yahoo.com/mrss/"}
+ )
channel = ET.SubElement(rss, "channel")
title = ET.SubElement(channel, "title")
title.text = self.feed_title
+
if self.feed_link is not None:
link = ET.SubElement(channel, "link")
link.text = self.feed_link
+ favicon_url = f"https://www.google.com/s2/favicons?domain={self.feed_link}"
+ else:
+ favicon_url = None
+
description = ET.SubElement(channel, "description")
description.text = self.feed_description
+ # TODO favicons
+ # <image>
+ # <link>https://www.aaniwalli.fi/</link>
+ # <url>
+ # https://www.google.com/s2/favicons?domain=https://www.aaniwalli.fi
+ # </url>
+ # <title>Ääniwalli</title>
+ # </image>
+
+ if favicon_url is not None:
+ favicon_image_elem = ET.SubElement(channel, "image")
+ favicon_link_elem = ET.SubElement(favicon_image_elem, "link")
+ favicon_link_elem.text = self.feed_link
+ favicon_url_elem = ET.SubElement(favicon_image_elem, "url")
+ favicon_url_elem.text = favicon_url
+ favicon_title_elem = ET.SubElement(favicon_image_elem, "title")
+ favicon_title_elem.text = self.feed_title
+
for item in items:
item_elem = ET.SubElement(channel, "item")
if item.title is not None:
@@ -63,6 +88,11 @@ class Plugin(PluginInterface):
)
item_guid.text = item.guid.value
+ if item.media_content is not None:
+ item_media_content = ET.SubElement(item_elem, "media:content")
+ item_media_content.set("url", item.media_content.url)
+ item_media_content.set("medium", item.media_content.medium)
+
for enc in item.enclosures:
ET.SubElement(
item_elem,