You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
65 lines
2.3 KiB
commit 782e2925d376d4d78382faa4ef477c72de3d8848
|
|
Author: Jacek Jendrzej <overx300@gmail.com>
|
|
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()
|
|
|