Страница 2 из 4

Re: чтение RSS + другие скрипты

Добавлено: Пн ноя 20, 2017 3:27 pm
nick7zmail
Эти параметры просто передаются в метод для обработки, не более. Чтобы были доступны несколько новостей - тольк в свойство накапливать, или напрямую с sql тянуть.

Re: чтение RSS + другие скрипты

Добавлено: Пн ноя 20, 2017 3:29 pm
Logrus
в рсс только анекдоты и пишу в файл

Код: Выделить всё

/*
$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);  
на малинке пути другие $filename = "/var/www/texts/joke.txt";
в шаблонах поведения
Расскажи анекдот

Код: Выделить всё

$joke=getRandomLine(joke);
sayReply($joke, 1); 
вполне вероятно, возможно как полностью файл чистить, так и отдельные строки

Re: чтение RSS + другие скрипты

Добавлено: Пн ноя 20, 2017 4:06 pm
Gelezako
Logrus, да, спасибо, делаю приблизительно тоже самое, но в качестве хранилища планирую использовать свойство класса внутри МЖД, а не файл на файловой системе.

Re: чтение RSS + другие скрипты

Добавлено: Пн ноя 20, 2017 10:24 pm
xor
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); 
   }
 

Re: чтение RSS + другие скрипты

Добавлено: Вт ноя 21, 2017 8:25 pm
Gelezako
xor, спасибо, с вашим кодом стало намного проще реализовать мою идею :)

Re: чтение RSS + другие скрипты

Добавлено: Пн июн 11, 2018 11:22 pm
Sas
xor писал(а):
Пн ноя 20, 2017 10:24 pm
Вот простейший скрипт, который читает пять последних заголовков
еще бы добавить проверку на одинаковость этих новостей, ну и моего скрипта.

исправил скрипт анекдотов
хранит в базе в таблице anekdots последние 50 анекдотов и при проговаривании ставит отметку о прочтении
чтоб не рассказывать его повторно что постоянно делал стары скрипт найденный тут или в коннекте у кого то
При обновлении удаляет все анекдоты и закачивает снова.
Обновлять можно ручками или автоматом раз в день, сам обновляет анекдоты после того как расскажет все.
Для обновления по таймеру или ручками надо запустить:

Код: Выделить всё

runScript('anekdot',array('UPDATE'=>TRUE));
Для проговаривания анекдотов надо запустить

Код: Выделить всё

runScript('anekdot');
Обратите внимание на уровень проговаривания в sayReply("",10) - 10 везде надо изменить на свой
При первом запуске надо запустить создание таблицы 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;");

Код: Выделить всё

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);
}

Re: чтение RSS + другие скрипты

Добавлено: Вт июн 12, 2018 11:18 am
Gelezako
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;")
1. нет точки с запятой в конце
2. после запуска, ошибка:

Код: Выделить всё

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;
Подскажите в чём может быть проблема?

Re: чтение RSS + другие скрипты

Добавлено: Вт июн 12, 2018 7:57 pm
Sas
Gelezako писал(а):
Вт июн 12, 2018 11:18 am
1. нет точки с запятой в конце
2. после запуска, ошибка:
Извините, я запускал создание таблицы прям в консоли мускуля а в скрипт уже потом перенес.
сейчас проверил и исправил предыдущее сообщение на рабочий вариант

Re: чтение RSS + другие скрипты

Добавлено: Чт июн 14, 2018 2:04 pm
Gelezako
Sas писал(а):
Вт июн 12, 2018 7:57 pm
Gelezako писал(а):
Вт июн 12, 2018 11:18 am
1. нет точки с запятой в конце
2. после запуска, ошибка:
Извините, я запускал создание таблицы прям в консоли мускуля а в скрипт уже потом перенес.
сейчас проверил и исправил предыдущее сообщение на рабочий вариант
спасибо, выполнил создание таблицы, проверил в phpmyadmin, таблица появилась и анекдоты тоже. Создал сценарий "anekdot". Потом в консоли МЖД выполняю

Код: Выделить всё

runScript('anekdot',array('UPDATE'=>TRUE));
но тишина :(

Re: чтение RSS + другие скрипты

Добавлено: Пт июн 15, 2018 1:19 am
xor
При запуске
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); // чтобы посмеяться надо сюда
}
ведь только обновление идет.
Попробуйте
runScript('anekdot',array('UPDATE'=>FALSE));
или просто
runScript('anekdot');