Logic Machine Forum
RSS feed - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Visualization (https://forum.logicmachine.net/forumdisplay.php?fid=9)
+--- Thread: RSS feed (/showthread.php?tid=1181)



RSS feed - Daponte - 19.01.2018

Hi,

I need to read the following RSS news link https://www.20minutos.es/rss/ourense/
and represent in visualization, can someone help me?



RE: RSS feed - Toms - 22.01.2018

(19.01.2018, 08:10)Daponte Wrote: Hi,

I need to read the following RSS news link https://www.20minutos.es/rss/ourense/
and represent in visualization, can someone help me?

Hi Daponte,


this one works for us 

Code:
require('socket.http')

socket.http.TIMEOUT = 15

local data = socket.http.request('http://www.rtlnieuws.nl/service/rss/nederland/index.xml')
--log(data)

itemtag = false
result = {}

-- callback for tag start � -- create new storage in result table for each <item> tag
function starttag(parser, tag)
 if tag == 'item' then
   itemtag = true
   table.insert(result, {})
 end
 currtag = tag
end

-- callback for tag end
function endtag(p, tag)
 if tag == 'item' then
   itemtag = false
 end
 currtag = nil
end

-- callback for character data
function cdata(parser, text)-- check if parser is inside of <item> and either in <title> or <description>
 if itemtag and currtag then
   if currtag == 'title' then
     result[ #result ].title = text
   elseif currtag == 'description' then
     result[ #result ].description = text
   end
 end
end

-- create parser
lxp = require('lxp')
parser = lxp.new({
   StartElement = starttag,
 EndElement = endtag,
   CharacterData = cdata,
 })

-- sample data
ldata = [[
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>RSS Title</title>
<description>This is an example of an RSS feed</description>
<link>http://www.example.com/main.html</link>
<lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
<pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
<ttl>1800</ttl>

<item>
� <title>Example entry</title>
� <description>Here is some text containing an interesting description.</description>
� <link>http://www.example.com/blog/post/1</link>
� <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
� <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>

<item>
� <title>Another example entry</title>
� <description>Here is some other text containing an interesting description.</description>
� <link>http://www.example.com/blog/post/1</link>
� <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
� <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>
</channel>
</rss>
]]

if parser:parse(data) then
--log(result)
else
 log('parse failed')
end

if true == true then
 grp.update('6/1/11', (result[1].title))
 os.sleep(4)
 grp.update('6/1/11', (result[1].description))
 os.sleep(9)
 grp.update('6/1/11', (result[2].title))
 os.sleep(4)
 grp.update('6/1/11', (result[2].description))  
 os.sleep(9)
 grp.update('6/1/11', (result[3].title))
 os.sleep(4)
 grp.update('6/1/11', (result[3].description))
 os.sleep(9)
 grp.update('6/1/11', (result[4].title))
 os.sleep(4)
 grp.update('6/1/11', (result[4].description))
 os.sleep(9)
 grp.update('6/1/11', (result[5].title))
 os.sleep(4)
 grp.update('6/1/11', (result[5].description))
end



RE: RSS feed - Daponte - 22.01.2018

(22.01.2018, 10:24)Toms thank you very much Wrote:
(19.01.2018, 08:10)Daponte Wrote: Hi,

I need to read the following RSS news link https://www.20minutos.es/rss/ourense/
and represent in visualization, can someone help me?

Hi Daponte,


this one works for us 

Code:
require('socket.http')

socket.http.TIMEOUT = 15

local data = socket.http.request('http://www.rtlnieuws.nl/service/rss/nederland/index.xml')
--log(data)

itemtag = false
result = {}

-- callback for tag start � -- create new storage in result table for each <item> tag
function starttag(parser, tag)
 if tag == 'item' then
   itemtag = true
   table.insert(result, {})
 end
 currtag = tag
end

-- callback for tag end
function endtag(p, tag)
 if tag == 'item' then
   itemtag = false
 end
 currtag = nil
end

-- callback for character data
function cdata(parser, text)-- check if parser is inside of <item> and either in <title> or <description>
 if itemtag and currtag then
   if currtag == 'title' then
     result[ #result ].title = text
   elseif currtag == 'description' then
     result[ #result ].description = text
   end
 end
end

-- create parser
lxp = require('lxp')
parser = lxp.new({
   StartElement = starttag,
 EndElement = endtag,
   CharacterData = cdata,
 })

-- sample data
ldata = [[
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>RSS Title</title>
<description>This is an example of an RSS feed</description>
<link>http://www.example.com/main.html</link>
<lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
<pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
<ttl>1800</ttl>

<item>
� <title>Example entry</title>
� <description>Here is some text containing an interesting description.</description>
� <link>http://www.example.com/blog/post/1</link>
� <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
� <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>

<item>
� <title>Another example entry</title>
� <description>Here is some other text containing an interesting description.</description>
� <link>http://www.example.com/blog/post/1</link>
� <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
� <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>
</channel>
</rss>
]]

if parser:parse(data) then
--log(result)
else
 log('parse failed')
end

if true == true then
 grp.update('6/1/11', (result[1].title))
 os.sleep(4)
 grp.update('6/1/11', (result[1].description))
 os.sleep(9)
 grp.update('6/1/11', (result[2].title))
 os.sleep(4)
 grp.update('6/1/11', (result[2].description))  
 os.sleep(9)
 grp.update('6/1/11', (result[3].title))
 os.sleep(4)
 grp.update('6/1/11', (result[3].description))
 os.sleep(9)
 grp.update('6/1/11', (result[4].title))
 os.sleep(4)
 grp.update('6/1/11', (result[4].description))
 os.sleep(9)
 grp.update('6/1/11', (result[5].title))
 os.sleep(4)
 grp.update('6/1/11', (result[5].description))
end

thank you very much