commit 782e2925d376d4d78382faa4ef477c72de3d8848 Author: Jacek Jendrzej Date: Fri Jun 14 08:45:41 2019 +0200 - fix missing pictures; fix empty titles; add 'media:group' tag diff --git a/feedparser.lua b/feedparser.lua index 2d66b8c..0f55c22 100644 --- a/feedparser.lua +++ b/feedparser.lua @@ -73,7 +73,17 @@ local function parse_entries(entries_el, format_str, base) --content elseif (format_str=='atom' and tag=='content') or (format_str=='rss' and (tag=='body' or tag=='xhtml:body' or tag == 'fullitem' or tag=='content:encoded')) then - entry.content=el:getText() + entry.content=el:getText() + if el.lom and el.lom[2] and el.lom[2][2] and el.lom[2][2][2].attr and el.lom[2][2][2].attr.src then + local img = el.lom[2][2][2].attr.src + if img:match ('(http.-%.jpg)') or img:match ('(http.-%.jpeg)') then + tinsert(entry.enclosures, { + url=img, + length=0, + type="image/jpeg" + }) + end + end --TODO: content_detail --published @@ -111,10 +121,23 @@ local function parse_entries(entries_el, format_str, base) } local author_url = (el:getChild('url') or blanky):getText() if author_url and author_url ~= "" then entry.author_detail.href=resolve(author_url, rebase(el:getChild('url'), el_base)) end - - elseif tag=='category' or tag=='dc:subject' then + elseif format_str =='atom' and tag=='media:group' then + local el_thumb = el:getChild('media:thumbnail') + if el_thumb then + local img = el_thumb:getAttr('url') + tinsert(entry.enclosures, { + url=img, + length=0, + type="image/jpeg" + }) + end + if not entry.summary then + entry.summary=el:getText() + end + elseif tag=='category' then + entry.category = (el:getChild('term') or el):getText() + elseif tag=='dc:subject' then --todo - elseif tag=='source' then --todo end @@ -317,7 +340,7 @@ local function parse_rss(root, base_uri) --image elseif tag=='image' or tag=='rdf:image' then feed.image={ - title=el:getChild('title'):getText(), + title=(el:getChild('title') or blanky):getText(), link=(el:getChild('link') or blanky):getText(), width=(el:getChild('width') or blanky):getText(), height=(el:getChild('height') or blanky):getText()