mirror of https://gitlab.com/bashrc2/epicyon
Same date format as rss
parent
32e3d3bd28
commit
098932440c
58
newswire.py
58
newswire.py
|
@ -101,11 +101,69 @@ def xml2StrToDict(xmlStr: str, moderated: bool) -> {}:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def atomFeedToDict(xmlStr: str, moderated: bool) -> {}:
|
||||||
|
"""Converts an atom feed string to a dictionary
|
||||||
|
"""
|
||||||
|
if '<entry>' not in xmlStr:
|
||||||
|
return {}
|
||||||
|
result = {}
|
||||||
|
rssItems = xmlStr.split('<entry>')
|
||||||
|
for rssItem in rssItems:
|
||||||
|
if '<title>' not in rssItem:
|
||||||
|
continue
|
||||||
|
if '</title>' not in rssItem:
|
||||||
|
continue
|
||||||
|
if '<link>' not in rssItem:
|
||||||
|
continue
|
||||||
|
if '</link>' not in rssItem:
|
||||||
|
continue
|
||||||
|
if '<updated>' not in rssItem:
|
||||||
|
continue
|
||||||
|
if '</updated>' not in rssItem:
|
||||||
|
continue
|
||||||
|
title = rssItem.split('<title>')[1]
|
||||||
|
title = title.split('</title>')[0]
|
||||||
|
description = ''
|
||||||
|
if '<summary>' in rssItem and '</summary>' in rssItem:
|
||||||
|
description = rssItem.split('<summary>')[1]
|
||||||
|
description = description.split('</summary>')[0]
|
||||||
|
link = rssItem.split('<link>')[1]
|
||||||
|
link = link.split('</link>')[0]
|
||||||
|
pubDate = rssItem.split('<updated>')[1]
|
||||||
|
pubDate = pubDate.split('</updated>')[0]
|
||||||
|
parsed = False
|
||||||
|
try:
|
||||||
|
publishedDate = \
|
||||||
|
datetime.strptime(pubDate, "%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
publishedDate = publishedDate.replace('Z', '')
|
||||||
|
publishedDate = publishedDate.replace('T', ' ') + '+00:00'
|
||||||
|
postFilename = ''
|
||||||
|
votesStatus = []
|
||||||
|
result[str(publishedDate)] = [title, link,
|
||||||
|
votesStatus, postFilename,
|
||||||
|
description, moderated]
|
||||||
|
parsed = True
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
if not parsed:
|
||||||
|
try:
|
||||||
|
publishedDate = \
|
||||||
|
datetime.strptime(pubDate, "%a, %d %b %Y %H:%M:%S UT")
|
||||||
|
result[str(publishedDate) + '+00:00'] = [title, link]
|
||||||
|
parsed = True
|
||||||
|
except BaseException:
|
||||||
|
print('WARN: unrecognized atom feed date format: ' + pubDate)
|
||||||
|
pass
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def xmlStrToDict(xmlStr: str, moderated: bool) -> {}:
|
def xmlStrToDict(xmlStr: str, moderated: bool) -> {}:
|
||||||
"""Converts an xml string to a dictionary
|
"""Converts an xml string to a dictionary
|
||||||
"""
|
"""
|
||||||
if 'rss version="2.0"' in xmlStr:
|
if 'rss version="2.0"' in xmlStr:
|
||||||
return xml2StrToDict(xmlStr, moderated)
|
return xml2StrToDict(xmlStr, moderated)
|
||||||
|
elif 'xmlns="http://www.w3.org/2005/Atom"' in xmlStr:
|
||||||
|
return atomFeedToDict(xmlStr, moderated)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue