Skip to content

Commit 3c2f8aa

Browse files
committed
enclosure_tags: set genre=Podcast based on tag. #344
1 parent 46daaba commit 3c2f8aa

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/reader/_app/__init__.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from datetime import datetime
99
from datetime import timedelta
1010
from datetime import timezone
11+
from functools import lru_cache
1112

1213
import flask.signals
1314
import humanize
@@ -800,12 +801,28 @@ def delete_entry(data):
800801
get_reader().delete_entry((feed_url, entry_id))
801802

802803

804+
def get_feed_tag_keys(url):
805+
assert isinstance(url, str), url
806+
807+
if not hasattr(g, 'reader_get_feed_tag_keys'):
808+
809+
@lru_cache(128)
810+
def get(url):
811+
return list(current_app.reader.get_tag_keys(url))
812+
813+
g.reader_get_feed_tag_keys = get
814+
815+
return g.reader_get_feed_tag_keys(url)
816+
817+
803818
# for some reason, @blueprint.app_template_global does not work
804819
@blueprint.app_template_global()
805820
def additional_enclosure_links(enclosure, entry):
806821
funcs = getattr(current_app, 'reader_additional_enclosure_links', ())
822+
# TODO: this would not be needed if entry.feed could have tags on it
823+
feed_tags = get_feed_tag_keys(entry.feed.url)
807824
for func in funcs:
808-
yield from func(enclosure, entry)
825+
yield from func(enclosure, entry, feed_tags)
809826

810827

811828
@blueprint.app_template_global()

src/reader/_plugins/enclosure_tags.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def update_tags(file, tags):
139139
return prefix, out.getvalue() + prefix[offset:]
140140

141141

142-
def enclosure_tags_filter(enclosure, entry):
142+
def enclosure_tags_filter(enclosure, entry, feed_tags):
143143
filename = urlparse(enclosure.href).path.split('/')[-1]
144144
if not filename.endswith('.mp3'):
145145
return []
@@ -152,6 +152,11 @@ def enclosure_tags_filter(enclosure, entry):
152152
if entry.author or entry.feed.author:
153153
args['artist'] = entry.author or entry.feed.author
154154

155+
for tag in feed_tags:
156+
if 'podcast' in tag.lower():
157+
args['genre'] = 'Podcast'
158+
break
159+
155160
return [('with tags', url_for('enclosure_tags.enclosure_tags', **args))]
156161

157162

0 commit comments

Comments
 (0)