Страница 18 из 24

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Ср янв 22, 2020 10:46 am
andrey040670
Ага, было бы не плохо.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Ср янв 22, 2020 11:30 am
S_Nick
nick7zmail писал(а): Ср янв 22, 2020 6:43 am
S_Nick писал(а): Вт янв 21, 2020 11:39 pm Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Там есть автоматическое определение региона...раньше работало, как часы...но оно не сбрасывало, если регион вручную перебить....ща, возможно, что то сломалось...могу его выключить.
Да, видимо сломалось, потому как ссылка на выбор регионов яндекса уже ведет в никуда https://yandex.ru/yaca/geo.c2n редирект на https://yandex.ru/support/
Поэтому нужно либо починить авто-выбор региона, либо отключить.


Может также будет полезен мой вариант реализации через сценарий:
yandexTraffic

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

if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$region = 157; //Минск
$traffic_url = "https://export.yandex.ru/bar/reginfo.xml?region=" . $region;

$xml = simplexml_load_file($traffic_url); // раскладываем xml на массив
//print_arr($xml);
$ret = "Дорожная ситуация: ";
if ($xml) {
	$traffic_level = $xml->traffic->region->level;
	if ($traffic_level) {
		$traffic_hint = $xml->traffic->region->hint;
		if ($traffic_hint) {
			$ret .= $traffic_hint . ". ";
			sg("ThisComputer.yandexTrafficHint", $traffic_hint);
		}
		$traffic_icon = $xml->traffic->region->icon;
		if ($traffic_icon) {
			sg("ThisComputer.yandexTrafficIcon", $traffic_icon);
		}
		$ball = "баллов";
		if ($traffic_level == 0) $ball = "баллов";
		if ($traffic_level == 1) $ball = "балл";
		if ($traffic_level == 2) $ball = "балла";
		if ($traffic_level == 3) $ball = "балла";
		if ($traffic_level == 4) $ball = "балла";
		if ($traffic_level == 5) $ball = "баллов";
		if ($traffic_level == 6) $ball = "баллов";
		if ($traffic_level == 7) $ball = "баллов. Лучше сидеть дома";
		if ($traffic_level == 8) $ball = "баллов. Лучше сидеть дома";
		if ($traffic_level == 9) $ball = "баллов. Лучше сидеть дома";
		if ($traffic_level == 10) $ball = "баллов. Лучше сидеть дома";
		$ret .= "Уровень пробок сейчас " . $traffic_level . " " . $ball . ". ";
		if ($change) {
			$ret = "";
			if ($traffic_level == 0) $ball = "баллов";
			if ($traffic_level == 1) $ball = "балла";
			if ($traffic_level == 2) $ball = "баллов";
			if ($traffic_level == 3) $ball = "баллов";
			if ($traffic_level == 4) $ball = "баллов";
			if ($traffic_level == 5) $ball = "баллов";
			if ($traffic_level == 6) $ball = "баллов";
			if ($traffic_level == 7) $ball = "баллов. Лучше сидеть дома";
			if ($traffic_level == 8) $ball = "баллов. Лучше сидеть дома";
			if ($traffic_level == 9) $ball = "баллов. Лучше сидеть дома";
			if ($traffic_level == 10) $ball = "баллов. Лучше сидеть дома";
			if ($traffic_level < gg("ThisComputer.yandexTrafficLevel")) {
				$ret = "Уровень пробок на дорогах снизился до " . $traffic_level . " " . $ball . ". ";
				$ret .= $traffic_hint . ". ";
			}
			if ($traffic_level > gg("ThisComputer.yandexTrafficLevel")) {
				$ret = "Уровень пробок на дорогах возрос до " . $traffic_level . " " . $ball . ". ";
				$ret .= $traffic_hint . ". ";
			}
		}
		sg("ThisComputer.yandexTrafficLevel", $traffic_level);
	} else {
		$ret .= "Данные не получены. ";
	}
} else {
	$ret .= "Данные не получены. ";
}

$ret = trim($ret);
if ($ret) {
	say($ret, $level);
	echo "<br>" . $ret;
}
Если в Cron выполнять каждые 15 минут:

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

runScript("yandexTraffic", array("change"=>"1")); //Проверка изменились ли пробки
Будет информировать об изменении дорожной обстановки

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Вс янв 26, 2020 11:16 am
krepton85
S_Nick писал(а): Вт янв 21, 2020 11:39 pm Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Аналогично и у меня.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Чт янв 30, 2020 12:35 am
SLT
S_Nick писал(а): Вт янв 21, 2020 11:39 pm Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
У меня тоже, замучился каждый день руками вбивать.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Чт янв 30, 2020 9:34 am
SmoKE_xDDD
krepton85 писал(а): Вс янв 26, 2020 11:16 am
S_Nick писал(а): Вт янв 21, 2020 11:39 pm Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Аналогично и у меня.
SLT писал(а): Чт янв 30, 2020 12:35 am
S_Nick писал(а): Вт янв 21, 2020 11:39 pm Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
У меня тоже, замучился каждый день руками вбивать.
Ровно страницу назад.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Чт янв 30, 2020 11:55 am
S_Nick
SmoKE_xDDD писал(а): Чт янв 30, 2020 9:34 am Ровно страницу назад.
:?: Выражайтесь конкретнее

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Вс фев 02, 2020 10:08 am
pasha413
Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Пн фев 03, 2020 6:07 pm
S_Nick
pasha413 писал(а): Вс фев 02, 2020 10:08 am Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Автор обещал исправить, но пока дело не двинулось, на сколько мне известно.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Пн фев 03, 2020 7:29 pm
kas5858
pasha413 писал(а): Вс фев 02, 2020 10:08 am Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Мой вариант решения с подсказки "SmoKE_xDDD"
Меняем код в методе update

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

/*
include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php");
$app_yatraffic=new app_yatraffic();
$app_yatraffic->get_traffic(gg("yt_settings.reg_id"));
*/
//Регион
$myRegion = '213'; // пишем свой регион
//Получаем данные от Яндекса
$getYandex = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region='.$myRegion));
$getYandex = json_decode(json_encode($getYandex), TRUE);
//Уровень пробок от 1 до 9
$trafficBall = $getYandex["traffic"]["region"]["level"];
sg("yt_info.level",$trafficBall);
//Текстовый статус, зеленый, желтый, красный (На инглише)
$trafficColor = $getYandex["traffic"]["region"]["icon"];
sg("yt_info.icon",$trafficColor);
sg('yt_info.color_level','<font color='.$trafficColor.'>'.gg('yt_info.level').'</font>');
//Текстовое оповещение - Дороги почти свободны
$trafficText = $getYandex["traffic"]["region"]["hint"][0];
sg("yt_info.val",$trafficText);
//Время последнего обновления
$trafficTime = $getYandex["traffic"]["region"]["time"];
sg("yt_info.time",$trafficTime);
//
$trafficTend = $getYandex["traffic"]["region"]["tend"];
sg("yt_info.tend",$trafficTend);
//Название города
$trafficSity = $getYandex["region"]["title"];
sg("yt_info.city_title",$trafficSity);
В методе onNewHour обьекта ClockChime
в конце

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

callMethodSafe('yt_info'.'.'.'update');
В настройках модуля убрать частоту обновления.
Если модуль поправят, можно оперативно все вернуть.

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Добавлено: Пн фев 10, 2020 2:58 pm
pasha413
kas5858 писал(а): Пн фев 03, 2020 7:29 pm
pasha413 писал(а): Вс фев 02, 2020 10:08 am Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Мой вариант решения с подсказки "SmoKE_xDDD"
Меняем код в методе update

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

/*
include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php");
$app_yatraffic=new app_yatraffic();
$app_yatraffic->get_traffic(gg("yt_settings.reg_id"));
*/
//Регион
$myRegion = '213'; // пишем свой регион
//Получаем данные от Яндекса
$getYandex = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region='.$myRegion));
$getYandex = json_decode(json_encode($getYandex), TRUE);
//Уровень пробок от 1 до 9
$trafficBall = $getYandex["traffic"]["region"]["level"];
sg("yt_info.level",$trafficBall);
//Текстовый статус, зеленый, желтый, красный (На инглише)
$trafficColor = $getYandex["traffic"]["region"]["icon"];
sg("yt_info.icon",$trafficColor);
sg('yt_info.color_level','<font color='.$trafficColor.'>'.gg('yt_info.level').'</font>');
//Текстовое оповещение - Дороги почти свободны
$trafficText = $getYandex["traffic"]["region"]["hint"][0];
sg("yt_info.val",$trafficText);
//Время последнего обновления
$trafficTime = $getYandex["traffic"]["region"]["time"];
sg("yt_info.time",$trafficTime);
//
$trafficTend = $getYandex["traffic"]["region"]["tend"];
sg("yt_info.tend",$trafficTend);
//Название города
$trafficSity = $getYandex["region"]["title"];
sg("yt_info.city_title",$trafficSity);
В методе onNewHour обьекта ClockChime
в конце

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

callMethodSafe('yt_info'.'.'.'update');
В настройках модуля убрать частоту обновления.
Если модуль поправят, можно оперативно все вернуть.
спасибо, помогло