יוצר: ZxoR
תיאור: אחרי שראיתי שNix התחיל לבנות כזה, אמרתי "למה לא" ובניתי גם אחד. זה מתחבר ל10 אתרי חדשות, מאוד נחמד, 'די' מעוצב... עם דיאלוג לבחירת ערוצי חדשות...
דרישות: נבדק על מירק 6.31
תמונה:
*ישנם כנראה כמה באגים בקריאת HTML, אני צריך אבל שידווחו לי על זה, אחרת אני לא ידע לתקן, זה עניין של זמן*
*בוט זה מתאים גם לQuakenet*
בקשר לעיצוב: הוא ראשוני, אני יעשה משהו יפה יותר ונוח לקריאה יותר ואולי גם אפשרות לשנות עיצוב דרך הדיאלוג.
קוד: בחר הכל
alias -l zn.walla {
var %sockname = zn.news. $+ $ticks
sockopen %sockname rss.walla.co.il 80
sockmark %sockname walla
}
alias -l zn.ynet {
var %sockname = zn.news. $+ $ticks
sockopen %sockname www.ynet.co.il 80
sockmark %sockname ynet
}
alias -l zn.hnn {
var %sockname = zn.news. $+ $ticks
sockopen %sockname www.hnn.co.il 80
sockmark %sockname hnn
}
alias -l zn.iba {
var %sockname = zn.news. $+ $ticks
sockopen %sockname www.iba.org.il 80
sockmark %sockname iba
}
alias -l zn.rotter {
var %sockname = zn.news. $+ $ticks
sockopen %sockname rotter.net 80
sockmark %sockname rotter
}
alias -l zn.nrg {
var %sockname = zn.news. $+ $ticks
sockopen %sockname rss.nrg.co.il 80
sockmark %sockname nrg
}
alias -l zn.nana {
var %sockname = zn.news. $+ $ticks
sockopen %sockname news.nana10.co.il 80
sockmark %sockname nana
}
alias -l zn.mako {
var %sockname = zn.news. $+ $ticks
sockopen %sockname rcs.mako.co.il 80
sockmark %sockname mako
}
alias -l zn.arz {
var %sockname = zn.news. $+ $ticks
sockopen %sockname www.haaretz.co.il 80
sockmark %sockname arz
}
alias -l zn.inn {
var %sockname = zn.news. $+ $ticks
sockopen %sockname www.inn.co.il 80
sockmark %sockname inn
}
on *:sockopen:zn.news.*: {
if !$sockerr {
var %s sockwrite -tn $sockname
if ($sock($sockname).mark == walla) {
%s GET /?w=/1/22/0/@rss HTTP/1.1
%s Host: rss.walla.co.il
}
elseif ($sock($sockname).mark == ynet) {
%s GET /home/0,7340,L-184,00.html HTTP/1.1
%s Host: www.ynet.co.il
%s Accept: *
}
elseif ($sock($sockname).mark == nrg) {
%s GET /newsflash/ HTTP/1.1
%s Host: rss.nrg.co.il
%s Connection: close
}
elseif ($sock($sockname).mark == nana) {
%s GET /Ticker/TickerList.asp?TickerID=1073 HTTP/1.1
%s Host: news.nana10.co.il
}
elseif ($sock($sockname).mark == mako) {
%s GET /rss/MainSliderRss.xml HTTP/1.1
%s Host: rcs.mako.co.il
}
elseif ($sock($sockname).mark == rotter) {
%s GET / HTTP/1.1
%s Host: rotter.net
}
elseif ($sock($sockname).mark == arz) {
%s GET /feed/newsRss.xml HTTP/1.1
%s Host: www.haaretz.co.il
}
elseif ($sock($sockname).mark == iba) {
%s GET /bet/bet.aspx?type=allItems HTTP/1.1
%s Host: www.iba.org.il
}
elseif ($sock($sockname).mark == inn) {
%s GET /News/AllFlashes.aspx HTTP/1.1
%s Host: www.inn.co.il
}
elseif ($sock($sockname).mark == hnn) {
%s GET /rss.xml HTTP/1.1
%s Host: www.hnn.co.il
}
%s Connection: close
%s User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729)
%s
}
}
on *:sockread:zn.news.*: {
if ($sockerr) { return }
while ($sockbr) {
var %sockread
sockread -f %sockread
if ($sock($sockname).mark == walla) {
if (*<item>* iswm %sockread) { set %zn.walla.activate 1 }
if (!%zn.walla.activate) return
if ($regex(%sockread,/<title>(.+)</title>/i)) { set %zn.walla.title $regml(1) }
if ($regex(%sockread,/<link>(http:\/\/news\.walla\.co\.il\/\/\?w=\/\d+\/(\d+))<\/link>/i)) {
set %zn.walla.link $regml(1)
if (%zn.last.walla < $regml(2)) {
set %zn.last.walla $regml(2)
msg %channel 0,1Walla:7 %zn.walla.title 14-12 %zn.walla.link
}
unset %zn.walla.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == iba) {
if ($regex(%sockread,/<a class="innerMoreMain" onclick="return false;" href="(http:\/\/www\.iba\.org\.il\/bet\/\?entity=(\d+))&type=1&topic=0&page=">(.+)<\/a>/i)) {
if ($regml(2) > %zn.last.iba) {
msg %channel 1'רשת ב:7 $regml(3) 14-12 $regml(1)
set %zn.last.iba $regml(2)
}
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == rotter) {
if ($regex(%sockread,/HREF='(http://rotter.net/forum/scoops1/(\d+).shtml)'><span style='font-size:10\.0pt;color:\d+'><\/g>(.+)<\/g><\/span><\/a><br>/i)) {
if ($regml(2) > %zn.last.rotter) {
msg %channel 7rotter:7 $regml(3) 14-12 $regml(1)
set %zn.last.rotter $regml(2)
}
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == hnn) {
if (*<item>* iswm %sockread) { set %zn.hnn.activate 1 }
if (!%zn.hnn.activate) return
if ($regex(%sockread,/<title>(.+)</title>/i)) { set %zn.hnn.title $regml(1) }
if ($regex(%sockread,/<link>(http://www.hnn.co.il/rss_news_article(\d+).html)</link>/i)) {
set %zn.hnn.link $regml(1)
if (%zn.last.hnn < $regml(2)) {
set %zn.last.hnn $regml(2)
msg %channel 6HNN:7 %zn.hnn.title 14-12 %zn.hnn.link
}
unset %zn.hnn.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == arz) {
if (*<item>* iswm %sockread) { set %zn.arz.activate 1 }
if (!%zn.arz.activate) return
if ($regex(%sockread,/<title><!\[CDATA\[(.+)\]\]></title>/i)) { set %zn.arz.title $regml(1) }
if ($regex(%sockread,/<link>(http://www.haaretz.co.il/hasite/spages/\d+.html)</link>/i)) {
set %zn.arz.link $regml(1)
if (%zn.last.arz != $regml(1)) && (%zn.last.arz2 != $regml(1)) {
set %zn.last.arz2 $iif(%zn.last.arz,$v1,$null)
set %zn.last.arz $regml(1)
msg %channel 0,12Haaretz:7 %zn.arz.title 14-12 %zn.arz.link
}
unset %zn.arz.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == inn) {
if ($regex(%sockread,/<div class=Flash><div class=Hour>\S+<\/div><a href=(\/News\/Flash\.aspx/(\d+))>(.+)/i)) {
if (%zn.last.inn < $regml(2)) {
msg %channel 0772ערוץ:7 $gettok($regml(3),1,60) 14-12 http://www.inn.co.il $+ $regml(1)
set %zn.last.inn $regml(2)
}
unset %zn.inn.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == ynet) {
if ($regex(%sockread,/<TD .+'><a href='(.+\.html)' .+> (.+) <\/a><BR>/i)) {
var %r1 = $regml(1),%r2 = $regml(2),%regex = /\/articles\/\d*,\d*,L-(.+),\d*\.html/i
noop $regex($remove($gettok($regml(1),1,32),'),%regex)
if (%zn.last.ynet < $regml(1)) {
set %zn.last.ynet $regml(1)
msg %channel 0,4Y14net:7 $remove($replace(%r2,",",#39;,'),&) 14-12 http://www.ynet.co.il $+ $remove($gettok(%r1,1,32),')
}
unset %zn.ynet.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == mako) {
if (*<item>* iswm %sockread) { set %zn.mako.activate 1 }
if (!%zn.mako.activate) return
if ($regex(%sockread,/<title>(.+)</title>/i)) { set %zn.mako.title $regml(1) }
if ($regex(%sockread,/<link>(http:\/\/www\.mako\.co\.il\/.+\/.+\/Article-(.+\..+))&Partner=rss</link>/i)) {
set %zn.mako.link $regml(1)
if (%zn.last.mako != $regml(2)) && (%zn.last.mako2 != $regml(2)) {
msg %channel ma2ko:7 $remove($replace(%zn.mako.title,",",#39;,'),&) 14-12 $regml(1)
set %zn.last.mako2 $iif(%zn.last.mako,$v1,$null)
set %zn.last.mako $regml(2)
}
unset %zn.mako.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == nana) {
if ($regex(%sockread,<a href="(\/Article\/\?ArticleID=\d+)" .+">(.+)<\/a><\/span>)) {
if ($regml(1) != %zn.last.nana) && ($regml(1) != %zn.last.nana2) {
msg %channel Nana:7 $regml(2) 14-12 http://news.nana10.co.il $+ $regml(1)
set %zn.last.nana2 $iif(%zn.last.nana,$v1,$null)
set %zn.last.nana $regml(1)
}
unset %zn.nana.*
sockclose $sockname
return 1
}
}
elseif ($sock($sockname).mark == nrg) {
if ($regex(%sockread,/<title><!\[CDATA\[(.+)/i)) {
if ($regml(1) != %zn.last.nrg) && ($regml(1) != %zn.last.nrg2) {
msg %channel 14nrg4מעריב:7 $remove($regml(1),]]></title>)
set %zn.last.nrg2 $iif(%zn.last.nrg,$v1,$null)
set %zn.last.nrg $regml(1)
}
unset %zn.nrg.*
sockclose $sockname
return 1
}
}
}
sockread -f %sockread
}
alias zn.checknews {
if ($me !ison %channel) return
if (!%zn.last.hnn) set %zn.last.hnn 0
if (!%zn.last.iba) set %zn.last.iba 0
if (!%zn.last.inn) set %zn.last.inn 0
if (!%zn.last.walla) set %zn.last.walla 0
if (!%zn.last.ynet) set %zn.last.ynet 0
if (!%zn.last.rotter) set %zn.last.rotter 0
if (%zn.turn.walla != 0) .zn.walla
if (%zn.turn.nrg != 0) .timer 1 2 .zn.nrg
if (%zn.turn.ynet != 0) .timer 1 4 .zn.ynet
if (%zn.turn.nana != 0) .timer 1 6 .zn.nana
if (%zn.turn.mako != 0) .timer 1 8 .zn.mako
if (%zn.turn.arz != 0) .timer 1 10 .zn.arz
if (%zn.turn.inn != 0) .timer 1 12 .zn.inn
if (%zn.turn.hnn != 0) .timer 1 14 .zn.hnn
if (%zn.turn.iba != 0) .timer 1 16 .zn.iba
if (%zn.turn.rotter != 0) .timer 1 18 .zn.rotter
}
dialog zxor_news {
title "ZxoR News Bot"
size -1 -1 110 70
option dbu
text "Channel:", 1, 18 2 22 8
edit "#Channel", 2, 42 1 50 10
check "Walla news", 3, 1 12 50 10
check "Nana10 news", 4, 1 21 50 10
check "YNet news", 5, 1 30 50 10
check "HNN news", 6, 1 39 50 10
check "NRG news", 7, 57 12 50 10
check "Mako news", 8, 57 21 50 10
check "Haaretz news", 9, 57 30 50 10
check "INN news", 10, 57 39 50 10
button "Save settings", 11, 0 58 110 12
check "Reshet bet news", 12, 1 48 50 10
check "Rotter news", 13, 57 48 50 10
}
menu * {
ZxoR News dialog:dialog -m zxor_news zxor_news
}
on *:dialog:zxor_news:init:0: {
if (%channel) { did -ra $dname 2 $v1 }
if (%zn.turn.walla != 0) { did -c $dname 3 }
if (%zn.turn.nana != 0) { did -c $dname 4 }
if (%zn.turn.ynet != 0) { did -c $dname 5 }
if (%zn.turn.hnn != 0) { did -c $dname 6 }
if (%zn.turn.nrg != 0) { did -c $dname 7 }
if (%zn.turn.mako != 0) { did -c $dname 8 }
if (%zn.turn.arz != 0) { did -c $dname 9 }
if (%zn.turn.inn != 0) { did -c $dname 10 }
if (%zn.turn.iba != 0) { did -c $dname 12 }
if (%zn.turn.rotter != 0) { did -c $dname 13 }
}
on *:dialog:zxor_news:sclick:11: {
set %channel $did($dname,2)
set %zn.turn.walla $did($dname,3).state
set %zn.turn.nana $did($dname,4).state
set %zn.turn.ynet $did($dname,5).state
set %zn.turn.hnn $did($dname,6).state
set %zn.turn.nrg $did($dname,7).state
set %zn.turn.mako $did($dname,8).state
set %zn.turn.arz $did($dname,9).state
set %zn.turn.inn $did($dname,10).state
set %zn.turn.iba $did($dname,12).state
set %zn.turn.rotter $did($dname,13).state
}
on *:connect: { .timer 0 15 /zn.checknews }
alias -l sockopen {
if (!$sock($1)) !sockopen $1-
}