Sas

 
<<< Back

Скрипт анекдотов

Допилил скрипт анекдотов с обновлениями и шахматистками

Чуть перепилил скрипт анекдотов.
Закачивает последние 50 анекдотов с сайта и при проговаривании ставит отметку о прочтении чтоб не повторять уже рассказанные анекдоты.
Если анекдоты заканчиваются обновляет список, но можно обновить и ручками.

Запуск из шаблонов
Главный шаблон у меня "расскажи|говори"
Дочерний "((\w+)(\s))?(анекдот)"

$d=preg_replace('/(\d+)/', '${1} ',$matches[1]);
if(!is_numeric($d) && !preg_match("/расскаж/isu",$d)){
include_once "php/include/w2dig.php"; 
$d=strToNum($d); //функция из инклуда переводящяя слова в цифры для голосового управления
}
if (strlen($d) == 0){
    runScript('anekdot'); //если числа нет то просто рассказываем 1 анедот
}else{
    runScript('anekdot',array('SOME'=>"$d")); //передаем число сколько анекдотов рассказывать
}

Сам скрипт anekdot

function update_a(){
//перед первым запуском необходимо создать таблицу anekdots строкой ниже
//CREATE TABLE `anekdots` (   `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,   `TITLE` varchar(255) NOT NULL DEFAULT '',   `R_TRASH` int(10) NOT NULL DEFAULT '0',   `LAST_UPDATE` timestamp,   PRIMARY KEY (`ID`)  ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
 SQLExec("TRUNCATE anekdots;");
DebMes("Anekdots updating");
$xml_file="http://www.anekdot.ru/rss/export_top.xml"; // адрес xml файла
$t=time();
$sql=array();
$anekdot = array();
$xml = simplexml_load_file($xml_file); // раскладываем xml на массив
$xml_cnt = count($xml->channel->item);
$random= rand(0,$xml_cnt);
$num=1;
foreach( $xml->channel->item as $curr) {
$anekdot[]= (string) $curr->description;
}
foreach($anekdot as $an){
$a=preg_replace('/<br>/',' ',$an); 
$sql['TITLE']=$a;
$sql['LAST_UPDATE']=$t;
$sql['ID']=$num;
SQLInsert('anekdots',$sql);
$num++;}
}
function read_a(){
$co=SQLSelectOne("SELECT ID,TITLE FROM anekdots WHERE R_TRASH = 0  ORDER BY RAND() LIMIT 1;");
SQLExec("UPDATE anekdots SET R_TRASH=1 WHERE ID='".$co['ID']."'");
return $co['TITLE'];
}
$r=read_a();
if ( empty($r)){
sayReply("Новых анекдотов нет, обновляю список",10);
 update_a();
 $r=read_a();
}elseif($params['UPDATE']){
 update_a();
}else{
$d=$params['SOME'];
 if($d){
  $i=1;
    while ($i <= $d){
     sayReply("$r",10);
     $r=read_a();
     $i++;
 }
 }else{
  sayReply("$r",10);
 }
}

Для обновления списка запустить

runScript('anekdot',array('UPDATE'=>TRUE));

Или для автоматического обновления вставить в onNewMinute
if (timeIs("03:00")) {
 runScript('anekdot',array('UPDATE'=>TRUE));
}

Discuss (0) (7)

See also:
2018-07-01 Скрипт перевода числа текстом(два/три..) в число (2/3)
2018-06-11 Проверка подключения/отключения устройства к wifi сети из сислога роутера

Люберцы, Россия

На форуме: Sas