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

Отображение новостей

Добавлено: Чт окт 10, 2013 1:27 pm
Antonq
Доброго времени суток!
Загрузил новости с RSS, читает мне Алиса(уже Алена) эти новости, когда появляются новые.
Но вот вопрос в том, что я не нашел как вывести эти новости скажем на главный экран, или последние 3 и т.д.
Или что бы Алиса читала их по команде "расскажи новости" (где прописывать команды я нашел, кстати кто какие команды ей запрограммировал?)
Это можно сделать только запросом в БД или какими-то более стандартными средствами?

Re: Отображение новостей

Добавлено: Пн окт 14, 2013 2:20 pm
Antonq
Действительно сложно?

Re: Отображение новостей

Добавлено: Пн окт 14, 2013 5:26 pm
sergejey
Antonq писал(а):Действительно сложно?
я себе это записал в задачки (вызов модуля RSS со списком новостей), но пока не получается заняться. до того пока только через SQL -- как для проговаривания так и для вывода можно сделать (выборку последних новостей и запись их в переменную какую-нибудь)

Re: Отображение новостей

Добавлено: Пн окт 14, 2013 5:28 pm
Antonq
Спасибо, понял, попробую:)
Опыта в ООП почти нет, но если получится выложу то что получилось)

Re: Отображение новостей

Добавлено: Вт окт 15, 2013 4:48 pm
Antonq
Проде получилось, теперь Алиса по команде "Новости" читает последние новости добавленые(точнее прочитаные), если новостей нет, то она говорит что их нет.
Если кому надо могу поделиться.

Re: Отображение новостей

Добавлено: Вт окт 15, 2013 5:09 pm
Amarok
Делись :)

Re: Отображение новостей

Добавлено: Вт окт 15, 2013 6:28 pm
Antonq
1. Создал класс News и наделил его свойствами LastNewsId и методом ReadNewN(метод для чтения новых новостей)
2. Создал объект ThisNews
Вот текст метода

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

$last_id=getGlobal('ThisNews.LastNewsId');
$values=SQLSelect("SELECT * 
FROM  `rss_items` 
WHERE  ID >".$last_id);
if($values) { 
$total=count($values);
say("Новости",5);
for($i=0;$i<$total;$i++){
$sql="SELECT * 
FROM  `rss_items` 
WHERE  ID =".$values[$i]['ID'];

	$value=SQLSelectOne($sql);
	
	say($value['TITLE'],5);

};
$last_id=$value['ID'];

setGlobal('ThisNews.LastNewsId',$last_id);

say('Вот и все новости на сегодня! Хорошего дня!');

} else {say("Нет новых новостей",5);};
3. В объекте ThisComputer подредактировал метод вот таким образом

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

$command=$params['command'];

$short_command='';
$dt=recognizeTime($command,$short_command);

if (preg_match('/скажи сколько время/is',$command)) {
if ($dt>0) {
addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
say('Задача принята');
return;
}
global $voicemode;
$voicemode='on';
say('Сейчас '.timeNow());
} elseif (preg_match('/сколько время/is',$command)) {
if ($dt>0) {
addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
say('Задача принята');
echo $short_command;
return;
}
say('Сейчас '.timeNow());
} elseif (preg_match('/повтори (.+)/is',$command,$m) || preg_match('/скажи (.+)/is',$command,$m)) {
if ($dt>0) {
addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
say('Задача принята');
return;
}
global $voicemode;
$voicemode='on';
say($m[1]);
}
elseif (preg_match('/новости/is',$command)) {
    global $voicemode;
    $voicemode='on';
    callMethod('ThisNews.ReadNewN');

}

else {
say('Неизвестная команда...');
}
4. Зашел в 127.0.0.1/phpmyadmin4/ в бд db_terminal в таблице rss_items посмотрел айди последней новости и присвоил ее свойству объекта ThisNews.LastNewsId

Вот вроде как то так:)
Прошу не судить строго за код, в ООП первый опыт!

Re: Отображение новостей

Добавлено: Ср окт 16, 2013 8:21 am
DiArt
Супер! Поставил себе. Спасибо тебе, добрый человек )))
А как ты выводишь на домашнюю страницу?

Re: Отображение новостей

Добавлено: Ср окт 16, 2013 8:29 am
Amarok
Antonq писал(а):Прошу не судить строго за код, в ООП первый опыт!
Работает. Спасибо!
DiArt писал(а):А как ты выводишь на домашнюю страницу?
Кажется, пока никак. :(

Re: Отображение новостей

Добавлено: Ср окт 16, 2013 11:59 am
Antonq
сегодня постараюсь написать метод для вывода