diff --git a/feedparser.lua b/feedparser.lua index 2d66b8c..93d1c65 100644 --- a/feedparser.lua +++ b/feedparser.lua @@ -9,7 +9,7 @@ local pairs, ipairs = pairs, ipairs -- see http://feedparser.org for details about the Universal Feed Parser local feedparser= { _DESCRIPTION = "RSS and Atom feed parser", - _VERSION = "feedparser 0.71" + _VERSION = "feedparser 0.71b patched" } local blanky = XMLElement.new() --useful in a whole bunch of places @@ -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,30 @@ 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 format_str =='rss' and tag=='websiteUrl' then + if el then + local txt = el:getText() + if txt then + tinsert(entry.links, {websiteUrl = txt}) + end + 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 +347,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() @@ -366,4 +396,4 @@ if _VERSION:sub(-3) < "5.3" then end -return feedparser \ No newline at end of file +return feedparser