use mf2py parsed 'alternates'

This commit is contained in:
Kyle Mahan 2015-04-22 22:07:25 +00:00
parent 6a49aa39f5
commit 6761835fa5
2 changed files with 19 additions and 13 deletions

View file

@ -116,13 +116,17 @@ def update_feed(feed_id, content=None, is_polling=True):
if not old:
# set a default value for published if none is provided
entry.published = entry.published or now
new_ids.append(entry.id)
for irt in entry.get_property('in-reply-to', []):
reply_pairs.append((entry.id, irt))
in_reply_tos = entry.get_property('in-reply-to', [])
feed.entries.append(entry)
db.session.commit()
new_ids.append(entry.id)
for irt in in_reply_tos:
reply_pairs.append((entry.id, irt))
elif not is_content_equal(old, entry):
entry.published = entry.published or old.published
in_reply_tos = entry.get_property('in-reply-to', [])
# we're updating an old entriy, use the original
# retrieved time
entry.retrieved = old.retrieved
@ -130,11 +134,13 @@ def update_feed(feed_id, content=None, is_polling=True):
# punt on deleting for now, learn about cascade
# and stuff later
# session.delete(old)
updated_ids.append(entry.id)
for irt in entry.get_property('in-reply-to', []):
reply_pairs.append((entry.id, irt))
feed.entries.append(entry)
db.session.commit()
updated_ids.append(entry.id)
for irt in in_reply_tos:
reply_pairs.append((entry.id, irt))
else:
current_app.logger.debug(
'skipping previously seen post %s', old.permalink)
@ -225,7 +231,9 @@ def notify_feed_updated(app, feed, entry_ids):
"""
from flask import render_template
import flask.ext.login as flask_login
current_app.logger.debug(
'notifying feed updated for entries %r', entry_ids)
entries = Entry.query\
.filter(Entry.id.in_(entry_ids))\
.order_by(Entry.retrieved.desc(),

View file

@ -371,9 +371,9 @@ def find_possible_feeds(origin):
})
elif content_type == 'text/html':
parsed = mf2py.parse(doc=resp.text, url=origin)
# if text/html, then parse and look for h-entries
hfeed = mf2util.interpret_feed(
mf2py.Parser(doc=resp.text).to_dict(), origin)
hfeed = mf2util.interpret_feed(parsed, origin)
if hfeed.get('entries'):
feeds.append({
'origin': origin,
@ -382,13 +382,11 @@ def find_possible_feeds(origin):
})
# then look for link rel="alternate"
soup = bs4.BeautifulSoup(resp.text)
for link in soup.find_all('link', {'rel': 'alternate'}):
for link in parsed.get('alternates', []):
if link.get('type') in xml_feed_types:
feed_url = urllib.parse.urljoin(origin, link.get('href'))
feeds.append({
'origin': origin,
'feed': feed_url,
'feed': link.get('url'),
'type': 'xml',
})
return feeds