Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.66 KB | None | 0 0
  1. on *:TEXT:!rss:#~RadioAalto~: { loadrsshist | rsscfg }
  2. alias rss { loadrsshist | rsscfg }
  3. alias closersshist { window -c @rss.hist | window -c @rss.performance }
  4. alias reloadrsshist { closersshist | loadrsshist }
  5. alias rsscfg {
  6. var %time = $ticks
  7. var %lcv2 = 0
  8. var %lcv = 1
  9. var %lines = $lines(rss.cfg)
  10. unset %list
  11. while (%lcv <= %lines) {
  12. if ($read(rss.cfg,%lcv)) {
  13. bunset &line
  14. bset -t &line 1 $read(rss.cfg,%lcv)
  15. if ($regex(RSS,$bvar(&line,1,$bvar(&line,0)).text,<(.+)>(.+)</.+>)) {
  16. bunset &rss. $+ $regml(RSS,1)
  17. bset -t &rss. $+ $regml(RSS,1) 1 $regml(RSS,2)
  18. }
  19. elseif ($regex(RSS,$bvar(&line,1,$bvar(&line,0)).text,</item>)) {
  20. rsstimer $bvar(&rss.feed,1,$bvar(&rss.feed,0)).text $bvar(&rss.host,1,$bvar(&rss.host,0)).text $bvar(&rss.file,1,$bvar(&rss.file,0)).text $bvar(&rss.channel,1,$bvar(&rss.channel,0)).text $bvar(&rss.feeds,1,$bvar(&rss.feeds,0)).text $bvar(&rss.interval,1,$bvar(&rss.interval,0)).text
  21. set %list %list $replacex($bvar(&rss.feed,1,$bvar(&rss.feed,0)).text,&,&,",",&nbsp;,$chr(32),&color;,,&bold;,,&underline,)
  22. bunset &line &rss.*
  23. inc %Lcv2
  24. }
  25. }
  26. inc %lcv
  27. }
  28. if ($window(@rss.performance)) {
  29. aline @rss.performance ---
  30. aline @rss.performance Parsed %lcv Config Lines ( $+ %lcv2 rss entries) (rss.cfg) in $calc(($ticks - %time)/1000) Seconds
  31. }
  32. }
  33. alias rsstimer {
  34. ;$1 = feed name
  35. ;$2 = host
  36. ;$3 = file
  37. ;$4 = channel
  38. ;$5 = max
  39. ;$6 = interval
  40. showrss $1 $2 $3 $4 $5
  41. .timerrss. $+ $1 0 $6 showrss $1 $2 $3 $4 $5
  42. }
  43. alias showrss {
  44. ;$1 = feed name
  45. ;$2 = host
  46. ;$3 = file
  47. ;$4 = channel
  48. ;$5 = max
  49. set %time. $+ $1 $ticks
  50. .remove " $+ $1 $+ .rss $+ "
  51. getrss $1 $2 $3 $replace($1 $+ .rss,$chr(32),_) parserss $replace($1 $+ .rss,$chr(32),_) $1 $4 $5
  52. }
  53. alias getrss {
  54. ;$1 = feed name
  55. ;$2 = host
  56. ;$3 = file
  57. ;$4 = save
  58. ;$5- = done
  59. set %rss. $+ $1 $+ .file $3
  60. set %rss. $+ $1 $+ .host $2
  61. set %rss. $+ $1 $+ .save $4
  62. set %rss. $+ $1 $+ .done $5-
  63. sockopen rss. $+ $1 $2 80
  64. }
  65. on *:SOCKOPEN:rss.*:{
  66. sockwrite -tn $sockname GET % [ $+ [ $sockname $+ .file ] ] HTTP/1.1
  67. sockwrite -tn $sockname Host: % [ $+ [ $sockname $+ .host ] ]
  68. sockwrite -tn $sockname Accept: *.*, */*
  69. sockwrite -tn $sockname Connection: close
  70. sockwrite -tn $sockname $crlf
  71. }
  72. on *:sockclose:rss.*:{ fixrss % [ $+ [ $sockname $+ .save ] ] | % [ $+ [ $sockname $+ .done ] ] | unset % $+ $sockname $+ .* }
  73. on *:sockread:rss.*:{
  74. if ($sockerr) { echo 1 -a ERROR | return }
  75. if (% [ $+ [ $sockname $+ .status ] ] != downloading) {
  76. var %1 | sockread %1 | tokenize 32 %1
  77. if ($1 == HTTP/1.1) { if ($2 != 200 && $2 != 206) { echo 1 -a ERROR } }
  78. elseif ($1 == Content-Range:) { set % [ $+ [ $sockname $+ .size ] ] $gettok($3,-1,47) }
  79. elseif ($1 == Content-Type:) { return }
  80. elseif (!$1) {
  81. set % [ $+ [ $sockname $+ .status ] ] Downloading
  82. return
  83. }
  84. }
  85. else {
  86. var %1 = % [ $+ [ $sockname $+ .save ] ]
  87. :sockread
  88. sockread &1
  89. if (!$sockbr) { return }
  90. bwrite $+(",%1,") -1 &1
  91. unset % [ $+ [ $sockname $+ .resume ] ]
  92. }
  93. }
  94.  
  95. alias fixrss {
  96. ;$1 = rss file
  97. var %file = $1
  98. bread $1 0 $file($1).size &file
  99. breplace &file 10 32 13 32
  100. write -c $1
  101. var %lcv = 1
  102. var %size = $bvar(&file,0)
  103. while (%lcv <= %size) {
  104. parserss2 $1 $bvar(&file,%lcv,500).text
  105. inc %lcv 500
  106. }
  107. }
  108.  
  109. alias parserss {
  110. ;$1 = rss file
  111. ;$2 = feed name
  112. ;$3 = channel
  113. ;$4 = max
  114. var %time = $ticks | var %lcv = 1 | var %lcv2 = 0 | var %lines = $file($1).size
  115. bread $1 0 %lines &file1
  116. while ((%lcv <= %lines) && (%lcv2 < $4)) { bunset &line | bcopy -c &line 1 &file1 %lcv $calc($iif($bfind(&file1,%lcv,$crlf),$bfind(&file1,%lcv,$crlf),$calc(%lines + 1)) - %lcv) | var %lcv = $calc($iif($bfind(&file1,%lcv,$crlf),$bfind(&file1,%lcv,$crlf),$calc(%lines + 1)) + 2)
  117. if (($bvar(&line,0) < 300) && ($regex(RSS,$bvar(&line,1,$bvar(&line,0)).text,<(.+)>(.+)</.+>))) { if (($regml(RSS,1)) && ($regml(RSS,2))) { bunset &rss. $+ $gettok($regml(RSS,1),1,32) | bset -t &rss. $+ $gettok($regml(RSS,1),1,32) 1 $regml(RSS,2) } }
  118. elseif (($bvar(&line,0) < 300) && ($regex(RSS,$bvar(&line,1,$bvar(&line,0)).text,\<\/item\>))) { checkalreadyrss $3 [[ $+ $2 $+ ]] $+ $bvar(&rss.title,1,$bvar(&rss.title,0)).text $+ ( $bvar(&rss.link,1,$bvar(&rss.link,0)).text ) | inc %lcv2 | bunset &line &rss.* }
  119. }
  120. if ($window(@rss.performance)) {
  121. aline @rss.performance ---
  122. aline @rss.performance Parsed %lcv Bytes ( $+ %lcv2 rss entries) ( $+ $1 $+ ) in $calc(($ticks - %time)/1000) Seconds
  123. }
  124. if (%time. [ $+ [ $2 ] ]) { if ($window(@rss.performance)) {
  125. aline @rss.performance Downloaded and Parsed %lcv Bytes ( $+ %lcv2 rss entries) ( $+ $1 $+ ) in $calc(($ticks - %time. [ $+ [ $2 ] ] )/1000) Seconds } | unset %time. $+ $2 } }
  126.  
  127. alias addrss {
  128. ;$1 = feed name
  129. ;$2 = host
  130. ;$3 = file
  131. ;$4 = channel
  132. ;$5 = max
  133. ;$6 = interval
  134. write rss.cfg <item>
  135. write rss.cfg $chr(32) $+ $chr(32) $+ <feed> $+ $1 $+ </feed>
  136. write rss.cfg $chr(32) $+ $chr(32) $+ <host> $+ $2 $+ </host>
  137. write rss.cfg $chr(32) $+ $chr(32) $+ <file> $+ $3 $+ </file>
  138. write rss.cfg $chr(32) $+ $chr(32) $+ <channel> $+ $4 $+ </channel>
  139. write rss.cfg $chr(32) $+ $chr(32) $+ <feeds> $+ $5 $+ </feeds>
  140. write rss.cfg $chr(32) $+ $chr(32) $+ <interval> $+ $6 $+ </interval>
  141. write rss.cfg </item>
  142. rsstimer $1 $2 $3 $4 $5 $6
  143. }
  144. on *:TEXT:!rehashrss:#rss: {
  145. timerrss.* off
  146. rsscfg
  147. }
  148. alias rehashrss {
  149. timerrss.* off
  150. rsscfg
  151. }
  152. on *:TEXT:!rssoff:#rss: {
  153. timerrss.* off
  154. closersshist
  155. }
  156. alias rssoff {
  157. timerrss.* off
  158. closersshist
  159. }
  160. on 100:TEXT:!addrss * * * * * *:{ addrss $2 $3 $4 $5 $6 $7 }
  161. alias checkalreadyrss {
  162. if (sponsored isin $1-) { goto done }
  163. if ($file(rss.hist.tmp)) { .remove rss.hist.tmp }
  164. filter -ffc rss.hist rss.hist.tmp * $+ $strip($1-) $+ *
  165. if ($file(rss.hist.tmp)) { .remove rss.hist.tmp }
  166. if ($filtered > 0) { goto done }
  167. write rss.hist $strip($1-)
  168. ; if (!$window(@rss.hist)) { echo 4 -a $nopath($script) $+ : ERROR: no history loaded... (try /loadrsshist) | halt }
  169. ; aline @rss.hist $strip($1-)
  170. msg $replacex($1-,&,&,",",&nbsp;,$chr(32),&color;,,,&underline,)
  171. :done
  172. }
  173. alias loadrsshist {
  174. if (!$file(rss.hist).size) { write rss.hist History File }
  175. ; .window -k0lh @rss.hist
  176. ; .loadbuf @rss.hist rss.hist
  177. ; .window -k0 @rss.performance
  178. }
  179. alias parserss2 {
  180. ;$1 = File
  181. ;$2- = XML data
  182. var %file = $1
  183. ;[Code by FiberOPtics] Thanks.. :P
  184. var %a, %b = $regsub($2-,/(?<=>)(?=s*<)/g,$lf,%a)
  185. tokenize 10 %a
  186. ;[/Code by FiberOPtics]
  187. var %lcv = 1
  188. while (%lcv <= $0) {
  189. bset -t &tmp $calc($bvar(&tmp,0) +1) $ [ $+ [ %lcv ] ] $+ $crlf
  190. inc %lcv
  191. }
  192. bwrite %file -1 $calc($bvar(&tmp,0) -2) &tmp
  193. bunset &tmp
  194. }
  195. on *:TEXT:!rsslist:#rss:{ msg $chan I syndicate the following: | msg $chan %list }
  196. alias rsslist { msg $chan I syndicate the following: | msg $chan %list }
  197.  
  198. on *:TEXT:!show *:#rss: {
  199. if ($2) {
  200. %rssin = $replace($2-,$, )
  201. %rssinput = * $+ %rssin $+ *
  202. if (%rssin isin %list) {
  203. while $read(rss.hist, w, %rssinput) != $null {
  204. write -dw * $+ $2- $+ * rss.hist
  205. }
  206. rehashrss
  207. }
  208. else {
  209. msg # Sorry, I do not syndicate that feed.
  210. }
  211. }
  212. else {
  213. msg # What feed would you like to see?
  214. rsslist
  215. }
  216. }
  217.  
  218. on *:JOIN:#RSS: {
  219. notice $nick Welcome to #RSS! I will be delivering the news here. Say "!help" to get started.
  220. }
  221.  
  222. on *:TEXT:!help:#RSS: {
  223. msg # To see a list of feeds use "!rsslist"
  224. msg # To check for any updates use "!rehashrss"
  225. msg # To view a specific feed use "!show <feed>"
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement