; ================================================= ; RSS News Bot v1.2 - by entropy 2020 ; ================================================= menu channel,status,query,menubar { - RSS News Bot v1.2 .$iif(%_rsschan && %_rssnet,Turn $iif($group(#rss).status == on,Off,On)) { $iif($group(#rss).status == on,.disable,.enable) #rss if ($group(#rss).status == off) { if ($network == %_rssnet) { .timerrss off } echo 4 -a * RSS Feed is now Off unset %_rsslast } else { if ($network == %_rssnet) { newnews | .timerrss 0 600 newnews } echo 4 -a * RSS Feed is now On } } .- .Network $chr(9) %_rssnet { %_rssnet = $input(Network for RSS?,5) } .Channel(s) $chr(9) %_rsschan { %_rsschan = $input(Channel for RSS? $+ $crlf $+ Or for multiple channels $+ $chr(44) seperated with comma $+ $crlf $+ And for all channels: $chr(35),5) } .- .Unload { .unload -rs $qt($script) } - } on *:unload:{ unset %_rssnet %_rsschan %_rsslast | .timerrss off | echo 4 -a * RSS News feed is now unloaded! } #rss off on *:join:%_rsschan:{ if ($network == %_rssnet && $nick == $me) { newnews | .timerrss 0 600 newnews } } on *:kick:%_rsschan:{ if ($network == %_rssnet && $knick == $me) { .timerrss off } } on *:part:%_rsschan:{ if ($network == %_rssnet && $nick == $me) { .timerrss off } } on *:quit:{ if ($network == %_rssnet && $nick == $me) { .timerrss off } } #rss end alias -l newnews { sockclose news sockopen news rss.cnn.com 80 } on *:sockopen:news:{ if ($sockerr) { return } sockwrite -n $sockname GET http://rss.cnn.com/rss/cnn_topstories.rss HTTP/1.1 sockwrite -n $sockname Host: rss.cnn.com sockwrite -n $sockname User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0 sockwrite -n $sockname Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 sockwrite -n $sockname Accept-Language: en-US,en;q=0.5 sockwrite -n $sockname $str($crlf,2) } on *:sockread:news:{ if ($sockerr) { return } var %a sockread -f %a tokenize 32 $replace(%a,<,$+($chr(32),<),>,$+(>,$chr(32))) if (* href="http://pubsubhubbub.appspot.com/" * iswm $1-) { var %a = $findtok($1-,href="http://pubsubhubbub.appspot.com/",1,32), %b = $findtok($1-,medium="image",1,32) var %string = $gettok($1-,$+(%a,-,%b),32) %string = $remove($replace(%string,href="http://pubsubhubbub.appspot.com/" /> <item> <title>,$c,]]> </title> <link>,$chr(32) $c),<![CDATA[) var %a = $findtok($1-,<pubDate>,1,32), %b = $findtok($1-,</pubDate>,1,32) var %pubdate = $nohtml($gettok($1-,$+(%a,-,%b),32)) var %link = http://rss.cnn.com/rss/cnn_topstories var %a = $findtok(%string,<title>,1,32), %b = $findtok(%string,</title>,1,32) var %title = $gettok($remove($nohtml($gettok(%string,$+(%a,-,%b),32)),]]>),1,9679) var %a = $findtok(%string,<description>,1,32), %b = $findtok(%string,</description>,1,32) var %desc = $remove($nohtml($gettok(%string,$+(%a,-,%b),32)),<div class="feedflare">) var %main = [News/World] $c Time: %pubdate $c Title: %title $iif(%desc !isnum,$c Description: %desc) $c Link: %link sockclose $sockname if (%_rsslast != %title || !%_rsslast) { var %a = 1 while ($scon(%a)) { scid $v1 if ($network == %_rssnet) { var %x = 1, %y while ($chan(%x)) { %y = $v1 if (%y == %_rsschan || $istok(%_rsschan,%y,44) || %_rsschan == $chr(35)) { msg %y %main } inc %x } break } inc %a } scid -r %_rsslast = %title } } } alias -l nohtml { return $regsubex($1, /<[^>]+(?:>|$)|^[^<>]+>/g,) } alias -l c { return $chr(9679) }
July 19th, 2020 - By: westor |
![]() ![]() I think you have to rename the snippet as CNN RSS News Bot because it is only working for CNN |
July 20th, 2020 - By: westor |
![]() ![]() Change this line (i think it breaks the code): --> sockwrite -n $sockname GET http://rss.cnn.com/rss/cnn_topstories.rss HTTP/1.1 To: --> sockwrite -n $sockname GET /rss/cnn_topstories.rss HTTP/1.1 |