Привет! Этот скрипт до недавнего времени извлекал новости с веб-страницы. А теперь, похоже, что это не работает. Это должно работать по команде: !national
on *:TEXT:!nacional:#opon: nacional $nick $chan
alias nacional {
if ($hget(ns,stop)) { .notice $1 Una sola vez por favor, espera por lo menos 10 segundos para enviar de vuelta. | return }
.hadd -mu10 ns stop 1
.hadd -m ns nick $1
.hadd -m ns chan $2
.hadd -m ns port 443
.hadd -m ns domen www.ultimahora.com
.hadd -m ns webpage https://www.ultimahora.com/contenidos/nacional.html
.hadd -m ns file nacional.txt
.hadd -m ns file-test nacional-test.txt
.hadd -m ns agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
if ($exists($hget(ns,file))) .remove $hget(ns,file) | if ($exists($hget(ns,file-test))) .remove $hget(ns,file-test)
.sockclose nacional | if ($hget(ns,inc)) .hdel -sw ns inc
if (https: isin $hget(ns,webpage)) var %flag -e
.sockopen %flag nacional $hget(ns,domen) $hget(ns,port)
}
on *:SOCKOPEN:nacional:{
if ($sockerr) { echo -s $hget(ns,domen) : Server is not available. | return }
.sockwrite -nt $sockname GET $hget(ns,webpage) HTTP/1.0
.sockwrite -nt $sockname Host: $hget(ns,domen)
.sockwrite -nt $sockname User-Agent: $hget(ns,agent)
.sockwrite -nt $sockname Content-Type: text/html; charset=utf-8
.sockwrite -nt $sockname $str($crlf,2)
.sockwrite -nt $sockname
}
on *:SOCKREAD:nacional:{
if ($sockerr > 0) { echo -s $hget(ns,domen) : $error | return }
:1 | .sockread %temp_ns | if ($sockbr == 0) return | if (!%temp_ns) goto 1
;.write -i $hget(ns,file-test) %temp_ns
var %ns_find = class="article-title"
if (%ns_find isin %temp_ns) {
var %temp_ns $repchar($findtitle(%temp_ns))
.write -i $hget(ns,file) %temp_ns
}
goto 1
}
on *:SOCKCLOSE:nacional:{
.echo -st $+(12,$hget(ns,domen),) - reading completed! | if ($hget(ns,stop)) .hdel -sw ns stop
if ($exists($hget(ns,file)) && $lines($hget(ns,file)) > 0) { msg $hget(ns,chan) 12Paraguay Nacional:14 $read($hget(ns,file)) }
}
alias -l findtitle {
var %str $1- | var %f $wildtok(%str,*article-title*,1,32)
var %t $gettok(%str,$+($findtok(%str,%f,1,32),-),32)
return $gettok($gettok(%t,3-,62),1,60)
}
alias -l repchar { return $replace($1-,',$chr(39)) }
Отредактировано nexuxirc (06.03.2022 01:58)

