From 30a8198f1795bc9e1adb9b05c28d0b09da41a8c7 Mon Sep 17 00:00:00 2001 From: Kyle Mahan Date: Tue, 12 May 2015 09:21:24 -0700 Subject: [PATCH] fetch other h-feeds from rel="feed" property --- woodwind/templates/select-feed.jinja2 | 1 + woodwind/views.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/woodwind/templates/select-feed.jinja2 b/woodwind/templates/select-feed.jinja2 index 5ad3ceb..7490f85 100644 --- a/woodwind/templates/select-feed.jinja2 +++ b/woodwind/templates/select-feed.jinja2 @@ -9,6 +9,7 @@

diff --git a/woodwind/views.py b/woodwind/views.py index af3e9dd..edd9399 100644 --- a/woodwind/views.py +++ b/woodwind/views.py @@ -367,6 +367,7 @@ def find_possible_feeds(origin): 'origin': origin, 'feed': origin, 'type': 'xml', + 'title': 'untitled xml feed', }) elif content_type == 'text/html': @@ -374,12 +375,26 @@ def find_possible_feeds(origin): # if text/html, then parse and look for h-entries hfeed = mf2util.interpret_feed(parsed, origin) if hfeed.get('entries'): + ftitle = hfeed.get('name') or 'untitled h-feed' feeds.append({ 'origin': origin, 'feed': resp.url, 'type': 'html', + 'title': ftitle[:140] }) + # look for link="feed" + for furl, fprops in parsed.get('rel-urls', {}).items(): + if 'feed' in fprops.get('rels', []) and ( + not fprops.get('type') + or fprops.get('type') == 'text/html'): + feeds.append({ + 'origin': origin, + 'feed': furl, + 'type': 'html', + 'title': fprops.get('title'), + }) + # then look for link rel="alternate" for link in parsed.get('alternates', []): if link.get('type') in xml_feed_types: @@ -387,6 +402,7 @@ def find_possible_feeds(origin): 'origin': origin, 'feed': link.get('url'), 'type': 'xml', + 'title': link.get('title'), }) return feeds