parent
ff5c7feb63
commit
cf49cfea2c
1 changed files with 17 additions and 10 deletions
|
@ -316,21 +316,28 @@ def subscribe():
|
||||||
|
|
||||||
def add_subscription(origin, feed_url, type, tags=None):
|
def add_subscription(origin, feed_url, type, tags=None):
|
||||||
feed = Feed.query.filter_by(feed=feed_url, type=type).first()
|
feed = Feed.query.filter_by(feed=feed_url, type=type).first()
|
||||||
|
|
||||||
if not feed:
|
if not feed:
|
||||||
|
name = None
|
||||||
if type == 'html':
|
if type == 'html':
|
||||||
flask.current_app.logger.debug('mf2py parsing %s', feed_url)
|
flask.current_app.logger.debug('mf2py parsing %s', feed_url)
|
||||||
parsed = mf2util.interpret_feed(
|
parsed = mf2util.interpret_feed(
|
||||||
mf2py.Parser(url=feed_url).to_dict(), feed_url)
|
mf2py.Parser(url=feed_url).to_dict(), feed_url)
|
||||||
name = parsed.get('name')
|
name = parsed.get('name')
|
||||||
if not name or len(name) > 140:
|
|
||||||
p = urllib.parse.urlparse(origin)
|
|
||||||
name = p.netloc + p.path
|
|
||||||
feed = Feed(name=name, origin=origin, feed=feed_url, type=type)
|
|
||||||
elif type == 'xml':
|
elif type == 'xml':
|
||||||
flask.current_app.logger.debug('feedparser parsing %s', feed_url)
|
flask.current_app.logger.debug('feedparser parsing %s', feed_url)
|
||||||
parsed = feedparser.parse(feed_url)
|
parsed = feedparser.parse(feed_url)
|
||||||
feed = Feed(name=parsed.feed and parsed.feed.title,
|
if parsed.feed:
|
||||||
origin=origin, feed=feed_url, type=type)
|
name = parsed.feed.get('title')
|
||||||
|
else:
|
||||||
|
flask.current_app.logger.error('unknown feed type %s', type)
|
||||||
|
flask.abort(400)
|
||||||
|
|
||||||
|
if not name:
|
||||||
|
p = urllib.parse.urlparse(origin)
|
||||||
|
name = p.netloc + p.path
|
||||||
|
feed = Feed(name=name, origin=origin, feed=feed_url, type=type)
|
||||||
|
|
||||||
if feed:
|
if feed:
|
||||||
db.session.add(feed)
|
db.session.add(feed)
|
||||||
|
|
||||||
|
@ -386,10 +393,9 @@ def find_possible_feeds(origin):
|
||||||
})
|
})
|
||||||
|
|
||||||
# look for link="feed"
|
# look for link="feed"
|
||||||
for furl, fprops in parsed.get('rel-urls', {}).items():
|
for furl in parsed.get('rels', {}).get('feed', []):
|
||||||
if 'feed' in fprops.get('rels', []) and (
|
fprops = parsed.get('rel-urls', {}).get(furl, {})
|
||||||
not fprops.get('type')
|
if not fprops.get('type') or fprops.get('type') == 'text/html':
|
||||||
or fprops.get('type') == 'text/html'):
|
|
||||||
feeds.append({
|
feeds.append({
|
||||||
'origin': origin,
|
'origin': origin,
|
||||||
'feed': furl,
|
'feed': furl,
|
||||||
|
@ -406,6 +412,7 @@ def find_possible_feeds(origin):
|
||||||
'type': 'xml',
|
'type': 'xml',
|
||||||
'title': link.get('title'),
|
'title': link.get('title'),
|
||||||
})
|
})
|
||||||
|
|
||||||
return feeds
|
return feeds
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue