(Д|д)авай приготовим (.+)
Код
$queryString = $matches[2];
/*
$findParams = array(
'aerogrill' => '22', // Рецепты для аэрогриля
'waffle' => '27', // Для вафельницы
'yoghurt' => '28', // Для йогуртиницы
'multivarka' => '25', //Рецепты для мультиварки
'steamer' => '15', //Для пароварки
'pressureCooker' => '46', //Для скороварки
'breadMaker' => '23', //Для хлебопечки
'fondue' => '24' //Рецепты фондю
);
*/
$findParams = array();
$recipeNumber = rand(0, 5);
$recipesList = findRecipes($queryString, $findParams);
if (!empty($recipesList)) {
$recipe = getRecipes($recipesList[$recipeNumber]['link']);
$recipe['link'] = $recipesList[$recipeNumber]['link'];
$recipe['name'] = $recipesList[$recipeNumber]['text'];
sayRecipe($recipe);
} else {
say('Ничего не найдено.',-1);
}
function sayRecipe($recipe) {
say($recipe['name'],-1);
if (!empty($recipe['description'])) {
foreach ($recipe['description'] as $e) {
say($e,-1);
}
}
$ingrstr = 'Нам понадобится: ';
foreach ($recipe['ingredients'] as $e) {
$ingrstr .= $e . ', ';
}
say($ingrstr,-1);
say('Способ приготовления:');
foreach ($recipe['preparing'] as $e) {
say($e,-1);
//registerError('my_debug', urlencode($e));
}
}
function getRecipes($recipeLink) {
if (empty($recipeLink)) {
return FALSE;
}
$html = @file_get_contents($recipeLink);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$ingredients = array();
$description = array();
$ingredientsDom = $xpath->query('//table[@class="rec-ingred-table"]/tr');
if ($ingredientsDom->length > 0) {
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$descriptionDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($descriptionDom as $item) {
$description[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
} else {
$ingredientsDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
}
$preparingDom = $xpath->query('//div[@class="b-list__clause__text"]/p');
$preparing = array();
foreach ($preparingDom as $item) {
$preparing[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$recipe = array(
'description' => $description,
'ingredients' => $ingredients,
'preparing' => $preparing
);
return $recipe;
}
function findRecipes($queryString, $params) {
if (empty($queryString)) {
return FALSE;
}
$url = 'http://www.edimdoma.ru/search?utf8=%E2%9C%93&asset=recipes&index=title_search&query=' . urlencode($queryString) . '&search%5Bmain_category_id%5D=&search%5Bcuisine_id%5D=';
if (!empty($params)) {
foreach ($params as &$value) {
$url .= '&cooking_method_ids%5B%5D=' . $value;
}
}
$url .= '&user_name=';
$html = @file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$articles = $xpath->query('//div[@class="b-page_block__header"]');
$links = array();
foreach ($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach ($arr as $item) {
if ($item->parentNode->tagName == "h2") {
$href = $item->getAttribute("href");
$text = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
$links[] = array(
'link' => $href,
'text' => $text
);
}
}
}
return $links;
}
|
skanblupup
Код
runScript("sayblupup", getGlobal('BlueToothDevice'.'.'.'user'));
|
System status
Шаблон: (состояние системы|состояние|статус)
Код
// Доложить о состоянии
$details=array();
if (getGlobal("System.stateColor") != "green") {
$details[]="Обнаружена ошибка работы системы";
$details[]=getGlobal("System.stateDetails");
};
if (getGlobal("Communication.stateColor") != "green") {
$details[]="Обнаружена ошибка работы коммуникаций";
$details[]=getGlobal("Communication.stateDetails");
};
if (getGlobal("Security.stateColor") != "green") {
$details[]="Обнаружена ошибка безопасности";
$details[]=getGlobal("Security.stateDetails");
};
if (!$details) {
$details[]="Все системы функционируют без ошибок";
};
say (implode(". ",$details),1);
|
Test kont
Код
|
включи|выключи
Код
say('Что именно '.$original.'ть?');
|
вентиляцию
Код
|
свет|освещение
Код
|
в детской
Код
say("Какой тип освещения?");
|
в зале
Код
say("Какой тип освещения?");
|
в коридоре
Код
say("Какой тип освещения?");
|
в спальне
Код
say("Какой тип освещения?");
|
дополнительный|малый
Код
if (preg_match('/включи/is',$original)) {
say("Включаю дополнительное освещение в спальне",1);
callMethod('bedroom_additional_light_unit.turnOn');
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю дополнительное освещение в спальне",1);
callMethod('bedroom_additional_light_unit.turnOff');
} else {
say('Непонятно мне что то: '.$original,1);
}
|
основной|большой|главный
Код
if (preg_match('/включи/is',$original)) {
say("Включаю основное освещение в спальне",1);
callMethod('bedroom_first_light_unit.turnOn');
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю основное освещение в спальне",1);
callMethod('bedroom_first_light_unit.turnOff');
} else {
say('Непонятно мне что то: '.$original,1);
}
|
полный|весь|ф|все|ё
Код
if (preg_match('/включи/is',$original)) {
say("Включаю полное освещение в спальне",1);
callMethod('bedroom_first_light_unit.turnOn');
setTimeOut("On_delay","callMethod('bedroom_additional_light_unit.turnOn');",1);
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю полное освещение в спальне",1);
callMethod('bedroom_first_light_unit.turnOff');
setTimeOut("Off_delay","callMethod('bedroom_additional_light_unit.turnOff');",1);
} else {
say('Непонятно мне что то: '.$original,1);
}
|
|
на кухне
Код
say("Какой тип освещения?");
|
дополнительный|малый
Код
if (preg_match('/включи/is',$original)) {
say("Включаю дополнительное освещение на кухне",-1);
callMethod("kitchen_small_light_unit.turnOn");
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю дополнительное освещение на кухне",-1);
callMethod('kitchen_small_light_unit.turnOff');
} else {
say('Непонятно : '.$original,-1);
}
|
основной|большой|главный
Код
if (preg_match('/включи/is',$original)) {
say("Включаю основное освещение на кухне",-1);
callMethod("kitchen_main_light_unit.turnOn");
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю основное освещение на кухне",-1);
callMethod('kitchen_main_light_unit.turnOff');
} else {
say('Непонятно : '.$original,-1);
}
|
полный|весь|ф|все|ё
Код
if (preg_match('/включи/is',$original)) {
say("Включаю полное освещение на кухне",-1);
callMethod("kitchen_main_light_unit.turnOn");
setTimeOut("On_delay","callMethod('kitchen_small_light_unit.turnOn');",1);
} elseif (preg_match('/выключи/is',$original)) {
say("Выключаю полное освещение на кухне",-1);
callMethod("kitchen_main_light_unit.turnOff");
setTimeOut("Off_delay","callMethod('kitchen_small_light_unit.turnOff');",1);
} else {
say('Непонятно: '.$original,-1);
}
|
|
|
теле(к|визор)|ящик
Код
if (preg_match('/выключи/is',$original)) {
say("Выключаю телевизор",-1);
// Телек в спалне
include_once(DIR_MODULES.'app_smarttv/app_smarttv.class.php');
$smartTv=new app_smarttv();
$smartTv->control('LG 47LM640S','sendCode', 1);
} elseif (preg_match('/включи/is',$original)) {
say("Данная команда не доступна",-1);
}
|
|
доброе утро
Код
say("Доброе утро, пора вставать.",1);
callMethod('bedroom_additional_light_unit.turnOn');
setTimeOut("On_delay","callMethod('bedroom_first_light_unit.turnOn');",30);
|
Общий контекст
|
забудь
Код
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say('Контекст забыт.');
|
помощь|help
Код
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i]);
}
|
|
пора спать
Код
say("Спокойной ночи, приятных снов.",1);
callMethod('bedroom_first_light_unit.turnOff');
setTimeOut("Off_delay","callMethod('bedroom_additional_light_unit.turnOff');",1);
|
Пример активации контекста
Код
say("Что-нибудь хотите?");
|
(.+)
Код
say("Вы сказали '".$matches[1]."', я не понимаю...");
|
да|конечно|yes|y
Код
|
нет|no|n
Код
|
|
через (\d+) минут(.?) (.+)
Код
setTimeOut('timer', "getURL('http://192.168.0.101/command.php?qry=".urlencode($matches[3])."');", $matches[1]*60);
|