Подскажите как это прописать,кусок кода очень бы помог.Для каналов без 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)не срабатывает?