EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Скрипт больше не извлекает данные с сайта


Скрипт больше не извлекает данные с сайта

Сообщений 1 страница 2 из 2

1

Привет! Этот скрипт до недавнего времени извлекал новости с веб-страницы. А теперь, похоже, что это не работает. Это должно работать по команде: !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)

2

1319,358 написал(а):

Этот скрипт до недавнего времени извлекал новости с веб-страницы. А теперь, похоже, что это не работает. Это должно работать по команде: !national

Я не смог воспроизвести вашу проблему. Тест был произведён на "mIRC v7.67" и у меня этот скрипт работает хорошо. Вероятно вы делаете что-то не так. Я могу подозревать, что IP адрес хоста, на котором располагается ваш бот мог быть автоматически забанен защитными средствами данного новостного сайта, из-за частых и однообразных запросов вашего бота. На всякий случай попробуйте изменить ваш IP адрес или попробуйте протестировать этот скрипт на другом независимом компьютере. Если это действительно так, то будет трудно что-то исправить.

[indent=0.8,0.5] https://i.ibb.co/QF5HqS9/national-news.png

Я немного подкорректировал ваш код, поэтому вы можете попробовать использовать этот вариант скрипта:

Код:
on *:TEXT:!nacional:#opon: nacional
alias nacional {
  if ($hget(ns,stop)) { .notice $nick Una sola vez por favor, espera por lo menos 10 segundos para enviar de vuelta. | halt } | .hadd -mu10 ns stop 1
  .hadd -m ns nick $nick
  .hadd -m ns chan $chan
  .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 $scriptdir $+ nacional.txt
  .hadd -m ns file-test $scriptdir $+ nacional-test.txt
  ;----------------------
  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. | halt }
  .sockwrite -nt $sockname GET $hget(ns,webpage) HTTP/1.0
  .sockwrite -nt $sockname Host: $hget(ns,domen)
  .sockwrite -nt $sockname User-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 | halt }
  :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)) }
Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Скрипт больше не извлекает данные с сайта