Умный дом говорит какой сегодня праздник, российский или международный. В духе таких, как "День гранёного стакана"
Рекомендую выполнять один раз в сутки, лучше всего утром, когда вы просыпаетесь, будете знать, может быть сегодня ваш профессиональный праздник
Данные получает с сайта kalendar-365.ru
Версия сырая, могут быть ошибки.
Если есть мысли как оптимизировать улучшить код, пишите в теме.
Код сценария feastToday:
Код: Выделить всё
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];
$page_url = "http://kalendar-365.ru/today";
//делаем до 10 запросов, т.к. сайт иногда не отвечает с первого раза
for ($i = 0; $i <= 10; $i++) {
if (!$page_cont) $page_cont = file_get_contents($page_url);
}
if ($page_cont) {
$page_cont = str_replace("\r", "", $page_cont);
$page_cont = str_replace("\n", "", $page_cont);
preg_match_all("/<span class=\"cl\">(.*?)<\/span>/ui", $page_cont, $match);
$ret = "Сегодня: ";
foreach($match[1] as $key => $value) {
$ret .= $value . ".; ";
}
}
$ret = trim($ret);
if ($ret) {
sg("ThisComputer.feastToday", $ret);
say($ret, $level);
echo "<br>" . $ret;
}
Сегодня: День работника кабельной промышленности.; День таможенника Российской Федерации.; День маркетолога.; Андрон Звездочет.;
В нагрузку привожу сценарий определения Рабочего/Выходного дня РБ (может быть адаптирован для других стран, параметром ?cc=by), чтобы не создавать отдельный топик.
у меня выполняется ежедневно утром в 7:03, когда все просыпаются.
Код сценария dateNow:
Код: Выделить всё
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
//определение выходного дня
function isDayOff($str) {
$url = "https://isdayoff.ru/" . $str . "?cc=by";
$response = file_get_contents($url);
if ($response == "1") $result = "Выходной!";
if ($response == "0") $result = "Рабочий день.";
return $result;
}
//дата на русском
function dateru($str) {
$result = "";
$iter = 0;
while ($iter < mb_strlen($str)) {
switch (mb_substr($str,$iter,1)) {
case 'д': {
$dayN = date("N");
$day = "";
switch ($dayN) {
case 1:$day = "Понедельник";break;
case 2:$day = "Вторник";break;
case 3:$day = "Среда";break;
case 4:$day = "Четверг";break;
case 5:$day = "Пятница";break;
case 6:$day = "Суббота";break;
case 7:$day = "Воскресенье";break;
}
$iter++;
$result .= $day;
break;
}
case 'м': {
$monthN = date("m");
$month = "";
switch($monthN) {
case '01':$month = "января";break;
case '02':$month = "февраля";break;
case '03':$month = "марта";break;
case '04':$month = "апреля";break;
case '05':$month = "мая";break;
case '06':$month = "июня";break;
case '07':$month = "июля";break;
case '08':$month = "августа";break;
case '09':$month = "сентября";break;
case '10':$month = "октября";break;
case '11':$month = "ноября";break;
case '12':$month = "декабря";break;
}
$iter++;
$result .= $month;
break;
}
default: {
$result .= date(mb_substr($str,$iter,1));
$iter++;
break;
}
}
}
return $result;
}
$ret .= "Сегодня " . date("d") . " " . dateru("м") . ". " . dateru("д") . ". ";
$ret .= isDayOff(date("Ymd")) . " ";
$ret .= "Средняя температура этой ночью на улице была " . round(getHistoryAvg("minsk.temp", strtotime("00:00")), 1) . "°, ";
$ret .= "опускалась до " . round(getHistoryMin("minsk.temp", strtotime("00:00")), 1) . "°. ";
$ret .= "Фаза луны: " . gg("ThisComputer.MoonStage") . ". ";
$ret .= "Солнце зайдет сегодня в " . gg("ThisComputer.SunSetTime") . ". ";
say($ret, $level);
echo "<br>" . $ret;
P/S. Модераторы. Если я опубликовал не в тот раздел тему, пожалуйста перенесите, поправьте.Доброе утро! Сегодня 26 октября. Суббота. Выходной! Средняя температура этой ночью на улице была 10.6°, опускалась до 10°. Фаза луны: убывающая. Солнце зайдет сегодня в 17:49.