Подскажите как это прописать,кусок кода очень бы помог.Для каналов без epg надо сделать фейковое epg c интервалом час или меньше или больше.
Спасибо.
Отправлено 28 April 2020 - 11:41
Подскажите как это прописать,кусок кода очень бы помог.Для каналов без epg надо сделать фейковое epg c интервалом час или меньше или больше.
Отправлено 28 April 2020 - 12:36
В плагине liteIPTV файл Smart_m3u_tv.php строки 323-325
Отправлено 28 April 2020 - 14:08
В плагине liteIPTV файл Smart_m3u_tv.php строки 323-325
Отправлено 28 April 2020 - 15:37
В плагине liteIPTV файл Smart_m3u_tv.php строки 323-325
Посмотрите пожалуйста, не могу разобратся как в if задать условие если epg отсутствует,тогда заменить его на "On Air"
public function get_day_epg_iterator($channel_id, $day_start_ts, &$plugin_cookies) { if (preg_match("|[a-zA-Z]|", str_replace('_HD', "", $channel_id))) { for ($i = -24; $i<24; $i++) $epg[$day_start_ts + ($i*3600)] = array("name" => "On Air", "desc" => ''); } else $file = sprintf(DemoConfig::PROGRAM_DESCRIPTION, 'den.', '/test.', 'tv_club/', true); $rows = array(); $rows = file($file, FILE_IGNORE_NEW_LINES); $t1 = $rows[1]; $t2 = $rows[2]; $replace = array( 'Ä' => 'Г„', 'ä' => 'Г¤', 'Ö' => 'Г–', 'Ü' => 'Гњ', 'ß' => 'Гџ', 'ö' => 'Г¶', 'ü' => 'Гј', ''' => "'", '"' => '"' ); $channel_id = explode("&&", $channel_id); $channel_id = $channel_id[1]; $epg_date = gmdate("Ymd", $day_start_ts); $epg_date_end = gmdate("Ymd", strtotime('+1 day', $day_start_ts)); $epg = array(); if (file_exists("/tmp/TV_Club_channel" . $channel_id . "_" . $day_start_ts)) { $doc = file_get_contents("/tmp/TV_Club_channel" . $channel_id . "_" . $day_start_ts); $epg = unserialize($doc); } else { try { $doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id)); } catch (Exception $e) { hd_print("Can't fetch EPG ID:$id"); return array(); } $ch_data = json_decode($doc); foreach ($ch_data->epg_data as $key => $value) { if ($value->time >= strtotime($epg_date) AND $value->time < strtotime($epg_date_end)) { $epg[$value->time]['name'] = $value->name; $epg[$value->time]['descr'] = $value->descr; } } if (count($epg) > 0) { file_put_contents("/tmp/TV_Club_channel" . $channel_id . "_" . $day_start_ts, serialize($epg)); } } $epg_result = array(); ksort($epg, SORT_NUMERIC); $start = 0; $end = 0; foreach ($epg as $time => $value) { $tm = $time; if ($start == 0) $start = $tm; $end = $tm; $epg_result[] = new DefaultEpgItem( str_replace(array_keys($replace), $replace, strval($value["name"])), str_replace(array_keys($replace), $replace, strval($value["descr"])), intval($tm), intval(-1)); } return new EpgIterator($epg_result, $start, $end); }
Отправлено 28 April 2020 - 22:06
Если еще актуально, и вообще для понимания:
PluginInvalidateFolders - переинициализирует папки, но не перегружает айтемы в текущей папке. Т.е. это можно использовать для перекрытых папок, когда вы к ним вернетесь информация в них будет обновлена.
PluginUpdateFolderAction - обновить айтемы в текущей папке.
ShowMainScreen - выход на главный экран (выход из плагина и подкатегорий главного меню)
OpenFolder - открыть папку. Не пытайтесь организовать обратную навигацию с помощью этого действия.
CloseAndRunAction - закрывает диалог или текущую папку или останавливает внутренний плеер если нет открытых диалога или папки (например во время воспроизведения). Обратную навигацию правильно делать закрытием папок и CloseAndRunAction - это самое оно.
Вглядитесь, много интересного найдете.
Отправлено 28 April 2020 - 23:41
Не знал что CloseAndRunAction и папки закрывает
а как определяется что нет epg? с сервера ничего не приходит?Посмотрите пожалуйста, не могу разобратся как в if задать условие если epg отсутствует,тогда заменить его на "On Air"
Отправлено 29 April 2020 - 07:33
Да,на сервере просто отсутствует epg для канала.Не знал что CloseAndRunAction и папки закрывает
![]()
а как определяется что нет epg? с сервера ничего не приходит?
Отправлено 29 April 2020 - 11:51
смотрите что приходит от сервера
$doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id));
и что в этом объекте
$ch_data = json_decode($doc);
возможно количество итемов
$ch_data->epg_data
равно нулю если нет епг для этого id
вот это и будет условием
Отправлено 29 April 2020 - 14:21
Напишите пожалуйста пример готовой функции если не сложно.смотрите что приходит от сервера
$doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id));и что в этом объекте$ch_data = json_decode($doc);возможно количество итемов$ch_data->epg_dataравно нулю если нет епг для этого id
вот это и будет условием
Отправлено 29 April 2020 - 15:06
так откуда я знаю что там приходит с сервера.
Возможно
... $ch_data = json_decode($doc); if (count ($ch_data->epg_data) == 0){ for ($i = -24; $i<24; $i++) $epg[$day_start_ts + ($i*3600)] = array("name" => "On Air", "desc" => ''); }else foreach ($ch_data->epg_data as $key => $value) { ....
Отправлено 29 April 2020 - 16:07
Сейчас проверил,там вообще ничего не приходит т.е json отсутствует.так откуда я знаю что там приходит с сервера.
Возможно... $ch_data = json_decode($doc); if (count ($ch_data->epg_data) == 0){ for ($i = -24; $i<24; $i++) $epg[$day_start_ts + ($i*3600)] = array("name" => "On Air", "desc" => ''); }else foreach ($ch_data->epg_data as $key => $value) { ....
Отправлено 29 April 2020 - 17:22
так тогда
if ($doc == '')
Отправлено 29 April 2020 - 18:17
Тоже самое к сожалению.так тогда
if ($doc == '')
Отправлено 29 April 2020 - 18:32
с моего плагина брать не надо там id совсем другие с привязкой ко всетв, а в этом плагине свои.
$doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id));
это грузит с сервера json. Я же писал выше если епг нет то оно чтото присылать может типа пустого json вот этот пустой json или пустой документ и будет признаком того что епг нет и надо создать фейковый. Если документ пустой то условием будет
if ($doc == '')
если там пустой json то проверяем наличие epg
Отправлено 29 April 2020 - 18:38
$doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id));if ($doc == '')если там пустой json то проверяем наличие epg
Отправлено 29 April 2020 - 20:02
я тоже не догоняю. сферический конь в вакууме он такой.
у каналов без епг что приходит от сервера?
Отправлено 29 April 2020 - 21:06
Берете добавляете строкуНапишите пример пожалуйста, что то я не догоняю как это писать.
Отправлено 29 April 2020 - 21:45
Благодарю за советБерете добавляете строку
var_export($doc);
и смотрите в логах содержимое. Если пустая строка или false или null, то в if используйте языковую конструкцию empty($var), т.е.
if (empty($doc))
{
//On Air
}
Отправлено 29 April 2020 - 23:26
if ($doc == false)
не срабатывает?
вообще если есть апи мне кажется гдето должно быть указано что епг нет, что бы не было таких запростов 404.
Отправлено 30 April 2020 - 00:02
Я попробую.if ($doc == false)не срабатывает?