Re: чтение RSS + другие скрипты
Добавлено: Пн ноя 20, 2017 3:27 pm
Эти параметры просто передаются в метод для обработки, не более. Чтобы были доступны несколько новостей - тольк в свойство накапливать, или напрямую с sql тянуть.
Обсуждение проекта
https://mjdm.ru/forum/
Код: Выделить всё
/*
$params['URL'] --link
$params['TITLE'] -- title
$params['BODY'] -- body
$params['CHANNEL_ID'] -- channel ID
$params['CHANNEL_TITLE'] -- channed title
//say($params['TITLE']); // reading news
*/
$text = (strip_tags($params['BODY']));
$filename = "C:/_majordomo/htdocs/texts/joke.txt";
$fp = fopen($filename , "a"); // Открываем файл
$joke = fwrite($fp, "\r\n".$text);
fclose($fp); //Закрытие файла
//say("Всё запомнила в файл анекдоты.",1);
Код: Выделить всё
$joke=getRandomLine(joke);
sayReply($joke, 1);
Зачем дополнительно хранить что-то в свойствах, файлах, если это уже в таблице лежит структурировано, по полочкам разложено?Gelezako писал(а):ну дёргать запросы из базы это полный хардкор
а проще решение есть ?
Код: Выделить всё
say('последние новости',1);
$states = SQLSelect('SELECT `TITLE` , `ADDED` FROM `rss_items` ORDER BY `ADDED` DESC LIMIT 0 , 5');
// отбери заголовок, когда добавлено из таблицы записи_RSS, отсортируй по времени добавления по убыванию и ограничь показ пятью записями
$cnt=Count($states);
For($i=0; $i<$cnt; $i++) {
say($states[$i]['TITLE'],1);
}
еще бы добавить проверку на одинаковость этих новостей, ну и моего скрипта.
Код: Выделить всё
runScript('anekdot',array('UPDATE'=>TRUE));
Код: Выделить всё
runScript('anekdot');
Код: Выделить всё
SQLExec("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;");
Код: Выделить всё
function update_a(){
//SQLExec("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();
read_a();
}elseif($params['UPDATE']){
update_a();
}else{
sayReply("$r",10);
}
1. нет точки с запятой в концеSas писал(а): ↑Пн июн 11, 2018 11:22 pmПри первом запуске надо запустить создание таблицы 2 строка, а после ее закаментить обратно.Код: Выделить всё
SQLExec("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;")
Код: Выделить всё
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''anekdots' ( 'ID int(10) unsigned NOT NULL AUTO_INCREMENT, 'TITLE' varchar(255) ' at line 1
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;
спасибо, выполнил создание таблицы, проверил в phpmyadmin, таблица появилась и анекдоты тоже. Создал сценарий "anekdot". Потом в консоли МЖД выполняю
Код: Выделить всё
runScript('anekdot',array('UPDATE'=>TRUE));
Код: Выделить всё
$r=read_a();
if ( empty($r)){
sayReply("Новых анекдотов нет, обновляю список",10);
update_a();
read_a();
}elseif($params['UPDATE']){
update_a(); // сюда попадаем при 'UPDATE'=>TRUE
}else{
sayReply("$r",10); // чтобы посмеяться надо сюда
}