Перейти к содержимому


Фотография

Ide Для Разработки И Отладки Плагинов Для Dune Hd


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 103

#61 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 28 April 2020 - 11:41

Для каналов без epg надо сделать фейковое epg c интервалом час или меньше или больше.

Подскажите как это прописать,кусок кода очень бы помог.
Спасибо.

#62 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 28 April 2020 - 12:36

В плагине liteIPTV файл Smart_m3u_tv.php строки 323-325


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#63 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 28 April 2020 - 14:08

В плагине liteIPTV файл Smart_m3u_tv.php строки 323-325


Спасибо маэстро, именно то,что искал.

#64 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 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(
            '&#196;' => 'Г„',
            '&#228;' => 'Г¤',
            '&#214;' => 'Г–',
            '&#220;' => 'Гњ',
            '&#223;' => 'Гџ',
            '&#246;' => 'Г¶',
            '&#252;' => 'Гј',
            '&#39;' => "'",
            '&quot;' => '"'
        );

        $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);
    }


#65 Brigadir

Brigadir

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 5274 сообщений
  • Gender:Male
  • Location:Russia

Отправлено 28 April 2020 - 22:06

Если еще актуально, и вообще для понимания:

PluginInvalidateFolders - переинициализирует папки, но не перегружает айтемы в текущей папке. Т.е. это можно использовать для перекрытых папок, когда вы к ним вернетесь информация в них будет обновлена.

PluginUpdateFolderAction - обновить айтемы в текущей папке.

ShowMainScreen - выход на главный экран (выход из плагина и подкатегорий главного меню)

OpenFolder - открыть папку. Не пытайтесь организовать обратную навигацию с помощью этого действия.

CloseAndRunAction - закрывает диалог или текущую папку или останавливает внутренний плеер если нет открытых диалога или папки (например во время воспроизведения). Обратную навигацию правильно делать закрытием папок и CloseAndRunAction - это самое оно.

 

Вглядитесь, много интересного найдете.


Dune HD Pro One 8K Plus (240201_2116_r22)
Dune HD Real Vision 4K (230929_0206_r21)
Dune HD 303D (190919_0242_r11) Сист. флешка присутствует, тестовая
-----------------------------------
Keenetic Giga (KN-1010)

Все мои (и не только) плагины Dune HD
Гранд обзор Dune HD Pro One 8K Plus
Краткий обзор Dune HD Pro 4K II
Краткий обзор Dune HD Neo 4K с картинками

(ЮMoney для благодарностей)

#66 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 28 April 2020 - 23:41

Не знал что CloseAndRunAction и папки закрывает  :rolleyes: 


Посмотрите пожалуйста, не могу разобратся как в if задать условие если epg отсутствует,тогда заменить его на "On Air"

а как определяется что нет epg? с сервера ничего не приходит?
Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#67 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 29 April 2020 - 07:33

Не знал что CloseAndRunAction и папки закрывает  :rolleyes: 
а как определяется что нет epg? с сервера ничего не приходит?

Да,на сервере просто отсутствует epg для канала.

#68 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 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

вот это и будет условием


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#69 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 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
вот это и будет условием
Напишите пожалуйста пример готовой функции если не сложно.
В PHP мягко говоря мне тяжело.

#70 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 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) {
....

Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#71 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 29 April 2020 - 16:07

так откуда я знаю что там приходит с сервера. 
Возможно 

...
$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) {
....
Сейчас проверил,там вообще ничего не приходит т.е json отсутствует.
Если к примеру изменить вот так:

if (count ($ch_data->epg_data) >= 0)

То на всех каналах где есть epg меняется на On Air, а каналы которые были без epg так и остаются пустыми (без On Air)

#72 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 29 April 2020 - 17:22

так тогда 

if ($doc == '')

Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#73 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 29 April 2020 - 18:17

так тогда 

if ($doc == '')
Тоже самое к сожалению.
Я могу ошибаться,но мне кажется условие if нужно задать где то выше в этой функции.
Попробую объяснить хотя возможно я и ошибаюсь:
Тут на сколько я понял мы работаем с переменной $doc а она ничего не знает о каналах,на которых отсутствует epg и о каналах в целом т.к с сервера по этим каналам ничего не приходит.
' ' это я так понимаю аналого $null или $false или все же wildcard?

Если я беру из вашего плагина всю функцию
public function get_day_epg_iterator($channel_id, $day_start_ts, &$plugin_cookies)
целиком, то на всех каналах,заменяется на "On Air"

#74 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 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 


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#75 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 29 April 2020 - 18:38

$doc = HD::http_get_document(sprintf(DemoConfig::EPG_URL_FORMAT, $channel_id));
if ($doc == '')
если там пустой json то проверяем наличие epg

Напишите пример пожалуйста, что то я не догоняю как это писать.

#76 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 29 April 2020 - 20:02

я тоже не догоняю. сферический конь в вакууме он такой.  

у каналов без епг что приходит от сервера? 


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#77 Brigadir

Brigadir

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 5274 сообщений
  • Gender:Male
  • Location:Russia

Отправлено 29 April 2020 - 21:06

Напишите пример пожалуйста, что то я не догоняю как это писать.

Берете добавляете строку
var_export($doc);
и смотрите в логах содержимое. Если пустая строка или false или null, то в if используйте языковую конструкцию empty($var), т.е.
if (empty($doc))
{
//On Air
}
Dune HD Pro One 8K Plus (240201_2116_r22)
Dune HD Real Vision 4K (230929_0206_r21)
Dune HD 303D (190919_0242_r11) Сист. флешка присутствует, тестовая
-----------------------------------
Keenetic Giga (KN-1010)

Все мои (и не только) плагины Dune HD
Гранд обзор Dune HD Pro One 8K Plus
Краткий обзор Dune HD Pro 4K II
Краткий обзор Dune HD Neo 4K с картинками

(ЮMoney для благодарностей)

#78 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 29 April 2020 - 21:45

Берете добавляете строку
var_export($doc);
и смотрите в логах содержимое. Если пустая строка или false или null, то в if используйте языковую конструкцию empty($var), т.е.
if (empty($doc))
{
//On Air
}

Благодарю за совет
Это то,что возвращает сервер при наличии EPG


HTTP fetching 'http://epg.ott-play....g/2672.json'...
HTTP OK (200)

Это то,что сервер возвращает при отсутствии EPG

HTTP fetching 'http://epg.ott-play....g/2671.json'...
HTTP request failed (404)

Вопрос как в случае request failed (404) прописать в if
Возможно по стрингу искать конкретную фразу но как тогда выглядит синтаксис.
Спасибо!

Да,и ещё вопрос:
Такая конструкция работает в РНР?
if (!(empty($doc))) то есть if not

#79 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 29 April 2020 - 23:26

if ($doc == false) 

не срабатывает?

 

вообще если есть апи мне кажется гдето должно быть указано что епг нет, что бы не было таких запростов 404. 


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#80 denik79

denik79

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4739 сообщений
  • Gender:Not Telling

Отправлено 30 April 2020 - 00:02

if ($doc == false)
не срабатывает?

Я попробую.
Маэстро,мне кажется что в переменной $doc вообще не будет ни false ни null,да и вообще никакой инфы о канале судя по этому
json_decode($doc)
т.к если нет json-a нет и выхлопа в переменную или errors так же записываются в переменную?

Вы не будете против если я вам в личку скину ссылку на плагин,а вы у себя посмотрите?