use mf2py parsed 'alternates'
This commit is contained in:
parent
6a49aa39f5
commit
6761835fa5
2 changed files with 19 additions and 13 deletions
|
@ -116,13 +116,17 @@ def update_feed(feed_id, content=None, is_polling=True):
|
||||||
if not old:
|
if not old:
|
||||||
# set a default value for published if none is provided
|
# set a default value for published if none is provided
|
||||||
entry.published = entry.published or now
|
entry.published = entry.published or now
|
||||||
new_ids.append(entry.id)
|
in_reply_tos = entry.get_property('in-reply-to', [])
|
||||||
for irt in entry.get_property('in-reply-to', []):
|
|
||||||
reply_pairs.append((entry.id, irt))
|
|
||||||
feed.entries.append(entry)
|
feed.entries.append(entry)
|
||||||
db.session.commit()
|
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):
|
elif not is_content_equal(old, entry):
|
||||||
entry.published = entry.published or old.published
|
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
|
# we're updating an old entriy, use the original
|
||||||
# retrieved time
|
# retrieved time
|
||||||
entry.retrieved = old.retrieved
|
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
|
# punt on deleting for now, learn about cascade
|
||||||
# and stuff later
|
# and stuff later
|
||||||
# session.delete(old)
|
# 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)
|
feed.entries.append(entry)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
updated_ids.append(entry.id)
|
||||||
|
for irt in in_reply_tos:
|
||||||
|
reply_pairs.append((entry.id, irt))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
current_app.logger.debug(
|
current_app.logger.debug(
|
||||||
'skipping previously seen post %s', old.permalink)
|
'skipping previously seen post %s', old.permalink)
|
||||||
|
@ -225,7 +231,9 @@ def notify_feed_updated(app, feed, entry_ids):
|
||||||
"""
|
"""
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
import flask.ext.login as flask_login
|
import flask.ext.login as flask_login
|
||||||
|
current_app.logger.debug(
|
||||||
|
'notifying feed updated for entries %r', entry_ids)
|
||||||
|
|
||||||
entries = Entry.query\
|
entries = Entry.query\
|
||||||
.filter(Entry.id.in_(entry_ids))\
|
.filter(Entry.id.in_(entry_ids))\
|
||||||
.order_by(Entry.retrieved.desc(),
|
.order_by(Entry.retrieved.desc(),
|
||||||
|
|
|
@ -371,9 +371,9 @@ def find_possible_feeds(origin):
|
||||||
})
|
})
|
||||||
|
|
||||||
elif content_type == 'text/html':
|
elif content_type == 'text/html':
|
||||||
|
parsed = mf2py.parse(doc=resp.text, url=origin)
|
||||||
# if text/html, then parse and look for h-entries
|
# if text/html, then parse and look for h-entries
|
||||||
hfeed = mf2util.interpret_feed(
|
hfeed = mf2util.interpret_feed(parsed, origin)
|
||||||
mf2py.Parser(doc=resp.text).to_dict(), origin)
|
|
||||||
if hfeed.get('entries'):
|
if hfeed.get('entries'):
|
||||||
feeds.append({
|
feeds.append({
|
||||||
'origin': origin,
|
'origin': origin,
|
||||||
|
@ -382,13 +382,11 @@ def find_possible_feeds(origin):
|
||||||
})
|
})
|
||||||
|
|
||||||
# then look for link rel="alternate"
|
# then look for link rel="alternate"
|
||||||
soup = bs4.BeautifulSoup(resp.text)
|
for link in parsed.get('alternates', []):
|
||||||
for link in soup.find_all('link', {'rel': 'alternate'}):
|
|
||||||
if link.get('type') in xml_feed_types:
|
if link.get('type') in xml_feed_types:
|
||||||
feed_url = urllib.parse.urljoin(origin, link.get('href'))
|
|
||||||
feeds.append({
|
feeds.append({
|
||||||
'origin': origin,
|
'origin': origin,
|
||||||
'feed': feed_url,
|
'feed': link.get('url'),
|
||||||
'type': 'xml',
|
'type': 'xml',
|
||||||
})
|
})
|
||||||
return feeds
|
return feeds
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue