Приёмы разработки плагинов Dune HD: контент и воспроизведение¶
Часть каталога о контенте и воспроизведении: каталоги и поиск, избранное и история, потоки и плеер, ТВ и EPG, торренты и загрузки. Это разделы 6–8 и 14 общего каталога; их нумерация сохранена.
Объект: VOD- и ТВ-плагины (Smart_*, youtube_api/folder_cache, Anidub.Com, FREE TV, MegaAnime, altSource, altIPTV,
GlobalTV, zlostnyi и другие) и поставщики фильмов dunemdb (Online Movies, Online services, Megogo, Okko); уровень
code, отдельные наблюдения — по сообщениям пользователей; платформа и прошивка исполнения в большинстве единиц не
установлены. Платформенные факты — по tv188b r24/r25.
Эта область — всё, что плагин показывает как «контент»: откуда берутся категории и списки фильмов, как устроены
поиск, избранное, история и родительский контроль, как фильм попадает в поиск оболочки через поставщика. Экраны, на
которых это живёт, — §4 и guide/gui-screens.md; передача фильма в плеер — §7 и
guide/playback.md; где хранить списки и куки — §10. Поставщики фильмов как механизм оболочки описаны в
guide/movie-suppliers.md, здесь — только приёмы плагинов.
6.1. Поставщик фильмов dunemdb: описатель и регистрация¶
Поставщик — плагин, который оболочка опрашивает при поиске фильма; регистрация и ключи описателя на стороне
прошивки — guide/movie-suppliers.md §2–§3 и §8. Сторонние поставщики поддерживают два пути:
скрипт movie_suppliers_update.sh, который на r24 запускает оболочка с парами <id> <caption>
(код r24)1, и собственную запись описателя в /tmp/movie_suppliers для
прошивок без этой возможности.
bin = cd <каталог bin> && $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php; Megogo и Okko при пустом FS_PREFIX ставят ./run.py
на r25 команды стороннего поставщика с bin без cd выполняются с текущим каталогом / (устройство r25)6
Online services (код)7; Online Movies (TV Series) — с -c <каталог bin> (код)8; Megogo (код)9; Okko (код)10
Зарегистрироваться на прошивке без movie_suppliers_update
global_actionsboot_end/install/update с if="not(firmware_feature(movie_suppliers_update))" запускают скрипт, который пишет описатель в $FS_PREFIX/tmp/movie_suppliers/<id>
на прошивке с этой возможностью действия не выполняются; Online services дополнительно выходит без php-cgi или без newgui2021 в firmware_features.txt
movie_suppliers_update.sh пишет описатель в $FS_PREFIX/flashdata/plugins_data/<плагин>/movie_suppliers/<id>, register_supplier.sh — тот же описатель в /tmp/movie_suppliers
описатель задан в двух скриптах
Megogo (код)14; Okko (код)15; Online Movies (TV Series) (код)16
Старый путь: писать описатель всегда
boot_end/install/update без условия → register_supplier.sh пишет JSON (plugin, caption, langs, bin) в /tmp/movie_suppliers/movies_rus; params/movie_suppliers в манифесте нет
r24 перечитывает поставщиков по /tmp/movie_suppliers_changed.flag (код r24)17; что из этого следует для плагина — в §19
Собрать набор поставщиков из конфигурации сервисов
update_movie_suppliers.php читает /flashdata/movie_services/config.json и /config/services_effective_config.json, берёт сервисы своего plugin_name, пишет описатели включённых и удаляет выключенных
без любого из файлов или при ошибке разбора — только сообщение, изменений нет
install.sh при newgui2021 вызывает register_movie_suppliers.sh; скрипты register_supplier_amediateka.sh и register_supplier_start.sh при найденном php-cgi пишут JSON-описатели DuneHDTVAmediateka и DuneHDTVStart в $FS_PREFIX/tmp/movie_suppliers; play_action — plugin_handle_user_input с handler_id=entry, control_id=ensure_logged_in, entry_id=movie_supplier
$FS_PREFIX/firmware_ext/php/php-cgi при HD_APK=1 или platform_kind android, иначе bin/87xx/php-cgi или bin/86xx/php-cgi по первым двум цифрам platform_kind, иначе exit 1; bin поставщика — <php-cgi> -f <bin>/run.php
bin/run.php принимает одну команду (get_episodes, do_file_search, get_stream_url), JSON-вход читает из stdin и печатает JSON; токен берёт из supplier_state.properties, иначе POST /auth/device с device_id из dune-hd.tv_plugin_cookies.properties, если он там есть, и сохраняет обратно
register_movie_suppliers.sh пишет время в $FS_PREFIX/config/mdb_timestamp и создаёт $FS_PREFIX/tmp/plugins/shell_ext/update_epfs_if_needed_flag; uninstall.sh при newgui2021 делает то же
в register_movie_suppliers.sh удаление DuneHDTVMegogo/DuneHDTVMegogoKids идёт по "$dirpath/…", но dirpath не задана
bin/movie_suppliers_update.sh при найденном php-cgi пишет те же описатели в $FS_PREFIX/flashdata/plugins_data/dune-hd.tv/movie_suppliers, bin — cd <bin> && <php-cgi> -f <bin>/run.php
6.2. Поставщик изнутри: публикации, серии и порядок источников¶
Команды, которые оболочка шлёт поставщику (get_episodes, do_file_search и другие), описаны в
guide/movie-suppliers.md §4 и §7. Плагины реализуют их так.
Задача
Приём
Грабли и ограничения
Плагины и claims
Найти публикации по Кинопоиску
из movieInfo.movieExtId берётся kinopoisk:<id>, по нему — поиск в Solr сайта и замена хоста и пути
cmp_torrents: bonus, invalid, good_ids, настройки качества, затем seeders/quality/size; режим quality — до двух раздач на разрешение, максимум 8; зелёная кнопка переключает режим
do_file_search для остальных типов заново получает публикации, резолвит поток по pub->id и кладёт файл с id = JSON {pub_id, file_url = pub->id}, caption публикации и quality HD; неудачные публикации пропускаются
TorrentInfo::has_episode: false для invalid; для single_episode требует совпадения s и e; для диапазона проверяет сезон и границы episodes.from/to с поправкой на сумму эпизодов предыдущих сезонов
Каталог — дерево папок «категории → список → карточка»; виды папок и ленивая отдача элементов — в
guide/gui-screens.md §2.2 и §2.9. Источник данных плагины берут очень разный: зашитый массив,
XML демо-сервера Dune, JSON API провайдера, M3U или HTML сайта.
Задача
Приём
Грабли и ограничения
Плагины и claims
Категории без API
массив категорий и жанров в коде
список не приходит с сервера
FREE TV — 4 категории и 33 жанра (код)39; zlostnyi (bcu) — одна категория плюс «Избранное» и «Поиск» (код)40
Видеотека на XML демо-сервера Dune
vod_categories (вложенные — подкатегории), movie_list/movies, movie_info с series/item; разбор через simplexml_load_string
адреса указывают на online.dune-hd.com/demo2 или flussonic2; в bcu константы есть, но не используются
если URL содержит vk.com, get_vod_stream_url читает video_no_flv и video_host; для не-FLV — video_uid, video_vtag, video_max_hd и ограничение качества, для FLV — assets/videos/…vk.flv
getTrailerFiles берёт кэш $trailer->trailerFiles, иначе разбирает XML, при null переходит на HTML и сохраняет в кэш результат, отличный от null; generatePlayInfo затем берёт файл по fileIndex
/channels, /search, /videos, /playlistItems; с channelId — меню канала по /channels и /search; без него — готовый category_info из tmp или сборка из data/channel_list.xml: [videos]/[playlists] через /search, [live] при totalResults > 0
в ветках /validate/, obrut, ALLOHA, videoseedcdn.com cookie video_quality 4/3/2/1 = 1080/720/480/360, по умолчанию 4; в /validate/ и videoseedcdn.com берётся максимальная дорожка не выше выбранной
HdKinoTeatr.Com берёт категории из class="cats" и ссылок href; при совпадении var vkArr в parse_video_page массив декодируется как JSON, а file/comment его элементов дают источники
каталог — ссылки a.index_genre с количеством книг в index_genre_count, «Авторы» и «Исполнители» — из списка букв _letters; списки кэшируются по категориям
RainVod::load_movies создаёт на каждый элемент Config::$ICONS_GENRES_MAPShortMovie и Movie с series_data (playback_url = stream_url, playback_url_is_stream_url=true)
6.4. Поиск: диалог, история запросов, поиск по сайту, подсказки¶
Экран поиска с пунктом «новый запрос» и историей прошлых запросов встречается в шести плагинах (строка «История
запросов» ниже); диалог с текстовым полем и экранной клавиатурой описан в guide/input-dialogs.md§2.5. Историю хранят по-разному: AceStreamSearch — в plugin_cookies->history
(код)88, zlostnyi — файлом в data_dir_path
(код)89 (см. §10).
Задача
Приём
Грабли и ограничения
Плагины и claims
Диалог поиска
текстовое поле, has_osk по настройке, кнопки «Искать»/«Отмена»; запрос сохраняется и упаковывается в media_url (ser_feed) открываемой папки
при OSK Anidub.Com ставит вертикальный отступ 500, иначе 50
POST DLE /index.php?do=search с result_from, GET /search/… или /?s= с номером страницы; конец — по маркеру на странице или _end_ в m_feed; Zona.mobi при m_feed != _end_ запрашивает search/<genre_id> с X-Requested-With: XMLHttpRequest и ставит _end_ при current_page == total_pages
шаг выдачи у сайтов разный (10, 70, 12); у части сайтов поиск одноразовый; заголовки и фильтры зашиты в код (Filmix — годы 1902–2018); по сообщениям пользователей, в karas-avadim 1.0.0 поиск не работает
YouTube /search с maxResults=50; AceStream — локальный движок 127.0.0.1:6878 с токеном или удалённый с API-ключом, page_size=50; Filmix_API — одноразовый /suggest?word=<keyword>; Alphacoders — search с term и width=1920&height=1080
удалённый ключ по умолчанию test_api_key; Filmix_API и Alphacoders отдают только одну страницу
при control_id = yt_search берутся artist и track, склеиваются через « - » и открывается SmartVodListScreen с category_id=search, genre_id = строка и name=youtube_search; класс Youtube — во внешнем link_api.php
по сообщениям пользователей, возврат из окна поиска даёт чёрный экран
Избранное — список id в куках или в файле плюс стандартные операции оболочки над ним. Одно и то же имя
favorite_movies плагины хранят и в plugin_cookies, и в файлах HD::get_items — см. §18.
Задача
Приём
Грабли и ограничения
Плагины и claims
Хранить избранное в куках
favorite_movies или favorite_channels в plugin_cookies — id через запятую (preg_split/join)
—
Torrent Center (код)115; Moi-Dom.tv (код)116; Peers.TV — пустые id отбрасываются (код)117; pirates_* (код)118; zlostnyi (код)119; WeburgTV (код)120; surface_* (SomaFM, Radiopotok.ru) (код)121; Bazinga (SmartVod) (код)122; AllTV — пустые id отбрасываются (код)123
Хранить избранное в файле
HD::get_items/HD::save_items('favorite_movies'), у altSource — список media_url в DATA, у altIPTV — сериализованный файл при fav_save=1
у Smart_* методы с суффиксом from/to_cookies на деле пишут файлы
подкаталог в main_screen_items с dune_folder.txt (media_url, media_url_check=no, media_action=browse); удаление — dune_folder.txt и rmdir
с прошивки 130515 и build ≥ 2104 — три каталога, persistfs только если смонтирован, иначе только /config/main_screen_items; если ни один каталог не открылся, ответ без command_status
запись в itemsHistory на первом событии таймера VOD; экран истории с удалением одного элемента или всей истории
история обрезается до 310 элементов; DUNE-HD.TV хранит историю просмотра архива в plugin_cookies->prodhist — JSON, до 8 записей type/product_id, новые — в начало
OAuth (password/refresh_token), JSON-RPC; при playback_stop — manage.CheckEpisode; сезон и серия — из имени файла набором регулярок; импорт логина из DATA Bazinga (unserialize)
брать записи с uid на smb://, группировать по uid, побеждает наибольший start, но «касание» (watched < 120 с и pos/len < 5%) уступает более поздней записи с долей > 5 %; network_folder_id:// переписывается по network_folders.properties
по сообщениям пользователей, переносимы только записи smb://, а online_movies: и storage_name: — нет (форум r22)155; по тем же сообщениям, на реальных данных защита поймала 14 из 15 откатов (форум r22)156
AddTorrentDialog::apply_series читает info_by_name из detect_series и проставляет s/e найденным файлам; вне switch_mode при count(series)==1, season<0 и chosen_op не play/download сразу запускает vod_play; play открывает torrent_files с выбранным файлом, download запускает download_torrent, иначе открывается папка torrent_files
do_play: choice_auto = resume/auto_choose/auto_start; при choice_auto и s/e ≥ 0 входит в сезон/эпизод; без torrent_uid и при user_choice != resume берёт recent_or_first_torrent_uid; при disable_switch и найденном tor — ensure_own_torrserver (если нет torrserver_checked) и open_torrent, иначе vod_play всех эпизодов; get_vod_stream_url бросает DuneException с действием choose_playback_stream и playback_url
/post/<video_id>?; при пустом player_links->playlist перебирает player_links->movie и строит серии по title/translation/quality из квадратных скобок; иначе playlist по сезонам, переводам и сериям, %s заменяется на [<qualities>]; Movie получает серии или сезоны-папки
VodSeriesListScreen эталона: при control_id=save_folder удалить сохранённую папку фильма, если она есть, иначе при заданной movie.series_list сохранить HD::baseitem URL серий под movie_id/season_id; в списке фильмов эталона для фильма, присутствующего в save_folder, сравнить полученные parse_season_items URL с сохранёнными и пометить отсутствующий [NEW] и цветом 18
Для каналов плагины делают так: канал помечается is_protected = 1, а get_tv_playback_url сравнивает
переданный protect_code с сохранённым кодом и при несовпадении не отдаёт URL.
Задача
Приём
Грабли и ограничения
Плагины и claims
Закрыть каналы кодом
protected=1 в списке или защищённая группа → is_protected = 1; при неверном protect_code — пустая строка, false или строка protected
AllTV, altIPTV и EvolutionTV хранят код в куке (pass_sex, pin — по умолчанию 0000, current_pcode_save)
при defined('PluginTvInfo::builtin_pcontrol_enabled') — пароль из /config/parental_control_password.txt в PluginTvInfo::entered_pcode, иначе своя проверка
цепочка диалогов «18+» и установки кода держит флаги в plugin_cookies
выбор порядка в куке, затем change_list_config_reset_to_default или change_list_config_replace_order; редактор разделов и категорий с группами и EDIT_LIST_CONFIG_OPT_REMOVE_UNCHECKED для избранного
при входе в канал запускается bin/irc.sh start (IRC через /dev/tcp, лог в /tmp/tw_irc.log); действие chat показывает диалог, который по GUI_EVENT_TIMER каждые 2000 мс закрывается и открывается заново; stop_irc останавливает демон
перед записью лог обрезается до последних 7 строк; пустой auth_token проходит проверку
Объект: приёмы воспроизведения в PHP-плагинах (Smart_* и link_api, YouTube (Smart_*), youtube_api/folder_cache,
ProIPTV, altIPTV, liteIPTV, zlostnyi, FREE TV, GlobalTV, Kaban.tv, plugtv, MegaTorrents, altSource, DunePlexCatalog и
другие) и в Android-приложениях Jellyfin Bridge и Lampa bridge; уровень code, отдельные сведения — forum. Платформа
и прошивка исполнения у большинства плагинов не установлены; где плагин ветвится по платформе (Android/APK, Sigma), это
сказано в строке.
Плагин сам не декодирует видео: он отдаёт плееру URL — через PluginVodInfo и PluginTvInfo, через
launch_media_url или интентом Android — и при необходимости переписывает его так, чтобы плеер выбрал нужный
демультиплексор. Что понимает плеер, какие действия запускают VOD и ТВ и какие события приходят во время
воспроизведения, описано в guide/playback.md §1–§4; ниже — как это используют плагины. Торрент-потоки,
AceStream и загрузки — в §14, EPG и разбор плейлистов — в §8.
7.1. Обёртки URL: http://mp4://, http://ts://, audio_stream и |||dune_params|||¶
SDK рекомендует для MP4 по HTTP схему http://mp4://host…, для TS — http://ts://…, а для multicast —
udp:/@ip:port (SDK)194; параметры плееру
дописываются после магии |||dune_params||| через запятую (код r25)195.
Подробно — guide/playback.md §2.1. Плагины делают это так:
Задача
Приём
Грабли и ограничения
Плагины и claims
Отдать MP4 по HTTP
заменить http(s):// на http(s)://mp4://; большинство плагинов — только для URL на .mp4, не .m3u8 и ещё не обёрнутого
проверка «уже обёрнут» нужна, иначе получится двойная схема
в get_tv_playback_url (ветка $restrict_ch, не-passive канал) после ответа API с hls/local/local_low к URL добавляется \|\|\|dune_params\|\|\| с ll_prebuf_for_http_ts:1, psi_opt:2, ss_for_http_ts:1, keep_pic:0 и опциями платформы; I24hTv добавляет lower_cpu_load:1, если в /tmp/sysinfo.txt нет solo4k и _r11; вне Android и на Amlogic — buffering_ms:300, на Amlogic ещё frame_rate:25000, на s905l2 к HLS — engine:1
Android определяется по /system/dunehd/init или HD_APK=1, Amlogic — по префиксу s905 в /firmware/config/android_platform.txt
BtvVod::get_buffering_ms читает plugin_cookies->http_caching (по умолчанию 3000), а ТВ берёт значение из статического BTV::$buffering_time, который выставляется только настройкой
tvteam при format = 'hls' переводит URL на http://ts://, при format = 'mpeg' заменяет mono.m3u8 на mpegts; при archive_ts > 0 в архиве format = 'hls' даёт index-<ts>-7200.m3u8, а format = 'mpeg' — archive-<ts>-7200.ts
Форматы, которые плеер не берёт напрямую, плагины пропускают через локальный CGI: URL вида
http://ts://127.0.0.1:81/cgi-bin/<скрипт>?<исходный URL> или CGI самого плагина. Скрипты на порту 81 входят в
codecpack, поэтому плагины проверяют или ставят его.
Задача
Приём
Грабли и ограничения
Плагины и claims
Проиграть FLV
http://ts://127.0.0.1:81/cgi-bin/flv.sh?<URL> для URL с .flv (без flv.sh)
MoviesTape формирует такой URL, хотя www/cgi-bin/flv.sh в его пакете нет
get_tv_stream_url при URL, начинающемся с /, запускает bin/play.sh и, если он что-то вывел, отдаёт http://ts://localhost:8081<URL> с dune_params; play.sh поднимает receive5 -h 18883, если процесс ещё не запущен (бинарник из $FS_PREFIX/firmware/bin/receive5, иначе из пакета); строки ELF receive5 содержат usage с -h <http_port> и сообщения HTTP-сервера
порт URL 8081 ≠ 18883; play.sh убивает receive5, если у него больше 3 сокетов; check_stop.sh раз в 5 с гасит его при непустом player_state, не равном file_playback; firmware/bin/receive5 есть в APK r24
streams/javedecoder.php распаковывает eval-пакет (unpackjs(), decode()); flashx после POST и sleep(10) берёт meta base и video src из .smil и собирает http://ts://127.0.0.1:81/cgi-bin/rtmp.sh?<base> playpath=<src> swfUrl=…; live-stream.tv делает то же из streamer и file
у flashx при неудаче первого шаблона smil.*?file.*?" скачивается отдельный .smil; swfUrl зашит
7.3. Где получать URL: get_*_playback_url, get_*_stream_url, резолверы¶
URL можно отдать сразу в описании канала или серии, а можно вычислять перед стартом. Признак
playback_url_is_stream_url говорит, считать ли playback_url готовым потоком; когда он false, плагин вызывает свой
get_tv_stream_url/get_vod_stream_url (схема действий — guide/playback.md §1.2–§1.3).
Задача
Приём
Грабли и ограничения
Плагины и claims
Live без своего кода
унаследованный AbstractTv::get_tv_playback_url возвращает streaming_url канала
архив и protect_code не учитываются; у pirates_* унаследованный get_tv_stream_url бросает исключение
при playback_url_is_stream_url=falseget_vod_stream_url вызывает mUrl::get_link(playback_url, качество), только если URL или качество отличаются от предыдущих, иначе отдаёт сохранённый результат; качество — filmix_quality для filmix, иначе video_quality (по умолчанию 1)
get_vod_info строит серии с полями name/playback_url/playback_url_is_stream_url и пропускает playback_url=dummy; буферизация — 3000 мс
getZonaMobiIframe(..., 'playbackUrl', 'https://w113.zona.plus') шлёт HEAD на /ajax/video с зашитым Cookie ZONAMOBI=…, затем GET /ajax/video/<id>?client_time=<из dune-club.info/tts> с JSON-заголовками
ответ, содержащий dune-club.info, считается ошибкой (заглушка)
в playback_urls добавляется plugin_tv://globaltv/<MediaURL> с preview=1 только при доступном pf_playback и не-adult канале; в get_tv_info наличие preview переключает выдачу с channels_file на встроенные groups/channels — одна группа и один канал с playback_url_is_stream_url=1
для adult и имён с префиксом XXX предпросмотра нет
combobox stream_type (local «Наилучшее», local_low «Хорошее», hls «Авто», по умолчанию hls) сохраняется в plugin_cookies->stream_type; в ветке $restrict_ch (канал не защищён, родительский контроль выключен или код 0000, либо protect_code верен) для не-passive канала get_tv_playback_url запрашивает v2/channels/<id>/stream с type из forced_stream_type или этой настройки и берёт hls, иначе local, иначе local_low
при исключении «403» возвращается http://mp4://media.zt.platform24.tv/Dune/geo_matras.mp4, иначе .../Dune/matras.mp4; для канала со streaming_url passive — тоже matras.mp4
embed-декодер возвращает строку между file: " и следующей кавычкой; обычная страница разбирает скрытые op/usr_login/id/fname/referer/hash/imhuman, после sleep(11) шлёт POST и собирает http://<url[3]>.youwatch.org:<url[2]>/<url[1]>/video.mp4 из file: или блока mp4\|video
Filmix получает ссылку через FilmixNext::getIframe (карточка, сезон, перевод), при .m3u8 возвращает URL без изменений, иначе mUrl::get_link; Kinogo.so — по числовому id из /<id>- в URL карточки, серии через getEpisodesKinoGo; KinoTochka.Club — kinotochka::getKinoTochkaIframe с режимами doc/seasons/episodes и cookie-файлом tmp_dir_path/kinotochka_cooki
у Filmix качество 1080/1440p/2160p предлагается только при успешном входе, 1440p/2160p — при HD::get_dash_platform_kind; у KinoTochka постер идёт через CGI do?img=
parse_video_page разбирает fs.to iframe (file : '…', pl : '…', f-play/rel); parse_other_sources добавляет moonwalk по kp_id (videos.json, iframe_url как серия, CamRip при camrip=1) и tree.tv (test.tree.tv/api по name_original/name, getfilm по page_id при совпадении year, качества 1080→360)
токен moonwalk зашит в коде; структура ответов API на живых сервисах не проверялась
parse_video_page запрашивает HOST_API_URL . "/post/<video_id>?" и разбирает JSON: при пустом playlist перебирает movie (title/translation/quality из квадратных скобок), иначе — сезоны, переводы и серии, заменяя %s на [<qualities>]
структура ответа API не проверялась на живом сервисе
пороги open/start/seek/buffering и «частая буферизация» (6 раз за 60 с); по истечении — SwitchDialog, который берёт позицию из plugin_vod_stop_position и открывает следующий торрент
по умолчанию включено только при /config/online_movies_full.flag; диалог открывается только при активном OSD
повторный запрос того же playback_url с тем же качеством инкрементирует $counter: если предыдущий ответ — массив, берётся $stream_urls[$counter], иначе отдаётся тот же результат; при отсутствии элемента или $counter > 4 — заглушка http://mp4://dune-club.info/plugins/update/1.mp4
7.6. Позиция, «продолжить», события и OSD во время воспроизведения¶
История просмотра и «Продолжить» в каталоге — §6.6.
SDK предлагает запоминать позицию по GUI_EVENT_TIMER, сохранять по GUI_EVENT_PLAYBACK_STOP и подставлять в
initial_position_ms (SDK)290, а поле playback_position файла
/tmp/run/ext_command.state называет временным решением вне официального API
(SDK)291. OSD и информационный блок — действия PluginUpdateOsdAction и
PluginUpdateInfoBlockAction (SDK)292; поведение на
прошивках — guide/playback.md §4.
Задача
Приём
Грабли и ограничения
Плагины и claims
Запомнить позицию и продолжить
таймер VOD читает /tmp/run/ext_command.state; позиция сохраняется по playback_stop и отдаётся в initial_position_ms
позиция ближе 5 с к концу (или pos+5 ≥ duration) сбрасывается в 0; altSource не хранит прогресс для части аудиоформатов (wav, ogg, flac…) и картинок
PluginVodInfo::actions с GUI_EVENT_KEY_*, GUI_EVENT_PLAYBACK_STOP, GUI_EVENT_TIMER; timer.delay_ms 500
YouTube добавляет PLAYBACK_GOING_TO_SWITCH, PLAYBACK_SWITCHED, KEY_SUBTITLE, KEY_INFO, KEY_TOP_MENU только при HD::get_versions() === true; в Twitch TV chat/stop_irc — control_id
Movie::get_vod_info сливает viewedItemsTmpArr в viewedItemsArr и для серии с записью отдаёт префикс [ПРОСМ] при viewed, иначе initial_position_ms = p × 1000; отрицательная позиция и позиция в пределах 5 с от конца сбрасываются в 0
на playback_switched при ims == 0 и сохранённом saveSeasonTimes[plugin_vod_id] плагин опрашивает http://127.0.0.1:<port>/cgi-bin/do?cmd=status до 130 раз по 50 мс до playback_state=playing, затем на Android ждёт ещё 0,8 с и шлёт cmd=set_playback_state&position=…&speed=256
до 130 опросов по 50 мс; ветка только при ims == 0
bin/rec.sh запускает screenrecord --size 1280x720 в фоне; stop_rec ищет pidof screenrecord и шлёт kill -2; status_rec отсчитывает 180 секунд; состояние (путь, время старта) — JSON rec_data в tmp_dir_path через HD::save_items_tmp
при проигрывании VOD/YouTube Movie::get_vod_info отдаёт actions с playback_stop watched, D_BLUE sleep и таймером 3000 мс; B_GREEN sound_info — только при наличии /firmware/bin/ffmpeg или /codeckpack/bin/ffmpeg, CLEAR yt_search — только при HD::get_versions() = true; OSD обновляется при HD::get_versions() = true, use_osd != 0 и id без youtube
ActionFactory::launch_media_url возвращает LAUNCH_MEDIA_URL_ACTION_ID с url и post_action; в обработчике playDirectly проверяется bareword is_stream_url, после чего возвращается launch_media_url(playback_url)
PHP-код плагина не вызывает IP Control: обращения к /firmware/ext_command/cgi-bin/do есть только в rc_extension.bash (exec_do, вызов закомментирован) и reboot.bash (cmd=ir_code)
механизм запуска в PHP-коде плагина не найден — §19
get_vod_info отдаёт plugin_vod_info из LampaDuneBridge::vod(LampaDuneBridge::load()); на command=play плагин возвращает plugin_open_folder с media_url=session и post_action=plugin_vod_play
экран фото получает список через PL::get_photos_list и кладёт в m3u URL transcode Plex; ENTER (control_id play) запускает launch_media_url на m3u с выбранного индекса, Play (control_id show) открывает одиночный URL; обложки и фоны запрашиваются через /photo/:/transcode с width, height, url=<BaseUrl><pic_url> и кэшируются (thumb/info, фото — photo)
при create_playlist == 1 (по умолчанию), l == false и заданном urls.video_urlget_vod_info перестраивает series_list из адреса папки (add_url_items_series_data) и берёт имя, описание и постер плейлиста из родительского media_url; иначе — имя, описание и первую картинку фильма
7.8. Отслеживание воспроизведения из Android-приложения: cmd=status¶
Приложения рядом с плеером (Jellyfin Bridge, Lampa bridge) узнают позицию опросом статуса плеера и сами решают, чьё это
воспроизведение и когда оно закончилось.
Задача
Приём
Грабли и ограничения
Плагины и claims
Разобрать статус
десять ключей (player_state, playback_state, playback_url, playback_position, playback_duration, android_app_active, video_enabled и др.); позиции — неотрицательные числа, секунды → мс; флаги — Boolean или 1/0/true/false
активно: не stopped и (позиция известна или player_state на _playback); видимость — по android_app_active, иначе по video_enabled/playback_window_fullscreen; перематывать — только при активном, видимом и duration > 0
подтверждение перемотки в пределах 5000 мс, повтор SEEK не чаще 2 с, после 10 попыток — сдаться; позиции около нуля до подтверждения игнорировать; для http(s) повторить перемотку при сбросе в 15-секундном окне
на PLAYBACK_ENDEDBridgeActivity на главном потоке вызывает returnToJellyfin: при setPlaybackResult() == true и activityManager != null — ActivityManager.moveTaskToFront(getTaskId(), 0) (лог «Bringing the existing Jellyfin task to the foreground», SecurityException логируется), затем finish(); при уже доставленном результате метод ничего не делает
наличие /firmware/lib/libvmclient.so и модель не из solo4k/sololite/duo4k; /tmp/verimatrix/hls_verimatrix_web.properties создаётся или удаляется по шаблону _r<цифра> в версии прошивки
на прошивках с _r каталог /tmp/verimatrix удаляется
только на Android/APK и branch_num >= 21: поправить cenc:default_KID, отдать через локальный /index.mpd; иначе заглушки not_support.ts/update_firmware.ts
Объект: ТВ-режим PHP-плагинов: IPTV-плагины (altIPTV 5.2.9, ProIPTV 9.1, WeburgTV 2.1.0, AceStreamSearch, AllTV 1.4.0,
EvolutionTV 1.4.0, FREE TV 1.1.4, Юрта ТВ 1.0.1, Kaban.tv, liteIPTV 1.8.5 и liteIPTVplus, Moi-Dom.tv 0.9.4, Novosib-iptv-2,
Peers.TV 2.0.0, семейство zlostnyi, GlobalTV 260130_1351), одноканальные плагины (rain_, plugtv, Kohana-канал) и
радио, отданное как ТВ (101.ru, MegaRadio, pirates_, surface_*). Уровень — code (отдельные строки — forum);
платформа и прошивка исполнения не установлены. Это факты кода плагинов, а не поведение прошивки.
ТВ-режим плагина держится на трёх вызовах оболочки: get_tv_info() отдаёт PluginTvInfo с группами и каналами,
get_tv_playback_url() — URL канала (live или архив), get_day_epg() — программу на день; минимум для ТВ по SDK —
get_tv_info() и get_tv_playback_url() (SDK)351. Поля PluginTvInfo/PluginTvChannel, разделение
playback URL и stream URL и каркас shell_ext прошивки описаны в guide/playback.md §1.3, параметры
dune_params — там же, §2.1. Ниже — как плагины собирают список каналов из плейлистов и API, разбирают M3U/XSPF,
строят архив и добывают EPG. Экраны и виды папок — §4, хранение cookie и кэша — §10, фоновые задачи (cron) — §13.
8.1. Каркас AbstractTv: PluginTvInfo, каналы, группы, радио как ТВ¶
Большинство плагинов не заполняют PluginTvInfo вручную, а наследуют библиотечный AbstractTv и описывают канал
классом поверх DefaultChannel; так же отдают платформе радиостанции.
Задача
Приём
Грабли и ограничения
Плагины и claims
собрать PluginTvInfo из объектов
AbstractTv::get_tv_info строит PluginTvChannel (id, caption, group_ids, icon_url, number, архив, защита, дни EPG, буферизация, timeshift_hours, playback_url_is_stream_url), PluginTvGroup и PluginTvInfo
в копии 101.ru get_tv_info() возвращает null, полная реализация — в копии DI
SmartChannel::get_timeshift_hours всегда 4, а SDK называет timeshift_hours нереализованным (SDK)359; у plugtv epg_cod и description читаются из list.xml, но нигде не используются
101.ru (код)360; FREE TV (код)361; MegaRadio (код)362; plugtv (код)363
заполнить PluginTvInfo вручную, без загрузки списка
канал — массив в конфиге и класс implements Channel; группы, каналы, initial_channel_id из media_url, избранное и архив выключены
каналы из зашитого в конфиг массива (у Kohana — один), номер k+1
AbstractTv плагина имеет публичный конструктор с favorites_supported; r24 реализует Tv и имеет protected-конструктор с mode, favorites_supported, playback_url_is_stream_url; get_fav_channel_ids плагина отбрасывает пустые элементы через get_ids_from_comma_split_str, r24 возвращает preg_split без фильтра
TvFavoritesScreen плагина принимает tv и folder_views, r24 — типизированный Tv и берёт виды через get_tv_channel_list_folder_views; ENTER/PLAY у плагина — create_action(play_tv), у r24 — ActionFactory::tv_play(); канал плагин читает через get_channel_by_id как массив с id/name, r24 — через get_channel с get_id/get_title
поля plugin_name, dir_path, base_tmp_path, tmp_epfs_path в плагине private static, в r24 protected static; get_epfs_ts_path в плагине всегда dir_path/id=tv, r24 выбирает tmp_epfs_path/dir_path и id=main; write_data_ts без ts — make_monotonic_ts (%010d.%06d) против sec.usec; RMC — rows_menu_config.json в каталоге плагина против rows_menu_config_<name>.json в EPFS_BASE
Conf::set_default в плагине печатает предупреждение о недостающем ключе, в r24 hd_print закомментирован; DefaultArchive при чтении versions.txt плагин вызывает HD::http_get_document только с URL, r24 передаёт ещё HD::get_dune_opts(); чтение size.txt в плагине без try/catch, r24 ловит Exception и подставляет doc=null
два элемента в массиве folder_views: у групп — сетка 7×2 и 2×4, у каналов — сетка 5×3 и один столбец на 10 строк; get_next_folder_view листает и пишет cookie screen.<screen_id>.view_idx, после последнего вида сбрасывает в 0
ViewItemParams::item_detailed_info с %tr%station_title и, если desc непустой, %tr%station_description; starred — по is_favorite_channel_id; plugtv показывает поток, разрешение и источник EPG (epg_server: 1 — «Внешний источник», 2 — «От провайдера», иначе «N/A»)
newworld берёт разрешение из сегмента URL, trofey — из названия канала
get_tv_info отдаёт каждый канал массивом ExtTvChannel с id, caption, group_ids, icon_url, number, have_archive, is_protected, past_epg_days/future_epg_days, archive_past_sec, archive_delay_sec, buffering_ms, timeshift_hours, playback_url_is_stream_url=true и ext_epg_enabled=true; исключённые каналы — в группе id_bin («Корзина»)
ActionFactory::add_osd_image добавляет PluginOsdComponent с image_url, координатами и размерами; add_osd_text — текстовый компонент с PLUGIN_FONT_NORMAL, цветом "15" и text_halo=false; update_osd передаёт components и post_action; update_info_block — text_above, text_color, text_halo, text_y_offset, post_action; status — аргумент status
8.2. Откуда взять список каналов и как разобрать M3U/XSPF¶
Список каналов плагины берут из файла в пакете, из API провайдера или из пользовательских плейлистов; M3U в разобранных
плагинах чаще всего разбирают собственными регулярками.
Задача
Приём
Грабли и ограничения
Плагины и claims
хранить список в пакете
XML с корнем tv_info: tv_categories/tv_category и tv_channels/tv_channel
локальный файл в пакете; у AllTV при cookie load_sex = yes читается другой файл
id и name категории — из channel_filters (кроме name = All); картинка категории — images_compact первого канала категории без шаблона {?size,height,width,quality,pad}
канал попадает в категорию только при наличии streaming_url
#EXTINF: название после запятой, атрибуты tvg-logo/tvg-id/group-title/catchup-days (WeburgTV), logo/id/epg_shift/group_id (Kaban.tv, EvolutionTV), cn-id/cn-records/logotip (FREE TV); URL — следующая строка
WeburgTV принимает URL, только если он начинается с http://, и не сбрасывает поля между итерациями; liteIPTV пропускает #EXTVLCOPT, #EXTGRP, #EXT-INETRA и перекодирует не-UTF-8 строки из WINDOWS-1251
parse_playlist выбирает XSPF при совпадении /xspf/i в имени входа, иначе M3U; запись parse_m3u содержит URL, caption, logo, group, tvg_name, user_agent, dune_zoom, group_title, id, parental и epg_shift
wwcam читает локальный channel_list.xml, затем добавляет каналы из двух M3U (https://iptvmaster.ru/webcams.m3u, https://iptvlist.ru/2762.m3u, строки EXTINF и URL) и tv_item из XML
parse_m3u() и clean_up_text_for_display() определены, но load_channels() их не вызывает
8.3. Идентификатор канала, склейка источников и группы¶
Id канала хранится в избранном (код)419, входит в имя файла кэша EPG (код)420 и в карту
channel_ids.txt для внешнего EPG (код)421, поэтому его стабильность важна; плагины чаще
всего выводят его из названия.
Задача
Приём
Грабли и ограничения
Плагины и claims
получить стабильный id из названия
md5 от названия в нижнем регистре без пробелов, кавычек и переводов строк (liteIPTV убирает ещё дефисы и точки); у link_api createIdKey переводит кириллицу в латиницу
id зависит от названия; AllTV при отсутствии хеша в таблице channels_id даёт 1000 + порядковый номер
ключ — нормализованное название; URL хранятся по источнику, выбранный источник — cookie src_<ключ>, если он есть среди URL канала; у Novosib-iptv ключ — md5(strtolower(caption)) без пробелов, кавычек и переводов строк, URL — в global_channels[key]['urls'][source]
одинаковые после нормализации названия склеиваются
группы из XML-категорий по tv_category_id, канал может быть в нескольких группах; у WeburgTV и MegaRadio id группы — md5 названия, у AllTV — intval категории
фиксированный список из 15 групп; канал попадает в группу при точном совпадении group-title с названием на сервере; плюс FavoritesGroup и AllChannelsGroup
канал с другим названием группы ни в одну обычную группу не попадает
4 режима сортировки (без, по названию, по номеру из chnmbr_list, номер и алфавит), переключение cookie sort_channels; у MegaRadio — обмен соседних элементов массива
По SDK при playback_url_is_stream_url == false оболочка дополнительно зовёт get_tv_stream_url()
(SDK)458, а при TRUE не зовёт никогда (SDK)459; разделение нужно,
когда URL потока получается удалённым вызовом (SDK)460. Каркас shell_ext r25 по умолчанию
возвращает streaming_url канала, а get_tv_stream_url бросает исключение
(код r25)461; так же устроена библиотечная копия в 101.ru
(код)462.
Задача
Приём
Грабли и ограничения
Плагины и claims
отдать готовый URL
get_tv_playback_url возвращает streaming_url канала; у rain_* — HLS .m3u8 при playback_url_is_stream_url=true
у 101.ru и rain_* archive_ts и protect_code не используются
в DemoTv объявлены методы get_voka, get_spbtv, token_starnet, get_telecola, get_slotos; get_tv_playback_url вызывает get_spbtv, token_starnet и get_telecola
get_voka и get_slotos не вызываются; в get_slotos зашиты логин, пароль и прокси
buffering_ms канала из cookie buf_time (FREE TV — по умолчанию 1000); AllTV дописывает к URL \|\|\|dune_params\|\|\|buffering_ms:<ms>; AceStreamSearch — одно статическое значение на все каналы
AllTV добавляет суффикс только при buf_time != '0'
при playlistItem=0 и liveBroadcastContent=liveparse_season вызывает Youtube::retrieve_playback_url и перебирает $media_urls[1] (snippet.resourceId.videoId) и $media_urls[2] (URL); при наличии $plugin_cookies-><season_ref>[NEW] ставится с первого videoId, которого нет в этом списке
Шаблоны URL архива у разных сервисов (flussonic, catchup-source, utc/archive) — §7.5.
По SDK have_archive требует поддержки архива в get_tv_playback_url() (SDK)480, а
archive_past_sec и archive_delay_sec задают глубину и задержку архива (SDK)481.
Объект:get_day_epg и get_day_epg_iterator в IPTV- и радиоплагинах (code; платформа и прошивка не установлены).
Плагины, построенные на AbstractTv, реализуют get_day_epg_iterator, а AbstractTv::get_day_epg превращает его
элементы в PluginTvEpgProgram с start_tm_sec, end_tm_sec, name, description (код)486. Повторный запрос дня, который уже
загружается, исполнитель операций r24 не дублирует (код r24)487
(см. guide/plugin-operations.md); кэш EPG в памяти плеера обновляет PluginUpdateEpgAction
(SDK)488.
Задача
Приём
Грабли и ограничения
Плагины и claims
ограничить выдачу днём
EpgIterator($items, $day_start_ts, $day_start_ts + 86400); WeburgTV, 101.ru и plugtv берут правую границу +100400
итератор Widget Ext сравнивает только время начала, а не пересечение с интервалом; у Peers.TV последняя программа получает start+3600
JSON tvsapi.cellmp.de/getProgram_1_3.php; Kaban.tv и Novosib-iptv шлют User-Agent Apache-HttpClient/UNAVAILABLE (java 1.4), Kaban.tv срезает BOM и разбирает время как strtotime('… CEST')
JSON или XML по id канала и дате: program.xml (WeburgTV), programs/list (Юрта ТВ), epg.php (Moi-Dom.tv), /api/channel/<id> на хосте первого URL плейлиста (zlostnyi/ottclub), дневной JSON <epg_id>/<YYYY-MM-DD> по карте channel_ids.txt (GlobalTV), XML /xml/tv/* (rain_*), all_tv.xml (plugtv)
rain_* бросает исключение при недоступном или битом XML
одна программа «ON AIR» на сутки с описанием канала; DI.FM — история последних 100 треков плюс запись On AIR; AceStreamSearch — одна текущая передача из ответа поиска
у surface_* и MegaRadio начало сдвинуто на -10800 с
файл channel_<id>_<day_start_ts> в /tmp или tmp_dir_path (zlostnyi — bcu_channel<tvg-id>_<day_start_ts>), обычно serialize; при повторном запросе того же дня сеть не нужна; zlostnyi пишет только непустой результат
по каналу и дню в памяти процесса; FREE TV — в DuneSystem::$properties; Peers.TV — не дольше 3600 с
GlobalTV сохраняет и пустой результат, и последующие вызовы его возвращают; mail-ветка FREE TV при устаревшем кэше удаляет все файлы временного каталога
GlobalTV (код)534; FREE TV (код)535; Peers.TV (код)536
учесть часовой пояс источника
время vsetv разбирается как EEST и к нему прибавляется cookie epg_shift в секундах; rain_* разбирает время в Europe/Moscow
DemoTvgScreen строит телегид на выбранную дату: комбобокс дат от -2 до +7 дней; если cookie tvg_date равен текущей дате, подпись «Сегодня» и отметка текущей передачи префиксом ->
файл plugtv_tvg_screen.php нигде не подключается, экран tvg не регистрируется — мёртвый код
SurfaceM3uTv реализует UserInputHandler, get_actions добавляет GUI_EVENT_TIMER (content_timer) и GUI_EVENT_KEY_SETUP (setup_time), get_tv_info задаёт таймер 10000 мс; по SETUP открывается диалог «Задать время записи:» с combobox epg_shift от -12 до 12 часов, значение сохраняется в cookie epg_shift
8.8. Внешний EPG оболочки (ext_epg) и свой EPG-сервер¶
Вместо get_day_epg плагин может отдать EPG по HTTP: оболочке — через поля ext_epg_* в PluginTvInfo (в
dune_api.php r24 они есть (код r24)547), другим плагинам — через свой CGI-сервер.
Задача
Приём
Грабли и ограничения
Плагины и claims
включить внешний EPG оболочки
get_tv_info пишет channel_ids.txt во временный каталог и задаёт ext_epg_enabled=true, ext_epg_base_url (CGI плагина), ext_epg_channel_ids_url; CGI channels отдаёт файл или 404
JSON <jsonsPath>/<id_name>.json по дням, сброс на диск пачками по 10 каналов; при слиянии дни старше 7 суток удаляются; после обновления удаляются JSON, которых нет в карте
getEpg ищет канал по caption, tvgid или idname; нет дня — 48 программ «On Air»; getLogoArr и getlogo отдают карту и файлы логотипов; clear удаляет каталог EPG
все ответы, включая JSON, идут с Content-Type text/html; clear удаляет все файлы каталога командой rm -f; без каталога EPG — {"err":"404"}
liteIPTVplus: поле epgIp в настройках (по умолчанию 127.0.0.1), запросы getLogoArr, getlogo, day_start_ts&caption; сервер реализует все три, формат title/desc и резервный name/desc клиент принимает
строка с маркером #myEPGserver в /tmp/cron/crontabs/root, на Android перезапуск crond через dunehd_service; на bootupdate_cron.sh восстанавливает задание
в setcrontab.php используется неопределённая $autoScanFolders; подробнее о cron — §13
liteIPTV (код)558; по сообщениям пользователей — раз в неделю в заданные день и время (форум)559
дать веб-интерфейс сервера
index.php: таблица каналов, источники, кнопки обновления и очистки, поиск на клиенте
Подключить внешний EPG при наличии плагина ext_epg
get_tv_info включает ext_epg_enabled и ext_epg_channel_ids_url = "dunehdtv_channel_ids.txt", если определено PluginTvInfo::ext_epg_channel_ids_url и есть /firmware_ext/plugins/ext_epg/dune_plugin.xml
файл dunehdtv_channel_ids.txt в коде не создаётся и в пакете отсутствует
экран настроек всегда содержит выбор каталога EPG (setJsonsPath), main_icon и whats_new; при непустом jsonsPath добавляются addDelXmltvEpg, updateXmltvEpg, showEpgAvailableChannels, autoUpdateXmltvEpg, showEpgUpdateLog и clearXmltvEpg; без jsonsPath берётся data_dir_path/dataFiles
при отсутствии /persistfs путь очищается; если нет и /persistfs, и /D, показывается предупреждение о накопителе
updateXmltvEpg запускает обновление фоновой командой wget на plugin_cgi_url/do; showEpgUpdateLog читает DATA-файл do.log и каждую секунду перезапускает себя, пока в логе нет «Script stop»
экран каналов при пустом media_url показывает myEPGserverIDs; media_url с id_name открывает JSON-файл канала (дни), с id_name и day — программы дня, с epgList — список источников с пунктом «Добавить xmltv EPG»
show_dialog всегда задаёт DIALOG_FRAME_STYLE_GLASS, чтение dialog_params закомментировано; add_label создаёт элемент с пустым GuiControlDef::name, заголовок передаёт в title; http_get_document задаёт CONNECTTIMEOUT и TIMEOUT по 40 с, UA Firefox 7.0.1 и печатает через echo
Объект: работа плагинов с TorrServer, Peerflix, Transmission, AceStream и Noxbit, облачным монтированием rclone и
фоновыми загрузками — Online Movies (TV Series), Torrent Center, MegaTorrents, MegaAnime, Smart_*, liteIPTV,
AceStreamSearch, Entware/Wallpaper, rclone, Lampa bridge; уровень code, отдельные сведения — forum. Платформа и
прошивка исполнения не установлены; ветки по Android/APK названы в строках.
Торрент плагин не проигрывает сам: он передаёт раздачу движку (TorrServer, Peerflix, Transmission, AceStream) и
отдаёт плееру HTTP-URL потока (§7.3). Встроенный в прошивку TorrServer, его адрес и менеджер загрузок dl_manager
описаны в guide/downloads-torrserver.md; ниже — как плагины работают с движками сами.
На tv188b r25 (device) $P/flashdata/ts/ts оказался симлинком на bin/ts плагина Online Movies, а
$P/firmware/bin/ts — на libxxx_ts.so прошивки (устройство r25)567; подробнее —
guide/downloads-torrserver.md §1.
Задача
Приём
Грабли и ограничения
Плагины и claims
Поставить свой TorrServer
взять ссылку android-arm7 из server_release.json (releases.yourok.ru), скачать wget-действием в /flashdata/ts/ts.loading, заменить /flashdata/ts/ts
если статус загрузки не succeeded, ts.loading удаляется и показывается ошибка
ts --port 8095 -k -d /flashdata/ts -l /tmp/run/ts.log, вне APK — через /system/dunehd/dunehd_service do; ждать до 40 с, опрашивая порт
на APK при отсутствии /flashdata/ts/ts делается симлинк на пакетный bin/ts, а вне APK функция возвращает false; что такое пакетный bin/ts — §14.9 и §19
при dune_torrserve_ip=2 свой CGI при наличии файла /data/data/ru.yourok.torrserve/files/torrserver и отсутствии процесса запускает его, иначе am start пакета с torrserve из /tmp/applications/app_data.json; Torrent Center при наличии Android-приложения и отсутствии pid запускает внешний torrserver -k -d /sdcard/Android/data/ru.yourok.torrserve/files
HTTP-запрос к CGI плагина или к service_api плагина TorrServe на удалённом Dune; Torrent Center пробует CGI torrserve текущего плагина, затем Bazinga на хосте настроенного TorrServer, а при отсутствии Android-приложения и вне Android шлёт service_api?cmd=torrserve_start
на platform=androidgetInstallTorrServer проверяет файл приложения ru.yourok.torrserve через dunehd_service do; на platform=87xx ищет TorrServe в /tmp/run/installed_plugins.xml
сохранить файл в /tmp/www/temp.torrent и отдать URL http://<IP плеера>/temp.torrent (или загрузить файлом на /torrent/upload)
у Torrent Center путь фиксирован — /tmp/www/temp.torrent, MegaTorrents пишет туда же по умолчанию; .torrent с kinozal (при логине), nnmclub и rutracker dl.php он качает с cookie-файлом трекера, с hdreactor — с Referer
Online Movies (TV Series) (код)585; Torrent Center (код)586; MegaTorrents (код)587; MegaAnime (код)588
Получить .torrent из magnet
для magnet с 40 hex и пути, отличного от /tmp/www/temp.torrent, скачать http://itorrents.org/torrent/<btih>.torrent
глобальный обработчик file_popup добавляет меню только для расширения torrent после проверки обязательных полей и исключения оптического диска; get_file_popup_action собирает абсолютный путь из mount_path источника и selected_file_path
Torrent::is_torrent считает файл торрентом, если первые 11 байт — d8:announce; для .torrent размер берётся через Torrent::size, список файлов — Torrent::content, все файлы помечаются need = true, общий каталог отрезается последовательным dirname
пункт verify_peerflix при выбранном verify пишет config->verify=true только для true, иначе false; если настройки сохранены и сервер запущен, он перезапускается
по словам автора, у Peerflix нет кеша в памяти — файл качается целиком на диск; при включённой проверке после перезапуска идёт перехеширование, при выключенной ранее закачанное отбрасывается и закачка начинается заново
страница download экрана setup_trans показывает download-dir, rename-partial-files, seedRatioLimit, idle-seeding-limit и cache-size-mb из session-get; страница network — peer-port, peer-port-random-on-start, port-forwarding-enabled, encryption, dht-enabled и кнопку tr_test_port; применение после checkconnect вызывает set_session_arg с парой control_id => new_value
port_test возвращает истину при port-is-open = 1, но в ветке catch вызывает несуществующий test_port()
пункт tr_add_torrent ставит DuneBrowserDirClass::filemask = '.torrent', action_ok — close_and_run действия tr_select_torrent, и открывает gl_browser; экран хранит каталог в plugin_cookies->browse_setting как JSON, фильтрует файлы по filemask и возвращает выбранный путь в result_link
tr_select_torrent монтирует SMB-шару в /tmp/mnt/smb/rem_tor и заменяет путь на точку монтирования
каталог по умолчанию — download-dir из session-get; кнопка смены показывает подкаталоги через DuneFileUtils::get_folder с OnlyDir, путь для показа переводится map_rem_to_local
по записи в changelog 0.0.18 (p221846), выбор ограничен первыми 15 поддиректориями из-за отсутствия скроллинга
экран rt_files получает файлы вызовом get_torrent_array_bint с полями id, hashString, name, files, fileStats; общий каталог отрезается последовательным dirname по первым элементам; строка показывает размер, процент для неполного файла, приоритет или «не загружать», иконку completed.aai/downloading/*.aai/skip.aai по wanted и bytesCompleted
после проверки selected_media_url обработчик tr_set_priority вызывает set_priority_file с setpriority и списком выбранных файлов, а при пустом выборе — с одним file_id
Online Movies запускает /flashdata/ts/ts как TorrServer (код)643, но в строках
пакетного bin/ts, на который на APK ставится симлинк, есть rmmpegdemux и librmmpegdemux.so, а строк HTTP или
TorrServer нет (код)644. Работает ли такой запуск — §19.
Объект: места, где плагины делают одно и то же по-разному или где код плагина расходится с документацией и
кодом платформы; плагины (code, платформа и прошивка исполнения не установлены), SDK плагинов (doc) и прошивки,
если на них есть ссылка. Связь conflicts_with указана там, где она заведена; где её нет — это кандидат для lead.
Где лежит favorite_movies. Torrent Center, Moi-Dom.tv, Peers.TV, pirates_* и zlostnyi держат избранное в
plugin_cookies строкой id через запятую (код)645; FREE TV и Smart_* под тем же
именем пишут файлы через HD::get_items/HD::save_items, причём у Smart_* методы названы from/to_cookies
(код)646. При переносе кода между плагинами проверяйте, куда на деле пишет favorite_movies. Связи conflicts_with нет.
Регистрация поставщика без флага перечитывания. Online Movies (rus) пишет описатель прямо в
/tmp/movie_suppliers/movies_rus, без params/movie_suppliers и movie_suppliers_update.sh
(код)647; r24 перечитывает поставщиков при наличии
/tmp/movie_suppliers_changed.flag (код r24)17. Появится ли такой поставщик
после boot_end — не доказано (см. §19). Связи conflicts_with нет.
Копия lib GlobalTV против r24.T::t1 плагина вставляет значение без strip_param, тогда как r24 обрабатывает
префиксы %tr%/%ext% (код r24)648; ListUtils плагина использует ключи
all_list/def_list/on_off/avoid_empty, а r24 — all_services/def_ids/on_idset/off_idset
(код r24)649, и только плагин возвращает def_idset при пустом наборе (код r24)650. Связи conflicts_with нет.
Запуск штатного плеера через PlayerProxyActivity. Jellyfin Bridge копирует входящий интент, задаёт компонент com.dunehd.app/com.dunehd.shell.PlayerProxyActivity и добавляет skip_resume_position:1 в com.dunehd.playback.dune_params (код)651; на tv188b r25 (device) явный запуск PlayerProxyActivity с HTTP MP4 без action VIEW (в том числе с skip_resume_position:1) VOD не запустил (устройство r25)324. Есть ли action VIEW у копии интента Jellyfin Bridge, claims не говорят. Связи conflicts_with нет.
get_tv_info() у радиоплагина 101.ru. SDK: минимальное ТВ-воспроизведение требует get_tv_info() и
get_tv_playback_url() (SDK)351; библиотечный AbstractTv в 101.ru возвращает из get_tv_info()null (код)652, тогда как в копии DI метод реализован полностью (код)653. Как оболочка
ведёт себя с null, в базе не проверено. Связи conflicts_with нет.
Единицы сдвига EPG. Cookie epg_shift AllTV и pirates_* прибавляется к времени в секундах (код)654; атрибут epg_shift плейлиста у EvolutionTV задан в часах с ограничением [-24, 24]
(код)399; Novosib-iptv складывает cookie и атрибут плейлиста (часы × 3600)
(код)530. Это разные соглашения плагинов, а не противоречие источников; связи conflicts_with нет.
Пакетный bin/ts Online Movies — TorrServer или нет. Код плагина запускает /flashdata/ts/ts как TorrServer с --port 8095 (код)643, а на APK при отсутствии файла ставит симлинк на пакетный bin/ts (код)655; в строках этого ELF есть rmmpegdemux и librmmpegdemux.so, но нет строк HTTP или TorrServer (код)644. На tv188b r25 (device) $P/flashdata/ts/ts — симлинк на bin/ts плагина Online Movies (устройство r25)567. Связи conflicts_with нет; вывод о неработоспособности — inference (§19).
Объект: гипотезы (inference) и оспоренные утверждения (disputed) из разборов плагинов, относящиеся к
приёмам этой главы; платформа и прошивка — как в scope claim. Это кандидаты на проверку в коде или на устройстве;
в разделах выше они не цитируются.
Утверждение
Уровень, статус
Claim
Раздел
В shell_ext r24 описатель поставщика без playback_type, supported_video_types и play_action получает stream, video и пустой play_action, то есть участвует в поиске видео
Dune Remote Control: плагин сам не запускает воспроизведение — каталог, избранное, папки и плейлисты отдаёт он, а просмотр и удалённый запуск выполняет мобильное приложение; механизм запуска в источнике не назван
plugtv: при недоступном list.xmlfile_get_contents не бросает исключение, поэтому будет предупреждение PHP, затем simplexml_load_string(false) и исключение «Illegal XML document»
myEPGserver: ветки export_data/import_data файлового экрана вызывают HD::pCopyFolders, которого нет в lib/utils.php; из интерфейса плагина эти ветки не открываются
(через escape_shell_arg) — только если строка «version_index:id1-id2…» отличается от сохранённой в /flashdata/plugins_data/<плагин>/movie_suppliers_params.txt; после запуска строка записывается туда ↩
plg-ds-dunemdb-supplier-generic.c027 · code · unknown; прошивка — · Для включённых id скрипт пишет описатель в /tmp/movie_suppliers/ (ключи plugin, caption, supported_video_types, bin, server_managed, location_handling, playback_type, special_category, special_category_icon_url, sticker_icon_url, logo_icon_url) через временный файл и rename, только если содержимое изменилось; bin = cd <каталог bin> && $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php. ↩↩
plg-dc-dunemdb-supplier-movies-eng.c019 · code · unknown; прошивка — · Описатель поставщика содержит ключи plugin = dunemdb_supplier_movies_eng и langs = english.
plg-dc-dunemdb-supplier-movies-eng.c021 · code · unknown; прошивка — · Описатель задаёт bin = «cd $mydir && ./run.sh», где $mydir подставлен абсолютным путём каталога bin плагина.
fw-tv188b-261021-0117-r25.c179 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 команды поставщика из стороннего плагина (bin без cd) выполняются с uid 1000 и текущим каталогом /. ↩
plg-ds-dunemdb-supplier-generic.c027 · code · unknown; прошивка — · Для включённых id скрипт пишет описатель в /tmp/movie_suppliers/ (ключи plugin, caption, supported_video_types, bin, server_managed, location_handling, playback_type, special_category, special_category_icon_url, sticker_icon_url, logo_icon_url) через временный файл и rename, только если содержимое изменилось; bin = cd <каталог bin> && $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-generic.c029 · code · unknown; прошивка — · movie_suppliers_update.sh разбирает аргументы парами id caption и пишет описатель в $FS_PREFIX/flashdata/plugins_data/dunemdb_supplier_generic/movie_suppliers/ с теми же ключами, что update_movie_suppliers.php, но sticker_icon_url = icons/sticker_.png и bin = cd <каталог bin> && $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-dc-dunemdb-supplier-online-movies.c029 · code · unknown; прошивка — · Команда запуска поставщика в описателе — cd <каталог bin> и $FS_PREFIX/firmware_ext/php/php-cgi -c <каталог bin> -f ./run.php. ↩
plg-ds-dunemdb-supplier-megogo.c015 · code · android; прошивка — · movie_suppliers_update.sh с зашитыми id = megogo и caption = %tr%title_supplier пишет описатель в $FS_PREFIX/flashdata/plugins_data/dunemdb_supplier_megogo/movie_suppliers/megogo; bin = cd <каталог bin> && , где run_cmd — ./run.py при пустом FS_PREFIX, иначе $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php. ↩
plg-ds-dunemdb-supplier-okko.c015 · code · android; прошивка — · movie_suppliers_update.sh с зашитыми id = okko и caption = %tr%title_supplier пишет описатель в $FS_PREFIX/flashdata/plugins_data/dunemdb_supplier_okko/movie_suppliers/okko; bin = cd <каталог bin> && , где run_cmd — ./run.py при пустом FS_PREFIX, иначе $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php. ↩
plg-ds-dunemdb-supplier-generic.c004 · code · unknown; прошивка — · В global_actions действия boot_end, install и update (type plugin_system) запускают bin/update_movie_suppliers.sh с условием if="not(firmware_feature(movie_suppliers_update))".
plg-ds-dunemdb-supplier-generic.c024 · code · unknown; прошивка — · update_movie_suppliers.sh завершается с кодом 1 без $FS_PREFIX/firmware_ext/php/php-cgi и с кодом 0, если в $FS_PREFIX/tmp/firmware_features.txt нет newgui2021; иначе exec php-cgi -f <каталог плагина>/bin/update_movie_suppliers.php с переданными аргументами.
plg-ds-dunemdb-supplier-megogo.c004 · code · android; прошивка — · В global_actions действия boot_end, install и update (type plugin_system) запускают bin/register_supplier.sh с условием if="not(firmware_feature(movie_suppliers_update))".
plg-ds-dunemdb-supplier-megogo.c017 · code · android; прошивка — · register_supplier.sh создаёт $FS_PREFIX/tmp/movie_suppliers (если каталога нет) и пишет в файл megogo тот же описатель, что movie_suppliers_update.sh; команда bin тоже выбирается по FS_PREFIX: ./run.py или $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-okko.c004 · code · android; прошивка — · В global_actions действия boot_end, install и update (type plugin_system) запускают bin/register_supplier.sh с условием if="not(firmware_feature(movie_suppliers_update))".
plg-ds-dunemdb-supplier-okko.c017 · code · android; прошивка — · register_supplier.sh создаёт $FS_PREFIX/tmp/movie_suppliers (если каталога нет) и пишет в файл okko тот же описатель, что movie_suppliers_update.sh; команда bin тоже выбирается по FS_PREFIX: ./run.py или $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-megogo.c015 · code · android; прошивка — · movie_suppliers_update.sh с зашитыми id = megogo и caption = %tr%title_supplier пишет описатель в $FS_PREFIX/flashdata/plugins_data/dunemdb_supplier_megogo/movie_suppliers/megogo; bin = cd <каталог bin> && , где run_cmd — ./run.py при пустом FS_PREFIX, иначе $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-megogo.c017 · code · android; прошивка — · register_supplier.sh создаёт $FS_PREFIX/tmp/movie_suppliers (если каталога нет) и пишет в файл megogo тот же описатель, что movie_suppliers_update.sh; команда bin тоже выбирается по FS_PREFIX: ./run.py или $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-okko.c015 · code · android; прошивка — · movie_suppliers_update.sh с зашитыми id = okko и caption = %tr%title_supplier пишет описатель в $FS_PREFIX/flashdata/plugins_data/dunemdb_supplier_okko/movie_suppliers/okko; bin = cd <каталог bin> && , где run_cmd — ./run.py при пустом FS_PREFIX, иначе $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-ds-dunemdb-supplier-okko.c017 · code · android; прошивка — · register_supplier.sh создаёт $FS_PREFIX/tmp/movie_suppliers (если каталога нет) и пишет в файл okko тот же описатель, что movie_suppliers_update.sh; команда bin тоже выбирается по FS_PREFIX: ./run.py или $FS_PREFIX/firmware_ext/php/php-cgi -f ./run.php.
plg-dc-dunemdb-supplier-online-movies.c028 · code · unknown; прошивка — · Скрипт bin/movie_suppliers_update.sh пишет описатели поставщиков в $FS_PREFIX/flashdata/plugins_data/<имя плагина>/movie_suppliers (mkdir -p) и делает chmod 777 для $FS_PREFIX/tmp/plugins/<имя плагина>, но сам этот каталог не создаёт.
plg-dc-dunemdb-supplier-online-movies.c033 · code · unknown; прошивка — · Устаревший bin/register_supplier.sh пишет описатели напрямую в $FS_PREFIX/tmp/movie_suppliers и включает автоматический поставщик, если файл $FS_PREFIX/config/online_movies_full.txt содержит 1 или отсутствует.
fw-tv188b-260827-0003-r24--movie-suppliers.c035 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Перечитывание поставщиков: при наличии /tmp/movie_suppliers_changed.flag (reload_suppliers_if_changed); в первый раз ждёт файл suppliers_prepared_path до 30 раз по 0,1 с ↩↩
plg-dc-dunemdb-supplier-movies-rus.c005 · code · unknown; прошивка — · global_actions boot_end, install и update запускают bin/register_supplier.sh действием plugin_system.
plg-dc-dunemdb-supplier-movies-rus.c018 · code · unknown; прошивка — · bin/register_supplier.sh создаёт каталог /tmp/movie_suppliers и пишет в файл movies_rus JSON с ключами plugin, caption, langs, bin.
plg-dc-dunemdb-supplier-movies-rus.c023 · code · unknown; прошивка — · Плагин регистрируется старым путём: пишет описатель прямо в /tmp/movie_suppliers/movies_rus; элемента params/movie_suppliers в манифесте нет, файла bin/movie_suppliers_update.sh в пакете нет.
plg-ds-dunemdb-supplier-generic.c025 · code · unknown; прошивка — · update_movie_suppliers.php читает /flashdata/movie_services/config.json (movie_services_config.services) и /config/services_effective_config.json (services); при отсутствии любого файла или ошибке разбора печатает сообщение и завершается без изменений.
plg-ds-dunemdb-supplier-generic.c026 · code · unknown; прошивка — · Скрипт берёт только сервисы с plugin_name == dunemdb_supplier_generic; если у сервиса есть suppliers, регистрирует каждый supplier (caption по умолчанию равен id), иначе — сам сервис (id и caption); включённость определяется по id сервиса в списке services эффективного конфига — если сервис включён, включаются все его suppliers или сам сервис.
plg-ds-dunemdb-supplier-generic.c028 · code · unknown; прошивка — · Для выключенных id скрипт удаляет /tmp/movie_suppliers/, считает число изменений и печатает итоговую строку Finished: changes.
plg-dc-dunemdb-supplier-online-movies.c030 · code · unknown; прошивка — · Автоматический поставщик online_movies описан как потоковый (playback_type stream_special) с play_action на handler entry и control_id play.
plg-dc-dunemdb-supplier-online-movies.c031 · code · unknown; прошивка — · Ручной поставщик online_movies_manual отличается тем же play_action с параметром manual=1 и подписью %tr%title_supplier_manual.
plg-dc-dunemdb-supplier-online-movies.c036 · code · unknown; прошивка — · В bin/run.php все ветки команд get_episodes, do_file_search, get_stream_url и остальные закомментированы, поэтому любая команда завершается ошибкой unknown command.
plg-dc-dunemdb-supplier-online-movies.c033 · code · unknown; прошивка — · Устаревший bin/register_supplier.sh пишет описатели напрямую в $FS_PREFIX/tmp/movie_suppliers и включает автоматический поставщик, если файл $FS_PREFIX/config/online_movies_full.txt содержит 1 или отсутствует.
plg-ds-dune-hd-tv.c048 · code · unknown; прошивка — · install.sh завершается, если в $FS_PREFIX/tmp/firmware_features.txt нет newgui2021; иначе вызывает register_movie_suppliers.sh.
plg-ds-dune-hd-tv.c049 · code · unknown; прошивка — · register_supplier_amediateka.sh и register_supplier_start.sh при найденном php-cgi пишут JSON-описатели $FS_PREFIX/tmp/movie_suppliers/DuneHDTVAmediateka и DuneHDTVStart с ключами plugin, key_show_only_one, caption, langs, supported_video_types, bin, playback_type stream_special, play_action, server_managed, special_category, special_category_caption, sticker_icon_url, logo_icon_url.
plg-ds-dune-hd-tv.c051 · code · unknown; прошивка — · Скрипты поставщиков выбирают php-cgi: $FS_PREFIX/firmware_ext/php/php-cgi при HD_APK=1 или platform_kind android, $mydir/87xx/php-cgi или $mydir/86xx/php-cgi по первым двум цифрам platform_kind, иначе exit 1; bin поставщика — « -f /run.php».
plg-ds-dune-hd-tv.c052 · code · unknown; прошивка — · В пакете нет каталогов bin/87xx и bin/86xx с php-cgi, на которые ссылаются скрипты поставщиков.
plg-ds-dune-hd-tv.c057 · code · unknown; прошивка — · bin/run.php — отдельная программа поставщика: принимает ровно один аргумент-команду (get_episodes, do_file_search, get_stream_url), JSON-вход читает из stdin и печатает JSON-результат; ошибка — {"error":{"message":…}}.
plg-ds-dune-hd-tv.c058 · code · unknown; прошивка — · run.php берёт access_token из /tmp/plugins/dune-hd.tv/supplier_state.properties, а при отсутствии — POST /auth/device с device_id из /config/dune-hd.tv_plugin_cookies.properties (если device_id там есть), и сохраняет токен обратно в файл состояния.
plg-ds-dune-hd-tv.c055 · code · unknown; прошивка — · register_movie_suppliers.sh записывает текущее время в $FS_PREFIX/config/mdb_timestamp и создаёт флаг $FS_PREFIX/tmp/plugins/shell_ext/update_epfs_if_needed_flag; uninstall.sh удаляет описатели DuneHDTVMegogo, DuneHDTVMegogoKids, DuneHDTVAmediateka, DuneHDTVStart, а при наличии newgui2021 тоже пишет время и создаёт флаг.
plg-ds-dune-hd-tv.c056 · code · unknown; прошивка — · В register_movie_suppliers.sh удаление DuneHDTVMegogo и DuneHDTVMegogoKids идёт по "$dirpath/…", но переменная dirpath в скрипте не задана.
plg-ds-dune-hd-tv.c053 · code · unknown; прошивка — · bin/movie_suppliers_update.sh при найденном php-cgi пишет те же описатели DuneHDTVAmediateka и DuneHDTVStart в $FS_PREFIX/flashdata/plugins_data/dune-hd.tv/movie_suppliers, причём bin — «cd && -f /run.php».
plg-ds-dune-hd-tv.c054 · code · unknown; прошивка — · Скрипт bin/movie_suppliers_update.sh внутри пакета ничем не вызывается; имя movie_suppliers_update встречается только в условиях манифеста not(firmware_feature(movie_suppliers_update)).
plg-dc-dunemdb-supplier-movies-rus.c035 · code · unknown; прошивка — · get_episodes требует movieInfo.movieExtId; из списка через запятую берётся первый элемент kinopoisk:; если его нет или id <= 0, публикаций нет и функция возвращает пустой список.
plg-dc-dunemdb-supplier-movies-rus.c036 · code · unknown; прошивка — · do_get_publications ищет kinopoisk id в Solr на zsolr3.zonasearch.com и берёт mobi_url; при непустом type заменяет http://zona.mobi на https://w122.zona.plus, /movies/ на /tvseries/ и убирает ?pid=ios.
plg-dc-dunemdb-supplier-movies-rus.c037 · code · unknown; прошивка — · Для не-сериала do_get_publications загружает страницу с Cookie из zonaMobi::getRCPC() и делает публикацией найденный в HTML player data-id; подпись — movieInfo.title.ru, type = video.
plg-dc-dunemdb-supplier-movies-rus.c038 · code · unknown; прошивка — · Для сериала do_get_publications проверяет get_headers() и принимает URL публикацией, если в одной из первых трёх строк заголовков есть код 200; id публикации — сам URL.
plg-dc-dunemdb-supplier-movies-eng.c037 · code · unknown; прошивка — · get_episodes строит OMEpisodes по movieInfo.title.en, year, imdb и tvdb и возвращает {"seasons": <список сезонов; None, если серий нет>}.
plg-dc-dunemdb-supplier-movies-eng.c067 · code · unknown; прошивка — · OMEpisodes получает список серий из indexers.episodes.episodes().get(title, year, imdb, tvdb, idx=False).
plg-dc-dunemdb-supplier-movies-eng.c068 · code · unknown; прошивка — · seasons() группирует серии по int(season), сортирует сезоны и серии и отдаёт элементы {number, title: '', episodes: [{number, premiered, title}]}; при пустом списке серий возвращает None.
plg-dc-dunemdb-supplier-movies-eng.c059 · code · unknown; прошивка — · Поток-резолвер вызывает sourcesResolve для элемента, добавляет пустой debrid, отбрасывает пустой URL и не прошедший проверку, затем добавляет результат через __process_resolved.
plg-dc-dunemdb-supplier-movies-eng.c064 · code · unknown; прошивка — · stop() только выставляет флаг stopped (комментарий #TODO: make real stop?), suspend() выставляет паузу резолверов, resume() её снимает.
plg-dc-dunemdb-supplier-movies-eng.c052 · code · unknown; прошивка — · Порядок источников задаётся картами providers_order и sources_order от сервера, качество — QUALITY_ORDER = [1080p, hd, sd]; sortKey = quality_num1000000 + provider_num1000 + sources_num.
plg-dc-dunemdb-supplier-movies-eng.c054 · code · unknown; прошивка — · OMServerClient читает порядок источников из /config, кэширует ответ в config_cache.json и загружает его в фоновом потоке order_lists_loader.
plg-dc-dunemdb-supplier-online-movies.c080 · code · unknown; прошивка — · JacketDB получает шаблон запроса из http://dune-club.info/plugins/ext/plugins/dunemdb_supplier_online_movies/config.txt; по умолчанию используется https://s1.dune-club.info/plugins/dunemdb_supplier_online_movies/q?q=%s.
plg-dc-dunemdb-supplier-online-movies.c081 · code · unknown; прошивка — · Шаблон запроса JacketDB кэшируется в /config.txt на 7200 с; файл /config/online_movies_jacket.txt, если существует, полностью заменяет шаблон.
plg-dc-dunemdb-supplier-online-movies.c082 · code · unknown; прошивка — · JacketDB принимает шаблон запроса только с префиксом http:// или https:// и ровно одним плейсхолдером %s; иначе считает его невалидным и повторяет запрос через 60 с.
plg-dc-dunemdb-supplier-online-movies.c085 · code · unknown; прошивка — · JacketDB отбрасывает дубли по строке source:S:L:size:title, формирует group_id из simplify(title,64), md5(title.source) и size_raw, а также пишет отладочный список в /tmp/run/omov_last_list.json.
plg-dc-dunemdb-supplier-online-movies.c098 · code · unknown; прошивка — · LangHelper при языке не ru/uk/kk включает avoid_cyr, отбрасывает раздачи с кириллицей и нулевой пригодностью и сортирует остальные: +4 за «+ original», +2 за «оригинальный видеоряд», +1 за eng; записи без кириллицы получают 99.
plg-dc-dunemdb-supplier-online-movies.c120 · code · unknown; прошивка — · JacketDB::support_search_with_year возвращает false, поэтому MovieTorrents ищет только по названию (год в запрос JacketDB не передаётся); TorLookDB возвращает true.
plg-dc-dunemdb-supplier-online-movies.c075 · code · unknown; прошивка — · MovieTorrents::cmp_torrents сортирует сначала по bonus, затем по invalid, затем по good_ids, затем по числу несовпадений с настройками min_s/min_q/max_q; при sort_video_streams=availability сравнивает seeders, при auto — коэффициент s_coef(seeders, качество), дальше quality, seeders, size_mb (больше — раньше), имя и id.
plg-dc-dunemdb-supplier-online-movies.c076 · code · unknown; прошивка — · make_reordered_torrents при sort_video_streams=quality пропускает invalid и не входящие в good_ids торренты и набирает до двух торрентов каждого разрешения (2160p, 1080p, 720p, SD), максимум 8; если ничего не набрано, берёт первые 10; выбранные ставятся в начало списка.
plg-dc-dunemdb-supplier-online-movies.c109 · code · unknown; прошивка — · TorrentsScreen по зелёной кнопке переключает sort_video_streams и инвалидирует папку; в режиме chosen_only при выборе торрента вне «схлопнутого» списка открывает папку all с post_action на выбранный торрент.
plg-dc-dunemdb-supplier-movies-eng.c036 · code · unknown; прошивка — · movieExtId разбирается как список пар «ключ:значение» через запятую; плагин использует только imdb и tvdb.
plg-dc-dunemdb-supplier-movies-eng.c066 · code · unknown; прошивка — · OMEpisodes по умолчанию подставляет imdb = 0 и tvdb = 0, если соответствующий id пуст или None.
plg-dc-dunemdb-supplier-movies-rus.c047 · code · unknown; прошивка — · Для остальных типов do_file_search заново получает публикации, резолвит поток по pub->id и кладёт файл с id = JSON {pub_id, file_url = pub->id}, caption публикации и quality HD; неудачные публикации пропускаются. ↩
plg-dc-dunemdb-supplier-online-movies.c078 · code · unknown; прошивка — · TorrentInfo кодирует разрешение константами QRES_2160P=700 … QRES_SD=100, тип источника — QTYPE_BLURAY=90 … QTYPE_HDRIP=10, HDR — QDR_, DVD — QSD_; итоговое quality = res + type + hdr/sd. ↩
plg-dc-dunemdb-supplier-online-movies.c079 · code · unknown; прошивка — · TorrentInfo::has_episode возвращает false для invalid, для single_episode требует совпадения s и e, для диапазона эпизодов проверяет сезон и границы episodes.from/to с поправкой на сумму эпизодов предыдущих сезонов. ↩
plg-hdtv-freetv.c025 · code · unknown; прошивка — · Категории видеотеки заданы в коде: «Фильмы», «Сериалы», «Мультфильмы», «Аниме» с URL MEDIA_URL + /film/?type=..., а для фильмов и сериалов — 33 жанра с genre_id. ↩
plg-hdtv-zlostnyi-iptv.c071 · code · unknown; прошивка — · Категории медиатеки bcu заданы в коде, а не из плейлиста: единственная категория «BCU Кинопремьера» (строка «Медиатека» закомментирована); перед ней — пункты «Избранное» (если VOD_FAVORITES_SUPPORTED и корень) и «Поиск» с media_url 'search_screen'. ↩
plg-hdtv-peerstv.c015 · code · unknown; прошивка — · VOD-категории читаются XML-документом с корнем vod_categories, вложенные vod_categories дают подкатегории; список фильмов — XML с корнем movies, карточка фильма — movie_info с полями caption, description, poster_url, length, year, director, actors, genres, рейтингами и series/item. ↩
plg-hdtv-pirates-radio.c046 · code · unknown; прошивка — · Категории VOD запрашиваются с online.dune-hd.com/demo2/vod_categories.pl, рекурсивно разбираются по вложенным vod_categories и превращаются в DemoVodCategory с id, caption и icon_url; для категории без подкатегорий список фильмов запрашивается с movie_list.pl?category_id=, а категория с подкатегориями открывает их список.
plg-hdtv-pirates-radio.c047 · code · unknown; прошивка — · Карточка фильма запрашивается с movie_info.pl?movie_id=; из ответа movie_info заполняются поля Movie (caption, description, poster, length, year, director, actors, genres, рейтинги, страна, бюджет), а из series/item добавляются серии с playback_url.
plg-hdtv-zlostnyi-iptv.c107 · code · unknown; прошивка — · Медиатека edem — демо-VOD Dune: категории из DemoConfig::VOD_CATEGORIES_URL (http://online.dune-hd.com/demo2/vod_categories.pl, XML через simplexml_load_string).
plg-hdtv-zlostnyi-iptv.c161 · code · unknown; прошивка — · Медиатека shura — та же демо-VOD Dune, что у edem: константы VOD_CATEGORIES_URL, MOVIE_LIST_URL_FORMAT и MOVIE_INFO_URL_FORMAT указывают на http://online.dune-hd.com/demo2/…, разбор XML через simplexml_load_string.
plg-hdtv-zlostnyi-iptv.c164 · code · unknown; прошивка — · Медиатека sharavoz — демо-VOD Dune: категории, список фильмов и карточка фильма читаются XML с http://online.dune-hd.com/flussonic2/… через simplexml_load_string; поиск и избранное VOD отключены (VOD_FAVORITES_SUPPORTED = false, файла *_search_screen.php нет).
plg-hdtv-zlostnyi-iptv.c165 · code · unknown; прошивка — · Медиатека tvteam — демо-VOD Dune: категории, список фильмов и карточка фильма читаются XML с http://online.dune-hd.com/flussonic2/… через simplexml_load_string; поиск и избранное VOD отключены (VOD_FAVORITES_SUPPORTED = false, файла *_search_screen.php нет).
plg-hdtv-zlostnyi-iptv.c027 · code · unknown; прошивка — · BcuConfig содержит URL демо-VOD Dune (online.dune-hd.com/flussonic2: vod_categories.pl, movie_list.pl, movie_info.pl), но в bcu эти константы нигде не используются — медиатека строится из M3U.
plg-hdtv-altv.c029 · code · unknown; прошивка — · Видеотека плагина — демонстрационная: категории, список фильмов и карточка фильма запрашиваются у online.dune-hd.com по путям /demo2/vod_categories.pl, /demo2/movie_list.pl и /demo2/movie_info.pl. ↩
plg-hdtv-moidom.c017 · code · unknown; прошивка — · VOD-каталог: экран категорий предлагает «Избранное», «Поиск», «Все фильмы» и «Категории» (жанры); список фильмов запрашивается vod_list.php с type=text (поиск), type=last (все) или type=last&genre=; карточка — vod_info.php?id=, ссылка на файл — vod_geturl.php?fileid=.
plg-hdtv-moidom.c018 · code · unknown; прошивка — · try_load_movie формирует Movie из data->film (name, description, poster с базой http://iptv.myvnc.com, lenght, year, director, actors, genre_str, country->name, budget) и добавляет серии из data->film->videos->item с URL из get_vod_url(item->id); get_vod_stream_url игнорирует полученный API-URL и возвращает playback_url с заменой http:// на http://mp4://.
plg-hdtv-zlostnyi-iptv.c160 · code · unknown; прошивка — · Медиатека ottclub — JSON API http://api.iptvx.tv: категории из корня, жанры из /cat//genres, список из /genres/?page=N, новинки из /filter/new, поиск из /filter/by_name?name=…; при воспроизведении к URL фильма добавляются хост из cookie server и «?ott_key=».
plg-hdtv-zlostnyi-iptv.c162 · code · unknown; прошивка — · Медиатека shara-club — JSON: шаблоны dune/shara/vod_playlist1 и vod_playlist2 дают базовый URL (второй — при ответе первого «nottoken» или пустом ответе), к URL приклеиваются «-», ответ кэшируется в /tmp/shara_vod_playlist.json; категории и фильмы разбираются из полей category/id/series_id этого JSON.
plg-hdtv-megaanime.c040 · code · unknown; прошивка — · SmotretAnime отдаёт JSON через api/series (поля id, titleLines, posterUrl, year, genres, numberOfEpisodes, myAnimeListScore, worldArtScore) и api/translations; озвучка voiceRu превращается в /api/translations/embed/, а обложки идут через do_img. ↩
plg-hdtv-smart-vod.c341 · code · unknown; прошивка — · get_catalog_сategories Vimeo при первом вызове (static $categories и $subcategories ещё null) запрашивает API_URL . "/categories?access_token=" и для каждой категории сохраняет name→uri, а также подкатегории из metadata->connections (ключи с ucfirst) и из поля subcategories (uri . "/videos"); get_main_subcategories при category_id=catalog_сategories возвращает этот список. ↩
plg-hdtv-zlostnyi-iptv.c072 · code · unknown; прошивка — · BcuConfig::getVideoList отбирает из /tmp/vod_playlist.m3u строки #EXTINF с group-title = category_id; id фильма — номер строки в файле, постер — tvg-logo (по умолчанию mov_unset.png).
plg-hdtv-zlostnyi-iptv.c073 · code · unknown; прошивка — · BcuVod::try_load_movie находит фильм по номеру строки, URL берёт из следующей строки и создаёт Movie с одной серией (add_series_data); описания, года и рейтингов нет — поля пустые.
plg-hdtv-zlostnyi-iptv.c163 · code · unknown; прошивка — · Медиатека smile — M3U: шаблон dune/smile/playlist_vod1 получает замены «--token--» и «--pass--», скачанный плейлист пишется в /tmp/smile_vod_playlist.m3u, а фильм воспроизводится с префиксом «http://mp4://».
plg-hdtv-smart-vod.c278 · code · unknown; прошивка — · Kinogo.so строит меню категорий из шести фиксированных пунктов (Все, Премьеры, Все Сериалы, Аниме, Мультфильмы, TV) и блоков i style=font-size:14px, пропуская ссылки action=mobile; ответы сайта конвертируются из WINDOWS-1251 в UTF-8.
plg-hdtv-smart-vod.c283 · code · unknown; прошивка — · KinoStorm.Net строит категории из блоков div.nav-title и разбивает вложенные ссылки на /film, /serial и /multfilm по порядковому номеру группы 0, 1 и 2.
plg-hdtv-smart-vod.c286 · code · unknown; прошивка — · KinoTochka.Club строит категории из ссылок fa-film и блока /topusers/: ссылки collections пропускает, на ссылке # начинает новую category_N, на anime или show сбрасывает её, при сброшенной категории добавляет обычный пункт с HOST_API_URL, иначе — подкатегорию с заменой /cartoon/ на /cartoons/; пути /new/, /films/, /series/, /cartoon/ заменяются на /premieres/, /allfilms/, /serials/, /cartoons/.
plg-hdtv-surface-family.c066 · code · unknown; прошивка — · SurfaceVodCategoryListScreen пакета Radiorecord.ru для категории playlists разбирает http://www.radiorecord.ru/radio/playlists/, а для history/top100 — главную страницу radiorecord.ru (блок table.all-stations); для history станция mix пропускается.
plg-hdtv-megaanime.c036 · code · unknown; прошивка — · Категории Shikimori строятся из HTML-меню https://shikimori.org/animes/menu (kind/season) и списка студий /studios; пункты kind/season ведут на /animes/kind/ и /animes/season/, а обложки студий проксируются через do_img.
plg-hdtv-megaanime.c037 · code · unknown; прошивка — · Категории AniDUB заданы фиксированными путями https://anidub.tv/anime/anime_ongoing/, /anime/full/, /anime/, /anime_movie/, /anime_ova/, /dorama/ и списками жанров, даберов и годов, которые парсятся из главной страницы.
plg-hdtv-megaanime.c038 · code · unknown; прошивка — · Категории Animedia.tv (online.animedia.tv) и Animedia.tv Tracker (tt.animedia.tv) заданы AJAX-путями /ajax/search_result*, а жанры, озвучка, студии и годы парсятся из /search или /catalog и превращаются в /ajax/search_result(_search_page)/P0?limit=12&….
plg-hdtv-smart-vod.c108 · code · unknown; прошивка — · get_all_folder_items категорий эталона для пункта, отсутствующего в hide_id, с URL, начинающимся с http, строит адрес SmartVodListScreen; проверка hide_id предшествует проверке URL.
plg-hdtv-smart-vod.c109 · code · unknown; прошивка — · get_all_folder_items категорий эталона упорядочивает элементы через ksort по позициям из group_list либо последовательным индексам от 1000.
plg-hdtv-freetv.c026 · code · unknown; прошивка — · В списке фильмов кнопка «Все/RUS» добавляет к category_id суффикс &country_id=5; для animation/tv и поиска фильтр сбрасывается. ↩
plg-hdtv-freetv.c061 · code · unknown; прошивка — · В DemoTv объявлены статические методы, которые вызывает пакет: getVideoList (список фильмов по category_id/genre_id, номер страницы — в m_feed), getSearchList (поиск MEDIA_URL/film/poisk.php?q=), parse_video_page (карточка фильма; для kinopoisk.ru/api/person — SERVER/free_tv/Kinobase.php), get_vvod_stream_url (выбор HLS-дорожки по cookie video_quality). ↩
plg-hdtv-smart-apps.c107 · code · unknown; прошивка — · Список фильмов Wallpaper листает каталог через m_feed; вне поиска (category_id != 'search') при auto_bookmark==1 сохраняет в tmp autoBookmarkArr позицию m_feed-3 для desktoppr и m_feed-2 для wallpaperabyss. ↩
plg-hdtv-jurt.c024 · code · unknown; прошивка — · VOD-список BtvVodListScreen запрашивает по 24 элемента на страницу; page_name last/best/search/genres выбирает api_vod_list_last/best/search/genres, остальные значения — ошибка. ↩
plg-hdtv-smart-vod.c318 · code · unknown; прошивка — · getVideoList MoviesTape при m_feed, отличном от end, запрашивает HOST_API_URL . category_id, при m_feed>0 добавляет page/(m_feed+1), конвертирует ответ WINDOWS-1251→UTF-8 и ставит m_feed=end, если в тексте есть span> →, иначе увеличивает m_feed; do_parse_page берёт блок div id='dle-content' до div class="r-block" и строит ShortMovie по src/title/href. ↩
plg-hdtv-folder-cache-vod.c085 · code · unknown; прошивка — · Cursor::parse_page разбирает JSON YouTube API: nextPageToken сохраняется в m_next_ref (иначе stop), id.videoId/playlistId/channelId задают тип элемента, а snippet даёт title, description, channelTitle, channelId, publishedAt, thumbnails и liveBroadcastContent; поиск строится как /search?order=…&part=snippet&q=…&type=…&maxResults=50&pageToken=….
plg-hdtv-folder-cache-vod.c094 · code · unknown; прошивка — · Для плейлиста parse_season и parse_season_info запрашивают /playlistItems по 50 элементов и добирают страницы по nextPageToken в цикле do-while, который продолжается только при $i == 25.
plg-hdtv-smart-vod.c342 · code · unknown; прошивка — · getVideoList Vimeo при m_feed=end возвращает пустой массив; при m_feed=0 выбирает URL по genre_id: tag_url — API_URL . category_id . "?access_token=…", related — тот же URL с filter=related, иначе с sort=; при другом m_feed использует его как URL; при наличии paging->next ставит m_feed = API_URL . paging->next, иначе end; do_shortmovie строит элементы по uri, name, pictures->sizes[2]->link, width/height, duration, release_time/modified_time, user и tags.
plg-hdtv-smart-vod.c343 · code · unknown; прошивка — · getSearchList Vimeo при m_feed=end возвращает пустой массив; при category='' и m_feed=0 запрашивает API_URL . "/videos?query=&sort=&access_token=…", иначе API_URL . "/?query=…"; при m_feed, отличном от 0, использует m_feed как URL; paging->next сохраняется в m_feed, иначе end.
plg-hdtv-smart-apps.c085 · code · unknown; прошивка — · getVideoList Wallpaper листает desktoppr по наличию pagination->next, alphacoders — по success==1; при отсутствии признака следующей страницы m_feed становится end. ↩
plg-dune-remote-control.c039 · code · unknown; прошивка — · Пагинация ls: при непустом head список строит list_directory_contents с head и tail, иначе scandir; в list_directory_contents head приводится к int и при head<0 становится 0, tail<=head — head+1, DirectoryIterator seek(head) отдаёт имена, пока tail>head++. ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c065 · code · unknown; прошивка — · ex_view_info открывает папку с info=1 и video_id/season_ref выбранного элемента только при наличии video_id.
plg-gh-rpervykh-dune-plugin-anidub-com.c076 · code · unknown; прошивка — · Если не сработали предыдущие ветви, а user_data содержит info (в том числе при season_ref), плагин возвращает movie-папку с полями PluginMovie из parse_season_info, right_button для добавления или удаления из избранного, has_multiple_series = (n_series > 1) и series_media_url с season_ref, season_title и n_series.
plg-hdtv-folder-cache-vod.c155 · code · unknown; прошивка — · parse_season_info() для streamit собирает title, IMDb-постер, description, actors (со страницы «Mehr Infos»), duration, year, country, genre, original title, votes, director и IMDb-рейтинг и возвращает HD::encode_user_data с video_id, n_series, page_ref, video_image_url, title, genre, country, year, duration, duration_min, director, actors, description, name_original, kp_rating, fullscreen и imdb_rating.
plg-hdtv-folder-cache-vod.c156 · code · unknown; прошивка — · parse_season_info() во всех трёх ветках безусловно ставит n_series = '2', поэтому PluginMovieFolderView::has_multiple_series (n_series > 1) всегда истинно.
plg-hdtv-folder-cache-vod.c095 · code · unknown; прошивка — · parse_season_info для видео берёт /videos с part=snippet,contentDetails,statistics,status, показывает duration, likeCount, dislikeCount, viewCount и commentCount, а при show_comment=yes и commentCount>0 запрашивает комментарии старым gdata-адресом http://gdata.youtube.com/feeds/api/videos//comments. ↩
plg-hdtv-megaanime.c045 · code · unknown; прошивка — · Отзывы в карточке фильма загружаются parse_film_review постранично для AniFilm, AnimeVost, Anime-Best, AniMedia/Tracker (JSON /ajax/comment), Shikimori (/summaries) и AniDUB (/engine/ajax/comments.php); VodMovieScreen::handle_user_input показывает по одному отзыву с кнопкой «Далее -->» и запоминает страницу в commentСounter. ↩
plg-hdtv-altsource.c064 · code · unknown; прошивка — · Информацию о фильме по Kinopoisk ID плагин берёт с https://filmov.ml/filmov.php?method=info&id= и переносит в поля caption, caption_original, year, country, genres, scenario, director, actors, description, rate_kinopoisk, rate_imdb и class_info/trailers; постер — http://st.kp.yandex.net/images/film_iphone/iphone360_.jpg.
plg-hdtv-altsource.c065 · code · unknown; прошивка — · Поиск Kinopoisk ID идёт через http://www.kinopoisk.ru/api/suggest/v2/?query=<...> с заголовком x-requested-with: XMLHttpRequest; из ответа берутся только typename Film и TvSeries (для персон — Person).
plg-hdtv-altsource.c070 · code · unknown; прошивка — · HD::http_get_document отключает проверку TLS-сертификата и хоста (CURLOPT_SSL_VERIFYPEER=0, CURLOPT_SSL_VERIFYHOST=0), ставит таймауты 30 с, следует редиректам, представляется Chrome 80 и возвращает тело ответа даже при HTTP-коде, отличном от 200, печатая ошибку в stdout.
plg-hdtv-smart-vod.c176 · code · unknown; прошивка — · parse_recommend_items Zona.mobi получает рекомендации через https://relap.io/api/v6/similar_pages.js с widget_id и URL страницы. ↩
plg-dc-torrent-center.c103 · code · unknown; прошивка — · Movie::get_vod_info заполняет series из PluginVodSeriesInfo с playback_url и playback_url_is_stream_url каждого файла.
plg-gh-rpervykh-dune-plugin-anidub-com.c106 · code · unknown; прошивка — · get_vod_info возвращает PluginVodInfo с name, description, poster_url, initial_series_ndx из ndx_series, buffering_ms из cookie buf_time и series; playback_url каждой серии — episode_ref с добавленным &season_ref=, playback_url_is_stream_url=false. ↩
plg-hdtv-folder-cache-vod.c025 · code · unknown; прошивка — · get_vod_info() для media_url, отличного от dummy, возвращает PluginVodInfo с name, description, poster_url, initial_series_ndx, buffering_ms и series; при dummy — пустой массив, а без season_ref и video_id — исключение; каждая серия — PluginVodSeriesInfo с name, playback_url и playback_url_is_stream_url=false. ↩
plg-gh-sndpl-apple-trailers-dune-plugin.c045 · code · unknown; прошивка — · generatePlayInfo возвращает PluginVodInfo: name = название фильма, description = '', poster_url = постер фильма, series из одной PluginVodSeriesInfo с name = тип трейлера, initial_series_ndx = 0, initial_position_ms = 0, advert_mode = false, ip_address_required = true, valid_time_required = false.
plg-gh-sndpl-apple-trailers-dune-plugin.c046 · code · unknown; прошивка — · Серия PluginVodSeriesInfo получает playback_url 'http://mp4://127.0.0.1:7070/?trailer=' и playback_url_is_stream_url = true.
plg-gh-sndpl-apple-trailers-dune-plugin.c048 · code · unknown; прошивка — · В пакет не входят каталог bin/ и файл dunetrailers: внешний сервер плагин ожидает в install_dir/bin.
plg-hdtv-folder-cache-vod.c096 · code · unknown; прошивка — · При playlistItem=0, pl_create, отличном от no, и сохранённом oMediaUrl parse_season собирает плейлист из элементов текущей папки; при pl_create=2 переворачивает их порядок, а playAll=1 ставится в обоих случаях. ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c110 · code · unknown; прошивка — · Иначе, если URL содержит vk.com, get_vod_stream_url скачивает страницу и читает video_no_flv и video_host; при не-FLV читает video_uid, video_vtag и video_max_hd, собирает URL с префиксом mp4:// и ограничивает качество значением video_max_hd; при FLV собирает assets/videos/ с vtag и vkid и суффиксом .vk.flv. ↩
plg-gh-sndpl-apple-trailers-dune-plugin.c038 · code · unknown; прошивка — · getTrailerFiles возвращает файлы только если трейлер найден: сначала берёт закэшированный $trailer->trailerFiles, иначе парсит XML, при null переходит на HTML, и результат, отличный от null, сохраняет в $trailer->trailerFiles.
plg-gh-sndpl-apple-trailers-dune-plugin.c044 · code · unknown; прошивка — · generatePlayInfo сначала вызывает startServer, затем находит фильм по location, трейлер по location и type и берёт файл по fileIndex из getTrailerFiles.
plg-hdtv-folder-cache-vod.c035 · code · unknown; прошивка — · Youtube_api.php в SmotriMultik и Videokub ищет конфиг плеера по regex /yt.playerConfig = ({.});/, а в остальных вариантах — по /ytplayer.config = ({.});/. ↩
plg-hdtv-folder-cache-vod.c079 · code · unknown; прошивка — · Корневой utils.php YouTubeMult задаёт HOST_API_URL https://www.googleapis.com/youtube/v3; плагин запрашивает у этого API методы /channels, /search, /videos и /playlistItems.
plg-hdtv-folder-cache-vod.c084 · code · unknown; прошивка — · Если в media_url есть channelId, General_main строит меню канала по /channels и /search. Иначе при наличии tmp-файла category_info он берёт готовый список через HD::get_items_tmp, а без него строит категории из data/channel_list.xml: для каждого item с username или external_id запрашивает /channels, добавляет пункты [videos] и [playlists] через /search, а [live] — по /search?eventType=live при totalResults > 0, после чего кэширует список в category_info.
plg-hdtv-freetv.c062 · code · unknown; прошивка — · В ветках /validate/, obrut, ALLOHA и videoseedcdn.com get_vvod_stream_url выбирает дорожку по cookie video_quality: 4=1080, 3=720, 2=480, 1=360 (по умолчанию 4); в /validate/ и videoseedcdn.com из RESOLUTION= берётся максимальная дорожка не выше выбранной. ↩
plg-hdtv-smart-apps.c082 · code · unknown; прошивка — · Для desktoppr Wallpaper использует https://api.desktoppr.co/1/wallpapers?page= и desktoppr_random; для wallpaperabyss — API wall.alphacoders.com с методами random, newest, highest_rated, by_views, by_favorites, popular, featured, а также category_list и collection_list.
plg-hdtv-smart-apps.c083 · code · unknown; прошивка — · Подкатегории wallpaperabyss загружаются методами API category_list, collection_list и sub_category_list; для категории и подкатегории используются method=category&id= и method=sub_category&id= с параметром page.
plg-hdtv-smart-vod.c126 · code · unknown; прошивка — · HdKinoTeatr.Com извлекает категории из HTML главной страницы через class="cats" и ссылки href.
plg-hdtv-smart-vod.c128 · code · unknown; прошивка — · При совпадении шаблона var vkArr в parse_video_page HdKinoTeatr.Com массив декодируется как JSON; последующий foreach использует file/comment его элементов для формирования источников фильма.
plg-hdtv-smart-vod.c289 · code · unknown; прошивка — · knigavuhe строит каталог из ссылок a.index_genre с количеством книг в index_genre_count, а разделы «Авторы» и «Исполнители» — из списка букв блока _letters соответствующей страницы; список кэшируется отдельно для каждой категории. ↩
plg-hdtv-smart-vod.c291 · code · unknown; прошивка — · knigavuhe разбирает список книг по блокам bookkitem, подставляет обложку через CGI do?img=, берёт автора из author_label, время из bookkitem_meta_time, жанр и описание. ↩
plg-hdtv-smart-vod.c292 · code · unknown; прошивка — · knigavuhe разбирает страницу авторов и исполнителей по ссылкам _item с количеством книг _item_books_count и подставляет иконку author.png либо reader.png в зависимости от сегмента author или reader в URL. ↩
plg-hdtv-smart-vod.c330 · code · unknown; прошивка — · get_main_subcategories Filmix_API при cat=s0, s7 или s14 строит URL каталога HOST_API_URL . "/catalog?orderby=year&filter=" для пункта «Все», "...&filter=-q4" для «4K» и "...&filter=-" для остальных; getVideoList при m_feed, отличном от end, добавляет &page= при m_feed>0, ставит end при ответе "[]" и иначе увеличивает m_feed; do_parse_page читает JSON-поля poster, title, id, year, quality, original_title, countries, categories и заменяет /w220/ на /w160/ и _0.jpg на .jpg. ↩
plg-hdtv-rain-tv.c027 · code · unknown; прошивка — · RainVod::load_movies создаёт на каждый элемент Config::$ICONS_GENRES_MAP ShortMovie(id, name, null) и Movie с series_data (playback_url = stream_url, playback_url_is_stream_url=true); класс в RainPlugin не создаётся. ↩
plg-hdtv-surface-family.c114 · code · unknown; прошивка — · В LSS объявлены VOD_MOVIE_PAGE_SUPPORTED = true и VOD_FAVORITES_SUPPORTED = true и лежат 9 файлов lib/vod/, но surface_plugin.php не подключает VOD и регистрирует единственный экран SurfaceTvChannelListScreen; www/, translations/ и setup_screen.php в пакете отсутствуют.
plg-hdtv-surface-family.c122 · code · unknown; прошивка — · В пакете Radiopotok.ru лежат 9 файлов lib/vod/, но surface_plugin.php не подключает VOD и регистрирует только SurfaceTvChannelListScreen и DemoSetupScreen; VOD-классы и VOD-экраны не используются, как и у LSS.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c090 · code · unknown; прошивка — · AceSearchTv::history_delete при наличии истории удаляет запрос из JSON-объекта и записывает обновлённый JSON обратно в plugin_cookies->history. ↩
plg-hdtv-zlostnyi-iptv.c077 · code · unknown; прошивка — · HD::get_items/save_items/get_item/save_item (дополнение копии lib) хранят данные файлами в DuneSystem::$properties['data_dir_path'] . '/' . <имя>; списки — через serialize. ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c052 · code · unknown; прошивка — · Диалог поиска содержит текстовое поле search с has_osk в зависимости от use_osk, кнопку «Искать» (close_dialog_and_apply) и «Отмена»; при use_osk=yes добавляется вертикальный отступ 500, иначе 50.
plg-gh-rpervykh-dune-plugin-anidub-com.c053 · code · unknown; прошивка — · Ввод search сохраняет последний запрос в plugin_cookies->search и перерисовывает диалог через reset_controls.
plg-gh-rpervykh-dune-plugin-anidub-com.c054 · code · unknown; прошивка — · perform_new_search кодирует последний запрос через urlencode, упаковывает его в media_url как ser_feed и открывает папку PLUGIN_OPEN_FOLDER_ACTION_ID.
plg-hdtv-folder-cache-vod.c021 · code · unknown; прошивка — · handle_user_input() разбирает user_input->control_id в switch (search, setup, skin, restart, video_quality, add_favorite, remove_fav, just_play, play_item, view_series, mark_viewed и др.); если control_id не задан или не совпал ни с одним case, возвращает действие PLUGIN_OPEN_FOLDER_ACTION_ID для selected_media_url. ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c055 · code · unknown; прошивка — · do_new_search добавляет запрос в историю search_items и инвалидирует текущую папку с post_action perform_new_search.
plg-gh-rpervykh-dune-plugin-anidub-com.c057 · code · unknown; прошивка — · remove_search и move_search_top меняют search_items по ser_feed выбранного элемента и обновляют папку main_menu:search через update_regular_folder.
plg-gh-rpervykh-dune-plugin-anidub-com.c097 · code · unknown; прошивка — · В main_menu:search плагин первым пунктом добавляет «[Новый запрос]» с пустым ser_feed, затем элементы истории search_items с подписью «поиск: <текст>» и urlencode в ser_feed.
plg-hdtv-megaanime.c032 · code · unknown; прошивка — · Экран поиска показывает пункт «[Искать]» и историю запросов из search_items; запрос можно поднять, опустить или удалить, а при поиске с search_choice == 1 и без media_url->name выбирается сайт из getSiteArr либо общий поиск. ↩
plg-hdtv-smart-apps.c103 · code · unknown; прошивка — · Экран поиска Wallpaper хранит историю запросов в search_items; ENTER для сохранённого запроса открывает его папку, для пункта поиска и PLAY — диалог ввода (с экранной клавиатурой при use_osk==1); do_new_search запускает run_search, который сохраняет запрос в search_item и search_items и открывает SmartVodListScreen('search', <текст>, ). ↩
plg-hdtv-smart-vod.c118 · code · unknown; прошивка — · При control_id=run_search эталон удаляет прежний дубль запроса, помещает запрос в начало search_items, сохраняет его и возвращает открытие поиска после инвалидирования search_screen. ↩
plg-hdtv-freetv.c027 · code · unknown; прошивка — · Экран поиска хранит историю запросов в HD::get_items('search_items')/HD::save_items('search_items'), а последний запрос — в HD::save_item('search_item'). ↩
plg-hdtv-zlostnyi-iptv.c076 · code · unknown; прошивка — · BcuSearchScreen ведёт историю запросов: run_search сохраняет последний запрос HD::save_item('search_item') и список HD::save_items('search_items') (новый — в начало, без повторов) и открывает BcuVodListScreen('search', запрос); кнопки: ENTER — открыть/поиск, PLAY — клавиатура, B_GREEN «Поднять», C_YELLOW «Опустить», D_BLUE «Удалить».
plg-hdtv-zlostnyi-iptv.c077 · code · unknown; прошивка — · HD::get_items/save_items/get_item/save_item (дополнение копии lib) хранят данные файлами в DuneSystem::$properties['data_dir_path'] . '/' . <имя>; списки — через serialize.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c034 · code · unknown; прошивка — · AceSearchTvGroupListScreen задаёт четыре режима сортировки истории: alphabet, usage_count, last_used, added; текущий режим хранится в статическом $sort_mode.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c091 · code · unknown; прошивка — · AceSearchTv::history_sort_cb сравнивает элементы истории по текущему режиму сортировки через strnatcasecmp($b[$mode], $a[$mode]) — по убыванию строкового значения.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c038 · code · unknown; прошивка — · В AceSearchTvGroupListScreen обработчик history_delete при выбранной группе показывает диалог подтверждения с кнопками really_history_delete и cancel; ветка really_history_delete (elseif после history_delete) удаляет запрос из истории и инвалидирует папку экрана.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c090 · code · unknown; прошивка — · AceSearchTv::history_delete при наличии истории удаляет запрос из JSON-объекта и записывает обновлённый JSON обратно в plugin_cookies->history.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c092 · code · unknown; прошивка — · AceSearchTv::load_groups при отсутствии plugin_cookies->history создаёт три начальные записи: Discovery, "Футбол 1 HD" и "Футбол 2 HD" (комментарий TODO).
plg-gh-valerievitch-dune-plugin-acestreamsearch.c031 · code · unknown; прошивка — · AceSearchScreen наследует VodSearchScreen, но вызывает конструктор AbstractControlsScreen напрямую (AbstractControlsScreen::__construct(self::ID)) и вручную присваивает $this->vod = $tv, обходя конструктор VodSearchScreen(Vod $vod).
plg-gh-valerievitch-dune-plugin-acestreamsearch.c032 · code · unknown; прошивка — · Базовый VodSearchScreen по action_type=apply и control_id=pattern сохраняет шаблон в plugin_cookies->vod_search_pattern и открывает папку, полученную от $this->vod->get_search_media_url_str($pattern).
plg-hdtv-smart-vod.c127 · code · unknown; прошивка — · getSearchList HdKinoTeatr.Com при m_feed, отличном от end, посылает POST поиска на /index.php?do=search с search_start=m_feed+1 и result_from=1 либо m_feed*10+1 при m_feed>0.
plg-hdtv-smart-vod.c156 · code · unknown; прошивка — · Futbik.Net при m_feed, отличном от end, использует POST поиска с шагом result_from=m_feed*70+1 для m_feed>0, иначе result_from=1.
plg-hdtv-smart-vod.c161 · code · unknown; прошивка — · Indiakino.net при m_feed, отличном от end, использует POST поиска с шагом result_from=m_feed*12+1 для m_feed>0, иначе result_from=1.
plg-hdtv-smart-vod.c157 · code · unknown; прошивка — · KinoKrad.Co после единственного POST поиска безусловно ставит m_feed=end; при входном end возвращает пустой массив.
plg-hdtv-smart-vod.c158 · code · unknown; прошивка — · KinoProfi.Org при m_feed, отличном от end, ищет через /search/f:, добавляя /page// при m_feed>0.
plg-hdtv-smart-vod.c279 · code · unknown; прошивка — · Kinogo.so ищет DLE-запросом POST /index.php?do=search с result_from=m_feed*10+1 и набором браузерных заголовков (origin, referer, accept-language), конец пагинации — по наличию Позже.
plg-hdtv-smart-vod.c275 · code · unknown; прошивка — · Gidonline.net.ua ищет через /?s=<запрос>, для следующих страниц — /page//?s=<запрос>; конец пагинации определяет по отсутствию class='nextpostslink'.
plg-hdtv-smart-vod.c271 · code · unknown; прошивка — · Filmix ищет через POST /engine/ajax/sphinx_search.php с scf=fx, story, search_start и фиксированными фильтрами years_ot=1902/years_do=2018, kpi_ot=1/kpi_do=10, imdb_ot=1/imdb_do=10, заголовками X-Requested-With, Referer, Origin и Cookie FILMIXNET из cookie-файла.
plg-hdtv-smart-vod.c172 · code · unknown; прошивка — · Zona.mobi при поиске с m_feed, отличным от end, запрашивает search/ с X-Requested-With: XMLHttpRequest и декодирует JSON; при равенстве current_page и total_pages ставит end.
plg-gh-rpervykh-dune-plugin-anidub-com.c088 · code · unknown; прошивка — · Cursor::parse_page_search отправляет POST на HOST_API_URL . '/index.php?do=search' с телом do=search&subaction=search&search_start=1&full_search=1&result_from=1&titleonly=3&story=<запрос> и разбирает блоки newstitle и poster_img. ↩
plg-hdtv-folder-cache-vod.c065 · forum · unknown; прошивка — · В теме 15561 karas-avadim назван «оживлённым плагином от karas71» к немецким сайтам (szene-streams.com, kkiste.to, filmpalast.to, burning-seri.es, live-stream.tv); поиск в версии 1.0.0 не работает. ↩
plg-hdtv-smart-vod.c319 · code · unknown; прошивка — · getSearchList MoviesTape при m_feed>0 или m_feed=end возвращает пустой массив; иначе запрашивает Google Custom Search JSON API по адресу https://www.googleapis.com/customsearch/v1element с key, cx, sig и cse_tok из кода, ставит m_feed=end и оставляет только результаты с URL, оканчивающимся на .html и содержащим /katalog, /erotic/, /dokumentalnyj, /treilers/, /korotkometrazhky/ или /ukrainian/. ↩
plg-hdtv-smart-vod--link-api.c014 · code · unknown; прошивка — · videoSearcher::yohohoVideoSearch отправляет POST на https://ahoy.yohoho.cc с kinopoisk= или title= и списком плееров collaps,bazon,ustore,alloha,hdvb,videocdn,kodik и др., а из ответа строит карту service → iframe. ↩
plg-hdtv-megaanime.c035 · code · unknown; прошивка — · Общий поиск по умолчанию (category == '') перебирает shikimori_search, anidub_search, animediatv_search, tranimediatv_search, animebest_search и animevost_search, затем из ветки animevost_search переходит к smotretanime_search и далее к anifilm_search; getSiteArr smotretanime_search не содержит. ↩
plg-hdtv-folder-cache-vod.c085 · code · unknown; прошивка — · Cursor::parse_page разбирает JSON YouTube API: nextPageToken сохраняется в m_next_ref (иначе stop), id.videoId/playlistId/channelId задают тип элемента, а snippet даёт title, description, channelTitle, channelId, publishedAt, thumbnails и liveBroadcastContent; поиск строится как /search?order=…&part=snippet&q=…&type=…&maxResults=50&pageToken=…. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c065 · code · unknown; прошивка — · При use_local_search_engine = TRUE AceSearchTv::ace_search обращается к http://127.0.0.1:6878/server/api?method=get_api_access_token, берёт токен из result.token и формирует запрос method=search с этим токеном.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c066 · code · unknown; прошивка — · При use_local_search_engine = FALSE AceSearchTv::ace_search формирует запрос method=search к remote_search_url с api_version, api_key, общими параметрами и urlencode(query).
plg-hdtv-smart-vod.c331 · code · unknown; прошивка — · getSearchList Filmix_API при m_feed=end возвращает пустой массив; иначе запрашивает HOST_API_URL . "/suggest?word=", сразу ставит m_feed=end и разбирает JSON тем же do_parse_page. ↩
plg-hdtv-smart-apps.c084 · code · unknown; прошивка — · Поиск Wallpaper вызывает API alphacoders методом search с term=urlencode(keyword) и width=1920&height=1080; после одного ответа m_feed становится end. ↩
plg-hdtv-megaradio.c092 · code · unknown; прошивка — · Класс Youtube в пакете MegaRadio не определён; Smart_vod.php перед использованием подключает внешний /tmp/plugins/link_api.php (или локальный link_api.php), поэтому youtube_search зависит от этого внешнего файла.
plg-hdtv-megaradio.c098 · code · unknown; прошивка — · При control_id = yt_search SmartM3uTv берёт из SmartConfig::get_radio_stream_info поля artist и track (если заданы), склеивает их через « - » и открывает SmartVodListScreen с category_id = search, genre_id = полученная строка и name = youtube_search.
plg-hdtv-megaradio.c147 · forum · unknown; прошивка — · Автор предупреждает, что возврат из окна поиска трека на YouTube даёт чёрный экран и требует нажать стоп на треке.
plg-hdtv-zlostnyi-iptv.c075 · code · unknown; прошивка — · Поиск bcu (getSearchList) ищет подстроку без учёта регистра (mb_strtolower) в названиях фильмов групп «Медиатека» и «BCU Кинопремьера» из /tmp/vod_playlist.m3u. ↩
plg-dc-globaltv--rows-epf.c051 · code · unknown; прошивка — · Диалог поиска заполняет поле search_channels_text из cookie last_search_channels_text и передаёт section_id кнопке search_channels_submit_dialog.
plg-dc-globaltv--rows-epf.c052 · code · unknown; прошивка — · Обработчик отправки поиска применяет trim, отклоняет пустую строку, затем приводит текст к нижнему регистру UTF-8 и закрывает диалог с запуском поиска; section_id по умолчанию all.
plg-dc-globaltv--rows-epf.c055 · code · unknown; прошивка — · channel_name_contains_text приводит имя к нижнему регистру UTF-8 и требует для каждого слова запроса префиксное совпадение с одним из слов имени; совпавшее слово удаляется, при отсутствии совпадения возвращается false.
plg-dc-globaltv--rows-epf.c059 · code · unknown; прошивка — · При поиске строка __favorites (ветка item_ndx=-1) получает весь список избранных каналов, а вызов filter_channels находится только в else для обычной категории.
plg-dc-widget-ext--adv-keyboard.c044 · code · unknown; прошивка — · SuggestionsProvider задаёт пять методов: получение подсказок, их представления, поискового текста, дополнительных параметров действия и признака поиска только по подсказке.
plg-dc-widget-ext--adv-keyboard.c045 · code · unknown; прошивка — · DummySuggestionsProvider возвращает пустой массив подсказок, null для представления, текста и параметров, false для isSearchBySuggestionOnly.
plg-dc-widget-ext--adv-keyboard.c046 · code · unknown; прошивка — · KinopoiskSuggestionsProvider при непустом query запрашивает JSON через HD::http_get_document по handler_search.php с urlencode(query), topsuggest=true и ajax=1.
plg-dc-widget-ext--adv-keyboard.c047 · code · unknown; прошивка — · KinopoiskSuggestionsProvider при наличии captcha в декодированном ответе возвращает пустой массив.
plg-dc-widget-ext--adv-keyboard.c057 · code · unknown; прошивка — · GismeteoSuggestionsProvider всегда возвращает true из isSearchBySuggestionOnly, а YoutubeSuggestionsProvider — false.
plg-hdtv-altsource.c056 · code · unknown; прошивка — · Поиск открывается диалогом с текстовым полем doNewSearch; если useOsk = 2 и не передан openStandartSearch, вместо стандартной клавиатуры запускается AdvKeyboard с подсказками файлов (suggSite = fileSearch).
plg-hdtv-altsource.c058 · code · unknown; прошивка — · Настройки поиска хранятся в searchSettings: useOsk 0 (нет), 1 (стандартная), 2 (продвинутая текстовая); kpSearchMetod 0–2 (варианты 1–3: быстрый, медленный с капчей, быстрый с малой выдачей); по умолчанию useOsk = 1, kpSearchMetod = 0 (вариант 1).
plg-dc-torrent-center.c123 · code · unknown; прошивка — · SmartVod сохраняет favorite_movies в plugin_cookies как строку идентификаторов, разделённых запятыми. ↩
plg-hdtv-moidom.c019 · code · unknown; прошивка — · Избранные фильмы хранятся в cookie favorite_movies как id через запятую; load_favorites догружает недостающие карточки, set_fav_movie_ids_to_cookies записывает список обратно. ↩
plg-hdtv-peerstv.c016 · code · unknown; прошивка — · Избранные фильмы хранятся в plugin_cookies в поле favorite_movies как список id через запятую; пустые элементы отбрасываются. ↩
plg-hdtv-pirates-radio.c048 · code · unknown; прошивка — · Избранные фильмы хранятся в cookie favorite_movies одной строкой id через запятую: если cookie задана, при чтении строка делится preg_split('/,/'), элементы без непробельных символов отбрасываются, при записи массив склеивается join(','), а при отсутствии cookie возвращается пустой массив. ↩
plg-hdtv-zlostnyi-iptv.c074 · code · unknown; прошивка — · Избранные фильмы bcu хранятся в cookie favorite_movies — id через запятую. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c097 · code · unknown; прошивка — · AbstractTv хранит избранное в plugin_cookies->favorite_channels строкой через запятую: get_fav_channel_ids разбивает по /,/, set_fav_channel_ids склеивает join(','). ↩
plg-hdtv-surface-family.c123 · code · unknown; прошивка — · SomaFM и Radiopotok.ru поддерживают избранное каналов (TV_FAVORITES_SUPPORTED = true) и хранят его в cookie favorite_channels как rmfon.pl: abstract_tv.php разбирает cookie через preg_split('/,/', ...) и сохраняет join(',', ...). ↩
plg-dc-bazinga3.c042 · code · unknown; прошивка — · SmartVod хранит избранное в plugin_cookies->favorite_movies строкой id через запятую. ↩
plg-hdtv-altv.c030 · code · unknown; прошивка — · Избранные фильмы хранятся в cookie favorite_movies одной строкой id через запятую; пустые элементы отбрасываются, при сохранении список склеивается через join(','). ↩
plg-hdtv-freetv.c028 · code · unknown; прошивка — · Избранные фильмы видеотеки хранятся через HD::get_items('favorite_movies') и HD::save_items('favorite_movies', $ids). ↩
plg-hdtv-smart-vod.c114 · code · unknown; прошивка — · Избранное HdKinoTeatr.Com читается и записывается через HD::get_items/save_items с именем favorite_movies, несмотря на имя методов с суффиксом from/to_cookies. ↩
plg-hdtv-smart-apps.c104 · code · unknown; прошивка — · SmartVod Wallpaper наследует AbstractVod с тремя true, хранит избранное в favorite_movies, кэш фильмов — в saved_movie, а try_load_movie при отсутствии фильма в saved_movie вызывает SmartConfig::parse_video_page. ↩
plg-hdtv-surface-family.c068 · code · unknown; прошивка — · VodSeriesListScreen пакета Radiorecord.ru хранит избранные треки в файле favorites через HD::get_items()/HD::save_items(); select доступен всегда, удаление и перемещение up/down — только в списке favorites (movie_id == 'favorites'), а пункт «Скачать» в popup_menu показывается только при существовании /ltu/bin/aria2c. ↩
plg-hdtv-altsource.c032 · code · unknown; прошивка — · Избранное хранится в DATA под ключом favorite_movies как список media_url; синяя кнопка/пункт меню добавляет или удаляет выбранный элемент и показывает диалог «Добавленно в Избранное» или «Удалено из Избранного». ↩
plg-gh-mdpuma-dune-plugin-altiptv.c048 · code · unknown; прошивка — · AbstractTv хранит favorite_channels в сериализованном файле при fav_save=1, иначе — в plugin_cookies строкой с разделителем запятая. ↩
plg-hdtv-smart-apps.c057 · code · unknown; прошивка — · Speedtest в Entware получает список серверов командой /opt/bin/speedtest-cli --list, хранит избранные в speedtest_favs, запускает /opt/bin/speedtest-cli --share --server и показывает ссылку из строки Share results. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c124 · code · unknown; прошивка — · AbstractTv::change_tv_favorites обрабатывает PLUGIN_FAVORITES_OP_ADD/REMOVE/MOVE_UP/MOVE_DOWN и передаёт изменённый список в set_fav_channel_ids. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c098 · code · unknown; прошивка — · AbstractTv::change_tv_favorites обрабатывает PLUGIN_FAVORITES_OP_ADD, REMOVE, MOVE_UP и MOVE_DOWN, затем сохраняет список и возвращает invalidate_folders для TvFavoritesScreen.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c104 · code · unknown; прошивка — · FavoritesGroup::get_channels вызывает tv->get_fav_channel_ids() без аргумента plugin_cookies и собирает каналы по id; метод get_fav_channel_ids объявлен с обязательным &$plugin_cookies.
plg-hdtv-pirates-radio.c016 · code · unknown; прошивка — · DefaultDunePlugin направляет операции оболочки в зарегистрированные экраны (get_folder_view, get_next_folder_view, get_regular_folder_items), в объект Tv (get_tv_info, get_tv_stream_url, get_tv_playback_url, get_day_epg, change_tv_favorites), в объект Vod (get_vod_info, get_vod_stream_url) и в UserInputHandlerRegistry (handle_user_input). ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c067 · code · unknown; прошивка — · handle_user_input экрана каналов при control_id == 'add_favorite': возвращает null без selected_media_url; декодирует media_url и берёт channel_id; если канал уже в избранном — показывает «Канал уже находится в Избранном» с обновлением элемента; иначе вызывает change_tv_favorites(PLUGIN_FAVORITES_OP_ADD) и показывает «Канал добавлен в Избранное» с обновлением. ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c058 · code · unknown; прошивка — · add_favorite требует selected_media_url, берёт video_id из parent или selected media_url, добавляет его в fav_items и складывает все episode_ref сезона в cookie с именем video_id.
plg-gh-rpervykh-dune-plugin-anidub-com.c059 · code · unknown; прошивка — · add_favorite при уже существующем video_id показывает «Видео уже в избранном»; при добавлении с right_button инвалидирует parent-папку, иначе показывает диалог «Видео добавлено в избранное».
plg-gh-rpervykh-dune-plugin-anidub-com.c058 · code · unknown; прошивка — · add_favorite требует selected_media_url, берёт video_id из parent или selected media_url, добавляет его в fav_items и складывает все episode_ref сезона в cookie с именем video_id.
plg-gh-rpervykh-dune-plugin-anidub-com.c104 · code · unknown; прошивка — · parse_season для каждой option извлекает episode_ref (до кавычки) и episode_title (после «">» до «</»), помечает is_new, если episode_ref нет в cookie с именем season_ref, и кодирует episode_title, episode_ref, season_title, season_ref, ndx_series, poster_url и description.
plg-gh-rpervykh-dune-plugin-anidub-com.c083 · code · unknown; прошивка — · Если season_ref и fav отсутствуют, а также не сработали ветви category_ref и subcategory_ref/ser_feed/main_menu:fav, при video_id get_regular_folder_items берёт закэшированный media_url из VideoCache, вызывает get_vod_info и отдаёт серии с подписями [NEW] или [VIEWED] по спискам video_id и video_id.viewed.
plg-hdtv-folder-cache-vod.c048 · code · unknown; прошивка — · Избранное хранится в $plugin_cookies->fav_items как список через '|', список просмотренных серий — в поле $plugin_cookies->; ListUtil::add_item() ставит новый элемент в начало списка.
plg-hdtv-folder-cache-vod.c118 · code · unknown; прошивка — · Избранное streamit — список video_id в $plugin_cookies->fav_items; при добавлении плагин вызывает parse_season($video_id) и складывает episode_ref каждой серии в $plugin_cookies-> через ListUtil::add_item.
plg-gh-rpervykh-dune-plugin-anidub-com.c060 · code · unknown; прошивка — · remove_fav при fav_build_in_progess показывает «Подождите окончания построения списка!»; иначе удаляет video_id из fav_items, cookie серии, cookie video_id.viewed и помечает папку main_menu:fav просроченной.
plg-gh-rpervykh-dune-plugin-anidub-com.c061 · code · unknown; прошивка — · move_fav_top добавляет выбранный video_id в начало fav_items и инвалидирует parent-папку; при fav_build_in_progess показывает то же предупреждение.
plg-gh-rpervykh-dune-plugin-anidub-com.c067 · code · unknown; прошивка — · Карта действий избранного отличается от обычной: ENTER=view_series или ex_view_info по skip_details, PLAY=play_item, A_RED=switch_view, POPUP_MENU=show_popup_menu с пунктами «Переместить вверх» и «Удалить».
plg-hdtv-plugtv.c010 · code · unknown; прошивка — · DemoConfig задаёт константы VOD_MOVIE_PAGE_SUPPORTED=false, VOD_FAVORITES_SUPPORTED=false, TV_FAVORITES_SUPPORTED=false, CHANNEL_LIST_URL='list.xml' и сортировку каналов по номеру через DemoConfig::sort_channels_cb.
plg-hdtv-plugtv.c037 · code · unknown; прошивка — · В списке каналов ENTER и PLAY запускают tv_play; зелёная кнопка показывает диалог с версией, жёлтая открывает настройки, синяя — «Полезно знать»; действия избранного добавляются только при is_favorites_supported().
plg-hdtv-surface-family.c113 · code · unknown; прошивка — · LSS отключает избранное каналов: Config::TV_FAVORITES_SUPPORTED = false, хотя константа FAV_CHANNEL_GROUP_ICON_PATH указывает на plugin_file://icons/fav.png, а get_fav_icon_url() возвращает её; файла icons/fav.png в пакете нет. ↩
plg-hdtv-zlostnyi-iptv.c164 · code · unknown; прошивка — · Медиатека sharavoz — демо-VOD Dune: категории, список фильмов и карточка фильма читаются XML с http://online.dune-hd.com/flussonic2/… через simplexml_load_string; поиск и избранное VOD отключены (VOD_FAVORITES_SUPPORTED = false, файла *_search_screen.php нет).
plg-hdtv-zlostnyi-iptv.c165 · code · unknown; прошивка — · Медиатека tvteam — демо-VOD Dune: категории, список фильмов и карточка фильма читаются XML с http://online.dune-hd.com/flussonic2/… через simplexml_load_string; поиск и избранное VOD отключены (VOD_FAVORITES_SUPPORTED = false, файла *_search_screen.php нет).
plg-hdtv-jurt.c026 · code · unknown; прошивка — · VOD-избранное фактически отключено: load_favorites возвращает пустой массив и не читает сервер, а do_add_favorite_movie/do_remove_favorite_movie вызывают несуществующие методы BtvSession::api_vod_favadd/api_vod_favsub. ↩
plg-dune-remote-control.c051 · code · unknown; прошивка — · При cmd=favorites и menu=add плагин требует непустые name и media_url, затем по версии прошивки выбирает ветку; новая ветка обходит три каталога main_screen_items, пропускает persistfs, если он не смонтирован, и создаёт /dune_folder.txt в первом каталоге, где после remove_item такого подкаталога ещё нет, с media_url, media_url_check=no и media_action=browse, если у media_url нет расширения; при ошибке mkdir или fopen в очередном каталоге переходит к следующему, а если не удалось ни в одном — false.
plg-dune-remote-control.c053 · code · unknown; прошивка — · Порог поведения избранного — date >= 130515 и build >= 2104 (status b6 записан в таблице, но в условии не участвует): при выполнении обоих условий add_item и remove_item работают с тремя каталогами main_screen_items (persistfs пропускается, если не смонтирован), иначе — только с /config/main_screen_items; remove в новой ветке удаляет dune_folder.txt и затем rmdir, в старой — то же в config.
plg-dune-remote-control.c054 · code · unknown; прошивка — · is_persistfs_mounted считает /persistfs смонтированным, если sed по /proc/mounts находит строку, где второй столбец — /persistfs.
plg-dune-remote-control.c050 · code · unknown; прошивка — · Если при cmd=favorites (default-ветка menu) ни один из трёх каталогов main_screen_items не открывается, плагин не вызывает make_ok и не создаёт items: ответ содержит только protocol_version, без command_status и player_state.
plg-dc-torrent-center.c124 · code · unknown; прошивка — · Movie при playback_stop переносит накопленную playback_info в сериализованный viewedItemsArr.
plg-dc-torrent-center.c125 · code · unknown; прошивка — · Movie задаёт initial_position_ms из сохранённой позиции выбранного файла; отрицательную позицию и позицию не далее пяти секунд от конца сбрасывает в ноль.
plg-hdtv-megaanime.c064 · code · unknown; прошивка — · Просмотренные элементы хранятся в файле viewed_items: для player.tree.tv ключом служит md5(series_name), для остальных — playback_url; get_vod_info использует это для метки [ПРОСМ] и initial_position_ms, а doSaveViewedItems перезаписывает запись. ↩
plg-dc-torrent-center.c149 · code · unknown; прошивка — · Movie при playback_switched и заданном saveSeasonTimes опрашивает локальный cmd=status, затем посылает cmd=set_playback_state с position и speed=256. ↩
plg-hdtv-altsource.c042 · code · unknown; прошивка — · На первом событии таймера VOD-воспроизведения Movie добавляет запись в itemsHistory с history_path, history_str («Просмотрено: <дата>»), а также csi и current_network_folder при их наличии; запись ставится в начало, история обрезается до 310 элементов.
plg-hdtv-altsource.c033 · code · unknown; прошивка — · История просмотра хранится в DATA под ключом itemsHistory; экран истории по history_path определяет basename и type элемента, показывает history_str и позволяет удалить один элемент или очистить всю историю.
plg-ds-dune-hd-tv.c066 · code · unknown; прошивка — · История просмотра архива хранится в plugin_cookies->prodhist (JSON, до 8 записей type/product_id, новые — в начало). ↩
fw-tv188b-260827-0003-r24--shell-ext--entry-handler.c103 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · find_recent принимает JSON uids/tags/eps и обязательные result_action/result_file; force_reload выбирает reload истории вместо ensure_loaded. ↩
plg-dc-dunemdb-supplier-online-movies.c054 · code · unknown; прошивка — · update_wh запрашивает у shell_ext действие find_recent, передавая uids (только при наличии tfs), tags всех торрентов, result_action и result_file; uids для play_tfs добавляются только при with_play_tfs, наличии play_mts/play_tfs и — если nav tfs есть — несовпадении torrent_id с ним.
plg-dc-dunemdb-supplier-online-movies.c055 · code · unknown; прошивка — · Для сериалов есть отдельный update_eps_wh: он запрашивает find_recent с eps-тегом, force_reload false, result_action post_update_wh и result_file; update_wh используется для обычной истории.
plg-dc-dunemdb-supplier-online-movies.c056 · code · unknown; прошивка — · post_update_wh при action_status = 1 и существующем result_file читает файл, удаляет его и разбирает JSON; при eps_mode вызывает set_eps, иначе set; затем выполняет post_action из входа.
plg-dc-dunemdb-supplier-online-movies.c074 · code · unknown; прошивка — · TorrentHistory формирует uid файла как online_movies:::, тег торрента — online_movies:tuid:, эпизодный тег — online_movies::: (при s < 0 берётся s = 1); история сохраняется в /wh.json и /eps_wh.json.
plg-gh-rpervykh-dune-plugin-anidub-com.c062 · code · unknown; прошивка — · mark_viewed учитывает только элементы из fav_items; video_id берётся из video_id или season_ref, просмотренный url — из url_series или episode_ref, и добавляется в cookie video_id.viewed, после чего обновляется parent-папка. ↩
plg-hdtv-duneplexcatalog.c075 · forum · unknown; прошивка — · По словам автора, ручная и автоматическая отметка просмотра не работает для многосерийных фильмов, объединённых в одну папку, потому что Plex не даёт такой возможности. ↩
plg-hdtv-duneplexcatalog.c040 · code · unknown; прошивка — · Отметку просмотра плагин ставит запросом /:/scrobble?key=&identifier= com.plexapp.plugins.library, снимает — /:/unscrobble с теми же параметрами.
plg-hdtv-duneplexcatalog.c051 · code · unknown; прошивка — · Если playback_duration больше 60, notifier вычисляет seen_threshold = duration*95/100 и помечает фильм просмотренным запросом /:/scrobble, когда playback_position превысил порог и отметка ещё не отправлялась.
plg-hdtv-altsource.c060 · code · unknown; прошивка — · Вход myShows выполняется OAuth-запросом к https://myshows.me/oauth/token: grant_type=password для логина и grant_type=refresh_token для обновления; client_id — base64_decode('bXlzaG93c196aXZpbw'), client_secret — cUvxSKgAkxMceEd5Dq5Vt2f6; полученные токены сохраняются в mShowsA.
plg-hdtv-altsource.c061 · code · unknown; прошивка — · myShows-интеграция использует JSON-RPC https://api.myshows.me/v2/rpc/ методами shows.Search, shows.GetById, profile.Get, profile.Episodes, manage.CheckEpisode и manage.UnCheckEpisode; методы profile.* и manage.* передают заголовок Authorization: Bearer .
plg-hdtv-altsource.c062 · code · unknown; прошивка — · Если у файла задан myShowsShowID и он ещё не отмечен, playback_stop вызывает manage.CheckEpisode в myShows и сбрасывает кэш просмотренных серий (getWatchedMyShows('clear')).
plg-hdtv-altsource.c081 · code · unknown; прошивка — · Номер сезона и серии для myShows плагин извлекает из имени файла набором регулярных выражений: sNNNeNNN, [NxN], «N Сезон N Серия», «Сезон N Серия N», украинские варианты и обратный порядок «серия … сезон».
plg-hdtv-altsource.c063 · code · unknown; прошивка — · Импорт myShows из DATA Bazinga читает файл mShowsA через unserialize, при нескольких аккаунтах сопоставляет их с userFavList и сохраняет выбранный аккаунт в mShowsA как JSON.
plg-gh-ytkachov-dune-hd-watch-sync.c015 · forum · Solo 8K, Pro 8K Plus, android-dune-fw; прошивка 250815_1012_r22 · Между плеерами переносимы только записи с uid, начинающимся на smb://; online_movies: (онлайн-сервисы) и storage_name: (локальный USB) синхронизировать нельзя. ↩
plg-gh-ytkachov-dune-hd-watch-sync.c067 · forum · Solo 8K, Pro 8K Plus, android-dune-fw; прошивка 250815_1012_r22 · На реальных данных 35% самых новых записей (116 из 330) — сеансы короче двух минут; наивное «побеждает наибольший start» откатило бы 15 файлов с «просмотрено ≥90%» на «только начато», 6 из них — из-за синхронизации между плеерами; защита от отката ловит 14 из 15. ↩
plg-gh-ytkachov-dune-hd-watch-sync.c040 · code · unknown; прошивка — · dunesync.history.merge оставляет только записи с uid, начинающимся на smb://, группирует их по uid и выбирает по одной записи pick_winner; возвращает также список предотвращённых откатов.
plg-gh-ytkachov-dune-hd-watch-sync.c041 · code · unknown; прошивка — · dunesync считает запись «касанием» при watched<120 с и pos/len<5%; если победитель по start — касание и среди остальных есть запись с долей >5%, выбирается самая поздняя из них, иначе остаётся победитель.
plg-gh-ytkachov-dune-hd-watch-sync.c052 · code · unknown; прошивка — · network_folders разбирает config/network_folders.properties как key.field=value и возвращает словарь id → (server, directory) для записей, где есть id, server и directory.
plg-gh-ytkachov-dune-hd-watch-sync.c053 · code · unknown; прошивка — · rewrite_url переписывает только url с префиксом network_folder_id://: source id → (server, directory) → target id; возвращает None, если пары нет, и оставляет прочие схемы как есть.
plg-gh-ytkachov-dune-hd-watch-sync.c056 · code · unknown; прошивка — · _history_for добавляет к слитым записям собственные непереносимые записи плеера (USB, онлайн-сервисы) и пропускает записи, для которых не нашлось соответствующей сетевой папки (url не переписался).
plg-gh-rpervykh-dune-plugin-anidub-com.c102 · code · unknown; прошивка — · parse_season_info считает n_series по числу вхождений <option value=" в блоке и кодирует в user_data поля video_id, n_series, page_ref, video_image_url, title, genre, country, year, duration, duration_min, director, actors, description и name_original.
plg-gh-rpervykh-dune-plugin-anidub-com.c103 · code · unknown; прошивка — · parse_season скачивает страницу сезона, убирает префикс http://cdn у option value, нормализует selected option и iframe film_main в option value и режет блок по <option value=".
plg-gh-rpervykh-dune-plugin-anidub-com.c104 · code · unknown; прошивка — · parse_season для каждой option извлекает episode_ref (до кавычки) и episode_title (после «">» до «</»), помечает is_new, если episode_ref нет в cookie с именем season_ref, и кодирует episode_title, episode_ref, season_title, season_ref, ndx_series, poster_url и description.
plg-gh-rpervykh-dune-plugin-anidub-com.c105 · code · unknown; прошивка — · get_vod_info при media_url != 'dummy' берёт season_ref из user_data->season_ref или user_data->video_id, бросает Exception «No season_ref or video_id», если нет обоих, и вызывает parse_season для получения серий; для 'dummy' возвращает пустой массив.
plg-dc-dunemdb-supplier-movies-rus.c039 · code · unknown; прошивка — · В ветке со списком сезонов do_get_episodes разбирает HTML регуляркой по <a class="entity-season…href="…">, а затем на странице каждого сезона берёт эпизоды по data-episode/data-id с непустым data-id; ссылки сезонов получают префикс https://w122.zona.plus, а file_url эпизода — это data-id.
plg-dc-dunemdb-supplier-movies-rus.c040 · code · unknown; прошивка — · В ветке else if (список сезонов не найден, но найден ) do_get_episodes присваивает $seasons[$v] значение переменной $id, которая в run.php нигде не задаётся.
plg-hdtv-megaanime.c041 · code · unknown; прошивка — · Сезоны AniDUB строятся из option-значений страницы: ключ Stormo плеер или Cтарый плеер sibnet кодируется md5, а список серий возвращается по URL с &&sc=; у Shikimori плееры берутся из play.shikimori.org//video_online по ссылкам class="working".
plg-hdtv-megaanime.c042 · code · unknown; прошивка — · AniMedia.tv и Animedia.tv Tracker отдают серии JSON-плейлистом по /embeds/playlist-j.txt/ (поле file и poster), а страница фильма содержит data-entry_id и вкладки, из которых строятся URL /ajax/episodes///undefined.
plg-hdtv-megaanime.c043 · code · unknown; прошивка — · AniFilm отдаёт список торрентов в urls/torrents_list (ссылки /releases/...), AnimeVost — серии через http://play.aniland.org/?player=7, Anime-Best — через var videoList и поле link.
plg-dc-dunemdb-supplier-online-movies.c105 · code · unknown; прошивка — · AddTorrentDialog::apply_series читает info_by_name из результата detect_series, проставляет s/e найденным файлам; в обычном режиме (не switch_mode) для одиночного файла (count(series)==1, season<0, chosen_op вне play/download) сразу запускает vod_play; при chosen_op=play выполняет enter-действие torrent_files с выбранным файлом, при chosen_op=download запускает download_torrent, иначе открывает папку torrent_files с выбранным элементом. ↩
plg-dc-dunemdb-supplier-online-movies.c118 · code · unknown; прошивка — · do_play после выбора: choice_auto = resume/auto_choose/auto_start; при choice_auto и s/e >= 0 входит в сезон/эпизод; при отсутствии torrent_uid и user_choice != resume берёт recent_or_first_torrent_uid(chosen_s, chosen_e), и если uid не найден — показывает ошибку. Если disable_switch и tor найден — сначала ensure_own_torrserver (если нет torrserver_checked), затем open_torrent с chosen_file и play; иначе готовит playback и запускает vod_play всех эпизодов. Без choice_auto открывает папку seasons/torrents с выбранным элементом.
plg-dc-dunemdb-supplier-online-movies.c102 · code · unknown; прошивка — · Playback::get_vod_stream_url не отдаёт URL сразу, а бросает DuneException с действием choose_playback_stream и playback_url; choose_playback_stream при отсутствии server_checked сначала вызывает ensure_own_torrserver.
plg-hdtv-smart-vod.c332 · code · unknown; прошивка — · parse_video_page Filmix_API запрашивает HOST_API_URL . "/post/?" и разбирает JSON; при пустом player_links->playlist перебирает player_links->movie и строит series по title/translation/quality из квадратных скобок link; иначе перебирает playlist по сезонам, переводам и сериям, заменяет %s на "[]" и складывает sezon; затем Movie получает series при отсутствии sezon либо сезоны с типом folder при его наличии. ↩↩
plg-hdtv-smart-vod.c212 · code · unknown; прошивка — · При control_id=save_folder VodSeriesListScreen эталона удаляет сохранённую папку фильма, если она уже есть; иначе при заданной movie.series_list сохраняет HD::baseitem URL серий под movie_id/season_id.
plg-hdtv-smart-vod.c195 · code · unknown; прошивка — · В списке фильмов эталона для фильма, присутствующего в save_folder, сравниваются полученные parse_season_items URL с сохранёнными через HD::baseitem; если очередного URL нет в сохранённых, ставятся [NEW] и цвет 18.
plg-hdtv-smart-vod.c209 · code · unknown; прошивка — · При control_id=select и заданном selected_media_url VodSeriesListScreen эталона переключает ключ series_id в select_url и инвалидирует vod_series. ↩
plg-hdtv-altv.c018 · code · unknown; прошивка — · Для канала с protected=1 get_tv_playback_url возвращает пустую строку, если переданный protect_code не совпадает с cookie pass_sex. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c062 · code · unknown; прошивка — · Для защищённого канала get_tv_playback_url возвращает false при protect_code, не равном cookie pin (по умолчанию 0000). ↩
plg-hdtv-evolutiontv.c012 · code · unknown; прошивка — · В load_channels защищённость канала вычисляется так: если cookie gid_save равна группе канала и cookie current_pcode_save непуста, канал получает is_protected=1, иначе 0; cookie buf_time передаётся в DemoChannel как buffering_ms. ↩
plg-dc-globaltv.c108 · code · unknown; прошивка — · Защищёнными плагин считает группы с id 500 или с префиксом 500_ (помечено в коде XXX TODO); их каналы получают is_protected = 1.
plg-dc-globaltv.c109 · code · unknown; прошивка — · Без встроенного родительского контроля get_tv_playback_url для защищённого канала при неверном protect_code возвращает строку protected.
plg-dc-globaltv.c058 · code · unknown; прошивка — · Встроенный родительский контроль плагин определяет проверкой defined('PluginTvInfo::builtin_pcontrol_enabled').
plg-dc-globaltv.c110 · code · unknown; прошивка — · Пароль родительского контроля плагин читает из /config/parental_control_password.txt; при встроенном контроле передаёт его в PluginTvInfo::entered_pcode для раздела xxx.
plg-dc-globaltv.c165 · code · unknown; прошивка — · MainHelper::show_xxx_dialog_if_needed для защищённого канала: control_id xxx_18_one_dialog_shown запускает временный диалог, xxx_18_dialogs_shown ставит флаг plugin_cookies, xxx_code_dialog_shown ставит флаг, но при code_changed=false возвращает null; затем, если xxx_18_dialogs_shown не установлен, показывается диалог 18+, иначе при неустановленном xxx_code_dialog_shown и пустом /config/parental_control_password.txt — диалог установки кода; control_id восстанавливается из prev_control_id, если он непустой.
plg-hdtv-altv.c028 · code · unknown; прошивка — · Смена пароля закрытых каналов идёт через отдельный диалог: новый пароль сохраняется, только если введённый «старый» совпадает с cookie pass_sex; иначе показывается «Пароль не изменен!». ↩
plg-hdtv-evolutiontv.c011 · code · unknown; прошивка — · Родительский контроль: код хранится в cookie current_pcode_save; смена кода проходит, только если введённый текущий код совпадает с сохранённым и новый код совпадает с подтверждением. Группа gid_save сохраняется, только если current_pcode_save совпадает с введённым current_pcode (пустой сохранённый код тоже совпадает с пустым вводом). ↩
plg-dc-globaltv.c167 · code · unknown; прошивка — · Для ввода кода родительского контроля GlobalTvTvSectionListScreen вызывает ControlFactory::add_text_field с numeric=true, has_osk=false, always_active=true и params fixed_osk_id='numeric'. ↩
plg-hdtv-altsource.c055 · code · unknown; прошивка — · PIN родительского контроля хранится как md5 в plugin_cookies->parentalControl; заблокированные категории — в сериализованном lockCat по ключу lockItem (basename пути, сервер/рабочая группа/smbBrouser, папка сети или screen_id избранного/истории); разблокировка требует ввода PIN в текстовом поле hide_pin_control. ↩
plg-hdtv-moidom.c020 · code · unknown; прошивка — · Список каналов поддерживает перемещение канала вверх/вниз (API set_channels_order.php с act=up/down) и сброс порядка (act=reset, id=-1); после изменения каналы выгружаются и перезагружаются, экран обновляется через update_regular_folder. Клавиши: зелёная — назад, жёлтая — вперёд, popup-меню — добавить в избранное/сбросить порядок. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c103 · code · unknown; прошивка — · При sort_channels=1 load_channels сортирует общий список по CHANNEL_SORT_FUNC_CB; при значениях 2–4 также сортирует группы выбранным CB/BC/BA, пропуская объект с id=__favorites. ↩
plg-hdtv-altsource.c035 · code · unknown; прошивка — · Порядок элементов корня хранится в DATA под ключом n_link: «В начало списка» переносит выбранный media_url в начало, «Сбросить» очищает список. ↩
plg-dc-globaltv--list-config.c043 · code · unknown; прошивка — · sort_sections возвращает null при прежнем sections_order_by (по умолчанию size), иначе сохраняет новый порядок в cookie и без list config сразу возвращает sort_sections_apply.
plg-dc-globaltv--list-config.c044 · code · unknown; прошивка — · При сортировке разделов с list config, но без lcfg_v2, вызывается change_list_config_reset_to_default для конфига разделов с callback sort_sections_apply.
plg-dc-globaltv--list-config.c045 · code · unknown; прошивка — · При сортировке с lcfg_v2 из старого order сохраняются только fav, all и id основных разделов; результат передаётся change_list_config_replace_order с callback sort_sections_apply.
plg-dc-globaltv--list-config.c007 · code · unknown; прошивка — · change_list_config записывает order только при defined ChangeListConfigActionData::order и истинном $order; пустой массив порядка в действие не попадает.
plg-dc-globaltv--list-config.c024 · code · unknown; прошивка — · ListHelper::edit_sections_list передаёт редактору fav и все разделы как all_items и checked_ids, с группой main и, при непустом other_ids, other, options=0, текущим sel_id и callback apply_list_config.
plg-dc-globaltv--list-config.c028 · code · unknown; прошивка — · edit_cats_list передаёт EDIT_LIST_CONFIG_OPT_REMOVE_UNCHECKED только для избранного, для прочих разделов — options=0; close_item_params и sel_id передаются null.
plg-gh-mdpuma-dune-plugin-altiptv.c102 · code · unknown; прошивка — · add_category_apply добавляет имя пользовательской категории в сериализованный data_file/group_names, затем инвалидирует tv_group_list.
plg-gh-mdpuma-dune-plugin-altiptv.c101 · code · unknown; прошивка — · hide_ch_apply сохраняет скрытие канала в data_file/hide_ch по ключу <имя плейлиста>|<название канала> и инвалидирует список групп.
plg-gh-mdpuma-dune-plugin-altiptv.c100 · code · unknown; прошивка — · rename_ch_apply заменяет название канала непосредственно в M3U по паре название+URL и запрещает операцию при m3u_type=3 (HTTP-ссылка).
plg-hdtv-pirates-radio.c029 · code · unknown; прошивка — · Канал привязывается к группам по tv_channel/tv_categories/tv_category_id: id приводится к int, группа ищется в HashedArray, затем вызываются channel->add_group(group) и group->add_channel(channel). ↩
plg-hdtv-rain-tv.c014 · code · unknown; прошивка — · RainTV::get_groups возвращает одну группу с id Config::ALL_CHANNELS_GROUP, caption «Выбрать Канал» и иконкой канала с sochinskayatrk.ru. ↩
plg-dc-globaltv--gcomps-controls.c039 · code · unknown; прошивка — · GCompList хранит выбор и верхний индекс в свойствах состояния ".sel"/".top"; get_sel_state клонирует базовый объект и заменяет эти два свойства.
plg-dc-globaltv--gcomps-controls.c040 · code · unknown; прошивка — · GCompList::get_panel_def создаёт элементы с индексами от top до top+min(num_items-top,preload_size), не включая верхнюю границу, и помещает их в panel с id списка.
plg-dc-globaltv--gcomps-controls.c042 · code · unknown; прошивка — · GCompList::add_insert_actions добавляет дочерний компонент через ChangeGCompDef::children_merge_mode=true и children_insert_after_id, равный id элемента с индексом ndx-1.
plg-dc-globaltv--gcomps-controls.c043 · code · unknown; прошивка — · При перестройке диапазона GCompList::handle_op записывает ChangeGCompDef::remove для старого элемента как результат проверки i=new_top+preload_size.
plg-dc-globaltv--gcomps-controls.c045 · code · unknown; прошивка — · GCompList::handle_op распознаёт page_up/page_down/up/down/left/right и префикс sel:; шаг page_up/page_down равен floor((page_size+1)/2), left выбирает 0, right — num_items-1.
plg-dc-globaltv--gcomps-controls.c050 · code · unknown; прошивка — · GCompList::get_text_props возвращает массив с ключами text_size и color, а не с полями GCompTtfLabelDef::font_size и GCompTtfLabelDef::text_color.
plg-dc-widget-ext.c030 · code · unknown; прошивка — · Список установленных плагинов читается из /tmp/run/installed_plugins.xml: берётся каждого дочернего элемента корня
plg-dc-widget-ext.c027 · code · unknown; прошивка — · На экране plugins_screen клавиши GUI_EVENT_KEY_D_BLUE и GUI_EVENT_KEY_ENTER привязаны к одному действию ignore_unignore_plugin
plg-dc-widget-ext.c028 · code · unknown; прошивка — · После переключения плагин перерисовывает список действием PLUGIN_UPDATE_FOLDER_ACTION_ID с range, need_refresh и sel_ndx
plg-dc-widget-ext.c113 · code · unknown; прошивка — · Список игнорируемых плагинов хранится в настройке ignoredPlugins строкой через запятую; экран настроек показывает их количество, а экран plugins_screen для выбранного элемента по ENTER или синей кнопке убирает имя из списка при state = 'ignored' и добавляет иначе, затем перерисовывает список.
plg-gh-sndpl-apple-trailers-dune-plugin.c024 · code · unknown; прошивка — · BaseMenu::CompareCaption сравнивает caption без учёта регистра через strtolower: при равенстве возвращает 0, иначе +1 или -1. ↩
plg-dc-torrent-center.c136 · code · unknown; прошивка — · Обработчик whats_new получает http://dune-club.info/plugins/update//info.txt и выводит очищенный strip_tags текст. ↩
plg-hdtv-folder-cache-vod.c091 · code · unknown; прошивка — · info_release скачивает http://dune-club.info/plugins/update/YouTubeMult/info.txt и показывает его через ControlFactory::add_multiline_label с 15 строками. ↩
plg-hdtv-remtor.c099 · code · unknown; прошивка — · Экран tr_log читает update_info.xml каталога установки, берёт последние 16 версий через array_slice(xpath('//version'), -16) и строит меню версий и языков.
plg-hdtv-remtor.c100 · code · unknown; прошивка — · Для выбранной версии tr_log берёт changelog с языком интерфейса, при отсутствии — english, затем russian; отображает его в виде Movie с левой кнопкой версии и правой кнопкой языка.
plg-hdtv-plugtv.c026 · code · unknown; прошивка — · HD::ver читает dune_plugin.xml из DuneSystem::$properties['install_dir_path'], и если file_get_contents вернул null, пишет в лог и возвращает 'n/a'; иначе разбирает документ через HD::parse_xml_document и возвращает version, а при ошибке разбора бросает исключение.
plg-hdtv-plugtv.c035 · code · unknown; прошивка — · Диалог «Информация о плагине» берёт версию через HD::ver(), показывает строку «Это первая версия плагина» и автора «Nuhim (http://forum.hdtv.ru).».
plg-hdtv-plugtv.c038 · code · unknown; прошивка — · Диалог «Полезно знать» листает подсказки стрелками влево/вправо и рисует иконки навигации из DuneSystem::$properties['install_dir_path']/icons; текст переносится вызовом HD::mb_str2arr($label2, 42).
plg-hdtv-plugtv.c060 · code · unknown; прошивка — · HD::mb_str2arr($str) принимает один аргумент и переносит строку по 65 символов, поэтому переданный в tv_channel_list_screen второй аргумент 42 игнорируется.
plg-gh-mdpuma-dune-plugin-altiptv.c097 · code · unknown; прошивка — · Настройка dload_help при наличии /D запускает фоновый wget help_altIPTV.pdf с логом /tmp/run/altwget.log. ↩
plg-hdtv-youtube.c087 · code · unknown; прошивка — · VodTop500Screen YouTube (ID vod_top500) вопреки имени не строит «топ-500»: при action=videoTips он разбирает endscreen и ссылки в описании видео (Youtube::getYtInfArr) — goo.gl через get_headers Location, list=, user/, /c/, /channel/ и 11-символьные id — в пункты плейлистов, каналов и видео. ↩
plg-gh-aspel-twitch-dune-plugin.c027 · code · unknown; прошивка — · В той же ветке streams: плагин берёт DuneSystem::$properties['install_dir_path'] в поле install_dir и запускает shell_exec($install_dir . "/bin/irc.sh start " . $stream_name).
plg-gh-aspel-twitch-dune-plugin.c036 · code · unknown; прошивка — · Если control_id == 'chat' (отдельный if после блока apply/btnSave), handle_user_input читает /tmp/tw_irc.log, добавляет многострочную метку на 15 строк и возвращает show_dialog с заголовком "#", close_by_return=true, шириной 1500, стилем DIALOG_FRAME_STYLE_GLASS, действием GUI_EVENT_TIMER → close_dialog_and_run(chat) и таймером 2000 мс.
plg-gh-aspel-twitch-dune-plugin.c037 · code · unknown; прошивка — · Если control_id == 'stop_irc' (отдельный if после ветки chat), handle_user_input выполняет shell_exec($install_dir . "/bin/irc.sh stop") и не возвращает действие.
plg-gh-aspel-twitch-dune-plugin.c048 · code · unknown; прошивка — · bin/irc.sh в цикле while read -r name value разбирает /config/twitch_tv_plugin_cookies.properties: если name == 'username', кладёт value в SHIC_NICK; elif name == 'auth_token' — в SHIC_PASS с префиксом "oauth:"; затем завершается с кодом 1, если SHIC_NICK пуст или SHIC_PASS не задан; пустой auth_token даёт непустой SHIC_PASS="oauth:" и проверку проходит.
plg-gh-aspel-twitch-dune-plugin.c049 · code · unknown; прошивка — · bin/irc.sh подключается к irc.twitch.tv:6667 через /dev/tcp, отправляет PASS с oauth-токеном, NICK и USER с ником, затем JOIN #<канал> (канал берётся из $2).
plg-gh-aspel-twitch-dune-plugin.c050 · code · unknown; прошивка — · bin/irc.sh хранит лог чата в /tmp/tw_irc.log: перед записью обрезает файл до последних 7 строк через tail -n 7, затем дописывает новую строку; на PING отвечает PONG, на PRIVMSG пишет "", прочие строки — в формате " >< ".
plg-gh-aspel-twitch-dune-plugin.c051 · code · unknown; прошивка — · bin/irc.sh поддерживает команды start, stop, restart и status; pid хранится в /tmp/twitch_irc.pid; start и restart сначала вызывают StopDaemon, затем StartDaemon; StartDaemon при наличии pid-файла не запускает второй демон, stop убивает процесс по pid и удаляет файл.
plg-ds-dune-hd-tv.c030 · code · unknown; прошивка — · После регистрации устройства плагин активирует промокоды: NEWUSER30D (platform_kind не android) или NEWUSER90D (android) и дополнительно NU30M. ↩
doc-sdk-plugins--operations.c115 · doc · any-documented; прошивка — · Примеры VOD stream URL: MP4 по HTTP — http://mp4://host[:port][/path] (самый рекомендуемый); TS по HTTP — http://ts://…; иной контейнер по HTTP — http://host… (поддержка и производительность ограничены); MMS — mms://host[/path] (поддержка ограничена)
fw-tv188b-261021-0117-r25--builtin-plugins-misc.c010 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · UrlUtils::append_dune_param добавляет параметр к URL как «|||dune_params|||» + параметр, а если магия в URL уже есть — через запятую без повторной магии. ↩
plg-dc-dunemdb-supplier-movies-rus.c051 · code · unknown; прошивка — · При наличии в ответе lqUrl или url ветка playbackUrl возвращает его с заменой http(s):// на http(s)://mp4://, а если id пуст или в ответе нет ни lqUrl, ни url — заглушку http://mp4://dune-club.info/plugins/update/1.mp4. ↩
plg-gh-kocourkuba-proiptv.c043 · code · unknown; прошивка — · make_ts() переписывает http(s)://… в http(s)://mp4://… для URL на .mp4 и в http(s)://ts://… для .ts/.mpeg/mpegts или при принудительном режиме (настройка PARAM_DUNE_FORCE_TS или поток MPEG-TS у провайдера); уже обёрнутые URL не трогает. ↩↩
plg-hdtv-youtube.c054 · code · unknown; прошивка — · get_vod_stream_url YouTube заменяет http:// на http://mp4://, если URL содержит .mp4, не содержит .m3u8 и ещё не начинается с http://mp4://. ↩
plg-hdtv-megatorrents.c107 · code · unknown; прошивка — · get_vod_stream_url добавляет префикс http://mp4:// к URL с .mp4 (кроме .m3u8 и уже префиксованных), а URL с .flv (без flv.sh) заворачивает в http://ts://127.0.0.1:81/cgi-bin/flv.sh?. ↩↩
plg-hdtv-smart-vod.c174 · code · unknown; прошивка — · get_vod_stream_url Zona.mobi после разрешения URL, не начинающегося с http://, заменяет http:// на http://mp4://, если результат оканчивается на mp4 и ещё не начинается с http://mp4://.
plg-hdtv-smart-vod.c323 · code · unknown; прошивка — · get_vod_stream_url MoviesTape не вызывает mUrl: если URL совпадает с .mp4, не совпадает с .m3u8 и не начинается с http://mp4://, он заменяет http:// на http://mp4://; если URL совпадает с .flv и не содержит flv.sh, возвращает http://ts://127.0.0.1:81/cgi-bin/flv.sh?; иначе возвращает URL без изменений.
plg-hdtv-smart-vod.c334 · code · unknown; прошивка — · get_vod_stream_url Filmix_API берёт video_quality из plugin_cookies (по умолчанию 3), в parseQltyArr извлекает список качеств из квадратных скобок playback_url, перебирает соответствие 6→2160, 5→1440, 4→1080, 3→720, 2→480, 1→360, 0→240, понижая индекс до первого заданного качества, и возвращает поток с этим качеством, иначе после ksort — первый элемент; затем заменяет http:// и https:// на http://mp4://.
plg-hdtv-smart-vod.c345 · code · unknown; прошивка — · get_vod_stream_url Vimeo при playback_url без http добавляет префикс https://vimeo.com, затем вызывает mUrl::get_link(playback_url, video_quality), где video_quality — HD::get_item('video_quality') или 1; после этого .mp4 без .m3u8 и без префикса http://mp4:// переводится в http://mp4://, а .flv без flv.sh — в http://ts://127.0.0.1:81/cgi-bin/flv.sh?.
plg-hdtv-smart-vod--link-api.c033 · code · unknown; прошивка — · Seasonvar::getSeasonvarIframe получает secureMark и time со страницы, POST-ит player.php с id/serial/type=html5/secure/time, собирает плейлисты /playls2/.../plist.txt, а playbackUrl возвращает с http://mp4://. ↩
plg-hdtv-folder-cache-vod.c049 · code · unknown; прошивка — · Прямые mp4-URL плагины отдают с префиксом http://mp4://, flv — через локальный CGI http://ts://127.0.0.1:81/cgi-bin/flv.sh?, mail.ru — через mail_ru.sh; kinostok при строке с « or » случайно выбирает один из двух URL. ↩↩
plg-hdtv-smart-apps.c106 · code · unknown; прошивка — · get_vod_stream_url Wallpaper для mp4 (не m3u8 и не уже mp4://) добавляет схему http://mp4://, для flv (не flv.sh) подставляет http://ts://127.0.0.1:81/cgi-bin/flv.sh, а при mUrl::get_versions()==false и player.tree.tv в playback_url направляет поток через plugin_cgi_url do3. ↩↩↩
plg-gh-mdpuma-dune-plugin-altiptv.c055 · code · unknown; прошивка — · get_tv_stream_url оборачивает обычный http:// в http://ts:// после веток для специальных протоколов. ↩
plg-hdtv-liteiptv.c045 · code · unknown; прошивка — · get_tv_stream_url для udp:// с цифрой заменяет префикс на udp://@, оставляет m3u8, http://ts://, http://audio_stream:// и http://mp4:// как есть, а rtmp/rtsp/flv направляет через локальный http://ts://127.0.0.1:81/cgi-bin/<протокол>.sh; обычные http:// переписываются в http://ts://. ↩
plg-hdtv-kaban.c018 · code · unknown; прошивка — · get_tv_stream_url отбрасывает первые 31 символ playback_uid, берёт URL выбранного источника; при use_proxy=yes заменяет udp://@ на http://ts://:/udp/, затем оборачивает http:// в http://ts://, оставляет http://ts://, http://ts//, http://mp4://, http://mp4//, а rtmp/rtmpt/rtmpe/rtmpte направляет через http://ts://127.0.0.1/cgi-bin/plugins/Kaban_TV/rtmp с суффиксом live=1. ↩↩
plg-hdtv-plugtv.c028 · code · unknown; прошивка — · get_tv_playback_url берёт streaming_url канала, заменяет в нём http:// на http://ts:// и при buf_time>0 дописывает суффикс |||dune_params|||buffering_ms:<значение>; archive_ts и protect_code не используются. ↩↩
plg-hdtv-zlostnyi-iptv.c047 · code · unknown; прошивка — · get_tv_playback_url bcu берёт из cookies format (по умолчанию 'hls') и buffering_time (по умолчанию '500'); при format 'hls' URL канала не меняется, при 'mpeg' — http:// заменяется на http://ts:// и дописывается «|||dune_params|||buffering_ms:».
plg-gh-valerievitch-dune-plugin-acestreamsearch.c084 · code · unknown; прошивка — · AceSearchTv::get_tv_stream_url сохраняет playback_url из ответа Ace API, заменив '://' на '://ts://'. ↩
plg-hdtv-folder-cache-vod.c153 · code · unknown; прошивка — · Для sat-elit parse_season() берёт из страницы playlist: '…', добавляет префикс http://iptv.sat-elit.net, скачивает плейлист с cookie playlist.txt, разбирает , в file="…" заменяет http:// на http://ts:// и берёт title. ↩
plg-dc-globaltv.c078 · code · unknown; прошивка — · В URL воспроизведения плагин заменяет //127.0.0.1:/ на //localhost:/ и префикс http://localhost: на http://ts://localhost:. ↩
plg-hdtv-pirates-radio.c024 · code · unknown; прошивка — · В myradio 122 из 600 потоков записаны как http://audio_stream://, остальные 478 — обычные http:// (например, Radio Record http://air.radiorecord.ru:8102/teo_128). ↩
plg-hdtv-smart-vod.c294 · code · unknown; прошивка — · SmartVod::get_vod_stream_url knigavuhe при непустом dload_dir_path сначала проверяет наличие скачанного файла dload_dir_path/<очищенное имя книги>/ и возвращает file://; иначе на Android заменяет http:// или https:// на https://audio_stream://, а на остальных платформах отдаёт CGI-адрес proxy.sh?. ↩↩
plg-gh-kocourkuba-proiptv.c041 · code · unknown; прошивка — · Параметры плееру плагин дописывает к URL через разделитель DUNE_PARAMS_MAGIC = "|||dune_params|||" в виде key:value через запятую (http_build_query с заменой '=' на ':'); источники — настройка плейлиста dune_params, конфиг провайдера, #EXTVLCOPT dune-params=…, зум канала. ↩
plg-hdtv-zlostnyi-iptv.c047 · code · unknown; прошивка — · get_tv_playback_url bcu берёт из cookies format (по умолчанию 'hls') и buffering_time (по умолчанию '500'); при format 'hls' URL канала не меняется, при 'mpeg' — http:// заменяется на http://ts:// и дописывается «|||dune_params|||buffering_ms:». ↩
plg-dc-globaltv.c079 · code · unknown; прошивка — · К URL воспроизведения плагин добавляет суффикс |||dune_params|||: bufind_mode:1 всегда; на Android ещё engine:1 (и для live, и для архива); для архива ещё mediainfo:0. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c061 · code · unknown; прошивка — · get_tv_playback_url дописывает |||dune_params|||zoom: из сохранённой настройки канала, иначе из dune_zoom записи плейлиста. ↩
plg-hdtv-liteiptv.c044 · code · unknown; прошивка — · При воспроизведении без архива перед выдачей URL плагин распознаёт stream?cid= (Noxbit), acestream:// или /ace/getstream?id= (AceStream) и youtube (mUrl::get_link), а запись zoom канала добавляет к URL параметр dune_params zoom. ↩↩
plg-gh-kocourkuba-proiptv.c042 · code · unknown; прошивка — · User-Agent потока плагин передаёт в dune_params ключом http_headers ("User-Agent: …"): нестандартный UA плагина добавляется, если заголовка ещё нет; #EXTVLCOPT http-user-agent перезаписывает http_headers («highest priority»); user-agent из #EXTHTTP дописывается с экранированием запятых как ',,'. ↩
plg-hdtv-liteiptv.c042 · code · unknown; прошивка — · Для архива при верном PIN (или незащищённом канале) get_tv_playback_url подставляет в шаблон arc_channels[id]['url'] переменные $start, $stop, $offset и $time через eval; $stop ограничен началом плюс 4 часа, а непустой ua добавляется параметром dune_params http_headers. ↩↩
plg-gh-mdpuma-dune-plugin-altiptv.c060 · code · unknown; прошивка — · Для live (archive_ts=-1) get_tv_playback_url выбирает User-Agent канала, затем плейлиста, затем записи канала и направляет URL в hls.sh с user_agent. ↩
plg-hdtv-youtube.c055 · code · unknown; прошивка — · get_vod_stream_url YouTube для URL с .m3u8 без 127.0.0.1 при HD::get_versions() === true и hls_seek_live == 1 возвращает URL с суффиксом |||dune_params|||protocol:hls,hls_seek_live:1.
plg-hdtv-youtube.c056 · code · unknown; прошивка — · get_vod_stream_url YouTube для URL с .m3u8 без 127.0.0.1, если не сработала ветка dune_params (get_versions не true или hls_seek_live != 1), при hls_seek_live == 2 возвращает http://ts://127.0.0.1:81/cgi-bin/hls.sh?.
plg-hdtv-zlostnyi-iptv.c104 · code · unknown; прошивка — · Архив edem: при $archive_ts > 0 к URL дописывается «?utc=&lutc=|||dune_params|||hls_forced_type:event». ↩
plg-hdtv-freetv.c070 · code · unknown; прошивка — · В dune_params плагин передаёт разные наборы: для MPD Забавы при наличии cenc и DUNE_FIRMWARE_BN >= 21 — decryption_key, для HLS-варианта Забавы (hls/CH_) — vmx_drm:1, для отдельных HLS-веток (например, vod.mors.by) — hls_forced_type:event, для отдельных прокси — buffering_ms:60 вместе с hls_forced_type:event. ↩↩
plg-hdtv-freetv.c056 · code · unknown; прошивка — · В архивной ветке (archive_ts > 0) для TS-сервисов плагин заменяет имя HLS-плейлиста на timeshift_abs-<archive_ts>.ts или timeshift_rel-<смещение>.ts, меняет схему http:// на http://ts:// (локальный TS-прокси) и добавляет |||dune_params||| с psi_opt:2,ss_for_http_ts:1,keep_pic:0; варианты dune_params для DRM и HLS — в c070. ↩
plg-ds-dune-hd-tv.c034 · code · unknown; прошивка — · Конструктор I24hTv читает /tmp/sysinfo.txt: если там нет solo4k и нет _r11, к dune_params добавляется lower_cpu_load:1.
plg-ds-dune-hd-tv.c035 · code · unknown; прошивка — · Android плагин определяет по наличию /system/dunehd/init или HD_APK=1; при Android Amlogic определяется по префиксу s905 в /firmware/config/android_platform.txt. Вне Android и на Amlogic добавляется buffering_ms:300, на Amlogic ещё frame_rate:25000; на s905l2 к HLS-URL добавляется engine:1.
plg-ds-dune-hd-tv.c037 · code · unknown; прошивка — · В get_tv_playback_url в ветке $restrict_ch для не-passive канала после ответа API с полем hls, local или local_low к URL дописывается |||dune_params||| с ll_prebuf_for_http_ts:1, (lower_cpu_load:1,) psi_opt:2, опциями платформы, ss_for_http_ts:1 и keep_pic:0, а http://localhost: заменяет на http://ts://localhost:.
plg-hdtv-jurt.c027 · code · unknown; прошивка — · BtvVod::get_buffering_ms читает PluginOutputData::plugin_cookies->http_caching (по умолчанию 3000), а ТВ берёт буферизацию из статического BTV::$buffering_time, который выставляется только настройкой. ↩
plg-hdtv-kohana-channel.c037 · code · unknown; прошивка — · В plg-hdtv-firstmuzru и plg-hdtv-pik-tv streams.stream начинается с «http://ts://» — двух схем в одном URL; значение приведено как есть. ↩
plg-hdtv-zlostnyi-iptv.c159 · code · unknown; прошивка — · tvteam при format = 'hls' переводит URL на «http://ts://», при format = 'mpeg' заменяет «mono.m3u8» на «mpegts»; при archive_ts > 0 и format = 'hls' подставляет «index--7200.m3u8», при archive_ts > 0 и format = 'mpeg' — «archive--7200.ts»; группа канала берётся из второй строки EXTINF вида «N. <группа>», а пункт MPEG-TS в настройках помечен «не работает». ↩
plg-gh-rpervykh-dune-plugin-anidub-com.c117 · code · unknown; прошивка — · Ветка UNKNOWN в get_vod_stream_url скачивает URL и берёт download_url; ветка по умолчанию подставляет http://igores.ru/playlist/images/net1.jpg, а URL с flv оборачивает в http://ts://127.0.0.1:81/cgi-bin/flv.sh?. ↩
plg-hdtv-smart-vod.c323 · code · unknown; прошивка — · get_vod_stream_url MoviesTape не вызывает mUrl: если URL совпадает с .mp4, не совпадает с .m3u8 и не начинается с http://mp4://, он заменяет http:// на http://mp4://; если URL совпадает с .flv и не содержит flv.sh, возвращает http://ts://127.0.0.1:81/cgi-bin/flv.sh?; иначе возвращает URL без изменений.
plg-hdtv-smart-vod.c325 · code · unknown; прошивка — · В tree.tsv MoviesTape нет ни одного пути www/…, в том числе нет www/cgi-bin/flv.sh; get_vod_stream_url для .flv формирует URL http://ts://127.0.0.1:81/cgi-bin/flv.sh?.
plg-hdtv-smart-vod.c345 · code · unknown; прошивка — · get_vod_stream_url Vimeo при playback_url без http добавляет префикс https://vimeo.com, затем вызывает mUrl::get_link(playback_url, video_quality), где video_quality — HD::get_item('video_quality') или 1; после этого .mp4 без .m3u8 и без префикса http://mp4:// переводится в http://mp4://, а .flv без flv.sh — в http://ts://127.0.0.1:81/cgi-bin/flv.sh?.
plg-hdtv-liteiptv.c045 · code · unknown; прошивка — · get_tv_stream_url для udp:// с цифрой заменяет префикс на udp://@, оставляет m3u8, http://ts://, http://audio_stream:// и http://mp4:// как есть, а rtmp/rtsp/flv направляет через локальный http://ts://127.0.0.1:81/cgi-bin/<протокол>.sh; обычные http:// переписываются в http://ts://.
plg-hdtv-liteiptv.c051 · code · unknown; прошивка — · При входе (entry_enter/entry_play) плагин проверяет наличие /codecpack или DATA/codec_install: при отсутствии на не-Android предлагает установить Codec_install через plugin_installer://…Codec_install_v5.0.0.tar.gz, на Android сразу выполняет run; если /codecpack нет, но установлена папка Codec_install, предлагает запустить её через plugin_launcher://Codec_install.
plg-hdtv-kaban.c018 · code · unknown; прошивка — · get_tv_stream_url отбрасывает первые 31 символ playback_uid, берёт URL выбранного источника; при use_proxy=yes заменяет udp://@ на http://ts://:/udp/, затем оборачивает http:// в http://ts://, оставляет http://ts://, http://ts//, http://mp4://, http://mp4//, а rtmp/rtmpt/rtmpe/rtmpte направляет через http://ts://127.0.0.1/cgi-bin/plugins/Kaban_TV/rtmp с суффиксом live=1.
plg-hdtv-kaban.c019 · code · unknown; прошивка — · CGI www/cgi-bin/rtmp — shell-скрипт: убивает ffmpeg, если /var/run/librtmp.so.0 или /var/run/ffmpeg не исполняемый, распаковывает соответствующий zcat-ом из ../../../Kaban_TV/data/08 или data/09, отдаёт Content-type video/H264 и запускает ffmpeg с -re -i URL -vcodec copy -acodec copy -f mpegts.
plg-hdtv-youtube.c056 · code · unknown; прошивка — · get_vod_stream_url YouTube для URL с .m3u8 без 127.0.0.1, если не сработала ветка dune_params (get_versions не true или hls_seek_live != 1), при hls_seek_live == 2 возвращает http://ts://127.0.0.1:81/cgi-bin/hls.sh?. ↩
plg-hdtv-folder-cache-vod.c071 · code · unknown; прошивка — · kinokrit и kinolist для moonwalk.cc запускают внешний скрипт /persistfs/codecpack/WWW/cgi-bin/hls_moonwalk.sh с m3u8-манифестом и качеством, с фолбэком на /D/codecpack/WWW/cgi-bin/hls_moonwalk.sh; kinokrit — только если не удалось разобрать ↩
plg-hdtv-megaanime.c066 · code · unknown; прошивка — · CGI do3 принимает ?path=, скачивает URL через curl и отдаёт его с Content-Type application/vnd.apple.mpegurl; прокси применяется только для URL с vkuservideo.net. Он используется в get_vod_stream_url для player.tree.tv при mUrl::get_versions() == false. ↩
plg-hdtv-smart-vod.c298 · code · unknown; прошивка — · www/cgi-bin/proxy.sh выбирает curl тем же способом по platform_kind, читает последнюю позицию перемотки из /tmp/run/shell.log по строке «SAES: successful seek to», очищает её от точек и передаёт как заголовок Range: bytes=<позиция>- вместе с --include. ↩
plg-hdtv-smart-vod.c299 · code · unknown; прошивка — · www/cgi-bin/proxy2.sh отдаёт Content-type audio/mpeg, останавливает прежний ffmpeg через killall -e ffmpeg и транскодирует URL из QUERY_STRING в mp3 через /codecpack/bin/ffmpeg -f mp3 pipe:1. ↩
plg-hdtv-utility-family.c087 · code · unknown; прошивка — · yt.sh с LINE=<смещение> убивает все процессы ffmpeg (kill -9), берёт URL видео и аудио из /tmp/plugins/yt_Dash_video и /tmp/plugins/yt_Dash_audio и, если смещение отличается от предыдущего в /tmp/plugins/meter.txt не на 5 (то есть это перемотка или старт), отдаёт video/mpegts от ffmpeg -ss <смещение> … -c copy -vbsf h264_mp4toannexb -f mpegts pipe:1; при шаге ровно 5 отдаёт файл empty.
plg-hdtv-utility-family.c088 · code · android; прошивка — · yt.sh добавляет в PATH жёстко заданный /flashdata/plugins/ffmpeg_install/bin и различает платформу: при android_platform=rtd1295 в /tmp/run/versions.txt запускает ffmpeg без -re у второго входа, иначе с -re.
plg-hdtv-utility-family.c089 · code · android-dune-fw; прошивка 260827_0003_r24 · Потребитель yt.sh — прошивка: в tv188b r24 shell_ext/music/link_api.php dash_to_hls() возвращает http://127.0.0.1/cgi-bin/plugins/ffmpeg_install, если существует /flashdata/plugins/ffmpeg_install/www/cgi-bin/yt.sh (после проверки /codecpack/WWW/cgi-bin/yt.sh), а retrieve_playback_url пишет URL в /tmp/plugins/yt_Dash_video и yt_Dash_audio и возвращает «$dash_to_hls/yt.sh?<длительность>=.m3u8».
plg-hdtv-evolutiontv.c024 · code · unknown; прошивка — · Настройки codecpack показывают локальную версию из первого существующего /persistfs/codecpack/version.txt, /D/codecpack/version.txt или /flashdata/codecpack/version.txt и, если fopen открывает http://micha86.square7.ch/Dune/codecpack/version.txt, удалённую версию; кнопки установки/удаления запускают bin/dune_service_codecs_install.sh и bin/dune_service_codecs_uninstall.sh, только если удалённый codecpack.zip доступен через fopen.
plg-hdtv-evolutiontv.c025 · code · unknown; прошивка — · install-скрипт, если codecpack не установлен, version.txt не читается или серверная версия больше, скачивает codecpack.zip wget-ом, распаковывает unzip в /tmp, выбирает каталог установки /persistfs, иначе /flashdata по условию [[! -d /D] && [-d /flashdata]] (записано с ошибкой синтаксиса), иначе /D, перемещает codecpack в каталог, делает исполняемыми bin/, WWW/cgi-bin/ и script/, при неисполняемом /config/boot/rtmpboot.sh дописывает в него запуск httpd -h /codecpack/WWW -p 81 и запускает httpd.
plg-hdtv-evolutiontv.c026 · code · unknown; прошивка — · uninstall-скрипт выбирает /persistfs или /D по mount (если нет ни того, ни другого — выходит с кодом 1), удаляет /codecpack при его наличии, убивает httpd на порту 81 и пытается удалить /config/boot/rtmpboot.sh; проверка if [ ! -x "BOOTRTMP" ] сравнивает литерал без $, поэтому условие не зависит от /config/boot/rtmpboot.sh.
plg-ds-dune-hd-tv.c040 · code · unknown; прошивка — · get_tv_stream_url выполняет shell_exec(/bin/play.sh /bin), только если URL от api_get_stream_url начинается с '/'; get_tv_playback_url — только при $restrict_ch (канал не защищён, родительский контроль выключен или код 0000, либо protect_code верен).
plg-ds-dune-hd-tv.c041 · code · unknown; прошивка — · get_tv_stream_url: если API вернул URL, начинающийся с '/', и play.sh что-то вывел, плагин возвращает 'http://ts://localhost:8081' + URL с dune_params; при пустом выводе — error://internal_error/01.
plg-ds-dune-hd-tv.c042 · code · unknown; прошивка — · bin/play.sh запускает receive5 с ключом -h 18883, если процесс ещё не запущен; бинарник берётся из $FS_PREFIX/firmware/bin/receive5, а при его отсутствии — ./receive5 из пакета; перед этим убивает receive5, если у него больше 3 сокетов.
plg-ds-dune-hd-tv.c043 · code · android-dune-fw; прошивка 260724-0207-r24 · В прошивке APK r24 есть firmware/bin/receive5 (отображается на libxxx_receive5.so), т. е. путь, который play.sh проверяет первым, существует хотя бы в этой прошивке.
plg-ds-dune-hd-tv.c044 · code · unknown; прошивка — · bin/check_stop.sh раз в 5 с читает player_state из $FS_PREFIX/tmp/run/ext_command.state и выполняет killall receive5, когда состояние непустое и не file_playback; pid хранит в $FS_PREFIX/tmp/run/dunehdtv_check_stop.pid.
plg-hdtv-folder-cache-vod.c144 · code · unknown; прошивка — · flashx-декодер: GET, разбирает hash/op/id/fname/referer/usr_login, после sleep(10) шлёт POST; если первый шаблон smil.?file.?" не сработал, по smil|…| скачивает http://www.flashx.tv/.smil, берёт meta base и video src и собирает URL http://ts://127.0.0.1:81/cgi-bin/rtmp.sh? playpath= swfUrl=http://static.flashx.tv/player6/jwplayer.flash.swf pageUrl=.
plg-hdtv-folder-cache-vod.c149 · code · unknown; прошивка — · streams/javedecoder.php реализует распаковщик JW player: unpackjs() делит список ключей по | и для i от c-1 до 0 заменяет слово с номером i (в системе счисления a) на k[i]; decode() переводит число в строку цифрами 0-9a-zA-Z.
plg-hdtv-folder-cache-vod.c152 · code · unknown; прошивка — · Для live-stream.tv parse_season() читает страницу file_get_contents, берёт логотип, title и описание из трёх блоков «время-канал», затем из tvguide/nownext достаёт iframe, скачивает его, распаковывает eval(function(p,a,c,k,e…)) через unpackjs, из streamer и file собирает URL http://ts://127.0.0.1:81/cgi-bin/rtmp.sh? playpath= swfUrl=http://static.live-stream.tv/player/player.swf pageUrl=#tab2-tab.
plg-hdtv-peerstv.c018 · code · unknown; прошивка — · Live-воспроизведение канала обеспечивает AbstractTv::get_tv_playback_url: он загружает каналы при необходимости и возвращает streaming_url канала; archive_ts и protect_code не используются. ↩
plg-hdtv-pirates-radio.c035 · code · unknown; прошивка — · Воспроизведение идёт напрямую по streaming_url: AbstractTv::get_tv_playback_url после ensure_channels_loaded возвращает get_streaming_url() канала, а DemoTv передал в конструктор playback_url_is_stream_url = true.
plg-hdtv-pirates-radio.c036 · code · unknown; прошивка — · DemoTv не переопределяет get_tv_stream_url, поэтому вызывается унаследованный AbstractTv::get_tv_stream_url, который всегда бросает исключение "get_tv_stream_url() is not supported.".
plg-hdtv-kohana-channel.c072 · code · unknown; прошивка — · Welcome::get_tv_playback_url игнорирует channel_id, archive_ts и protect_code и каждый раз возвращает streams.stream из конфигурации. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c025 · code · unknown; прошивка — · AceSearchTv создаётся с режимом AbstractTv::MODE_CHANNELS_1_TO_N, без поддержки избранного (favorites_supported = false) и с playback_url_is_stream_url = false.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c083 · code · unknown; прошивка — · AceSearchTv::get_tv_stream_url извлекает id канала из media_url как подстроку после 'infohash=' и запрашивает media_url с добавленным '&format=json'.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c084 · code · unknown; прошивка — · AceSearchTv::get_tv_stream_url сохраняет playback_url из ответа Ace API, заменив '://' на '://ts://'.
plg-dc-globaltv.c082 · code · unknown; прошивка — · URL потока плагин получает GET-запросом cmd/get_playback_url с параметрами stream_id, region, содержимым dune_auth и, для архива, archive_ts и duration_m; ответ — JSON с полями status, url, error_code, error. ↩
plg-hdtv-moidom.c014 · code · unknown; прошивка — · get_tv_playback_url сначала загружает каналы и проверяет логин, затем вызывает API get_url.php?with_ts=1&cid=, добавляя &gmt=, если archive_ts >= 0, и &protect_code=, если protect_code задан; из ответа берётся data->url, обрезается по ' :' и заменяет 'http/' на 'http://'. ↩
plg-dc-globaltv.c077 · code · unknown; прошивка — · Комментарий автора: кэш URL воспроизведения сбрасывается после одного использования, чтобы не сохранять старые нерабочие URL. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c055 · code · unknown; прошивка — · WeburgHLSTv::get_tv_playback_url вычисляет offset = 0 при archive_ts <= 0, иначе time()-archive_ts, и возвращает http://playlist.tv.planeta.tc/playlist/hls/$channel_id-live-$offset-master.m3u8?abs&videoOnly=true&quality=max; streaming_url канала не используется.
plg-hdtv-zlostnyi-iptv.c103 · code · unknown; прошивка — · edem не подставляет ключ в адрес плейлиста: в URL канала строка «00000000000000» заменяется на cookie ott_key, а «localhost» — на junior.edmonst.net при каждом воспроизведении. ↩
plg-hdtv-plugtv.c029 · code · unknown; прошивка — · В trofey get_tv_playback_url перед заменой схемы дописывает к URL значение $plugin_cookies->params, а load_channels заполняет его вызовом HD::params().
plg-hdtv-plugtv.c030 · code · unknown; прошивка — · HD::params скачивает http://trofey.net/video/telekanal-trofey; если в ответе есть строка с <source type='video/mp4', делит её по апострофам, берёт четвёртый элемент и оставляет подстроку с первого '?' (включая его), а если строки нет, $p остаётся неопределённой (возвращается null). Полученная query-строка затем дописывается к потоку.
plg-hdtv-zlostnyi-iptv.c095 · code · unknown; прошивка — · antifriz для каналов группы «Deutschland» запоминает отдельный сервер (cookie germanServer, id в german_ids) и при воспроизведении таких каналов подставляет его вместо server. ↩
plg-hdtv-101-ru.c095 · code · unknown; прошивка — · DemoTv::get_tv_playback_url собирает http://listen.di.fm/premium_high/.pls?, где listenKey берётся из plugin_cookies (иначе пустая строка); для .pls скачивает документ, оборачивает значения TitleN в кавычки, разбирает parse_ini_string и возвращает File1. ↩
plg-gh-aspel-twitch-dune-plugin.c030 · code · unknown; прошивка — · TwitchPlugin::get_vod_info обрабатывает только media_url с префиксом stream_name: — создаёт GamePlay(substr($media_url, 12), stream_name, img, status_stream, game_name) и возвращает generatePlayInfo($q); для остальных media_url возвращает null.
plg-gh-aspel-twitch-dune-plugin.c040 · code · unknown; прошивка — · GameQuality::generate_menu для каждого элемента с непустым $matches[2][$i] строит пункт с подписью "
plg-hdtv-smart-vod.c124 · code · unknown; прошивка — · Smart_vod.php эталона вызывает link_api(), затем требует возвращённый файл, если он существует, иначе link_api.php.
plg-hdtv-smart-vod.c125 · code · unknown; прошивка — · link_api эталона вызывает fwrite для /tmp/plugins/link_api.php при $vers1==true и (($matches1[1]==true и $upd==true) либо отсутствии локального файла); $upd становится true при существующем локальном файле и $matches1[1]>$matches2[1].
plg-hdtv-smart-vod.c208 · code · unknown; прошивка — · В tree.tsv HdKinoTeatr.Com корневого link_api.php нет, хотя Smart_vod.php предусматривает require этого файла как резервный вариант.
plg-hdtv-smart-vod.c113 · code · unknown; прошивка — · get_vod_stream_url HdKinoTeatr.Com передаёт playback_url и cookie video_quality (при отсутствии — 360) в mUrl::get_link.
plg-hdtv-folder-cache-vod.c092 · code · unknown; прошивка — · get_vod_stream_url получает прямой URL через mUrl::get_link('https://www.youtube.com/watch?v=' . $media_url, $video_quality) и печатает исходный и полученный URL в echo. ↩
plg-hdtv-smart-vod.c168 · code · unknown; прошивка — · get_vod_stream_url в futbik-net при совпадении .m3u8 возвращает входной playback_url, иначе вызывает mUrl::get_link.
plg-hdtv-smart-vod.c169 · code · unknown; прошивка — · get_vod_stream_url в megamult-net при совпадении .m3u8 возвращает входной playback_url, иначе вызывает mUrl::get_link.
plg-hdtv-smart-vod.c170 · code · unknown; прошивка — · get_vod_stream_url в kinohold-com при совпадении .m3u8 возвращает входной playback_url, иначе вызывает mUrl::get_link.
plg-hdtv-smart-vod.c171 · code · unknown; прошивка — · get_vod_stream_url в bestkino при совпадении .m3u8 возвращает входной playback_url, иначе вызывает mUrl::get_link.
plg-hdtv-smart-vod.c205 · code · unknown; прошивка — · В комплектном link_api.php HDrezka mUrl::get_link после преобразования качества вызывает ::getIframe(media_url, playbackUrl, quality), если URL содержит EpisodId_, класс из префикса существует и у него есть getIframe.
plg-hdtv-smart-vod.c268 · code · unknown; прошивка — · FilmHD1080.Net выбирает обработчик iframe по доменной сигнатуре: svetacdn/videocdn/the-cinema.best/ tvmovies/?kp_id/ — videocdn, videoframe — videoframe, placehere/tobaco/delivembed/buildplayer/ synchroncode — Collaps, vid…/serial/<64 hex>/iframe и vid…/movie/<32 hex>/iframe — HDVB, hdrise/kodik — Kodik, yout/trailer-cdn — трейлер; для trailer-cdn отдельно скачивается страница и из неё берётся file:"…".
plg-hdtv-smart-vod.c285 · code · unknown; прошивка — · KinoStorm.Net разбирает iframe-плееры svetacdn/videocdn/the-cinema.best/tvmovies/?kp_id=, videoframe, Collaps, HDVB и Kodik; yohoho-поиск по kpId в этом файле не вызывается.
plg-hdtv-smart-vod.c262 · code · unknown; прошивка — · Baskino.Me в parse_video_page сначала обрабатывает iframe с voidboost (voidboost::getIframe; ответы с EpisodId_ — в series, остальные — в urls), а затем, если в документе есть ссылка /kp/, вызывает videoSearcher::yohohoVideoSearch и разбирает плееры trailer, iframe, collaps, videocdn, hdvb, kodik: videocdn, iframe и collaps кладут ответы с EpisodId_ в series, остальные — в urls; hdvb при URL с serial кладёт ответы в urls, иначе — маркер hdvbEpisodId_ в series; kodik — в urls; trailer — в series.
plg-hdtv-smart-vod.c334 · code · unknown; прошивка — · get_vod_stream_url Filmix_API берёт video_quality из plugin_cookies (по умолчанию 3), в parseQltyArr извлекает список качеств из квадратных скобок playback_url, перебирает соответствие 6→2160, 5→1440, 4→1080, 3→720, 2→480, 1→360, 0→240, понижая индекс до первого заданного качества, и возвращает поток с этим качеством, иначе после ksort — первый элемент; затем заменяет http:// и https:// на http://mp4://.
plg-hdtv-smart-vod.c173 · code · unknown; прошивка — · parse_video_stream_url Zona.mobi при непустом playback_url запрашивает ajax/video/ и выбирает lqUrl только при video_quality=1 и наличии lqUrl, иначе url.
plg-hdtv-folder-cache-vod.c050 · code · unknown; прошивка — · Youtube::retrieve_playback_url() и General_main() снимают ограничение времени через set_time_limit(0); в Youtube это подписано комментарием «no more plugin restarts». ↩
plg-hdtv-evolutiontv.c013 · code · unknown; прошивка — · get_tv_playback_url возвращает streaming_url канала, но если канал защищён и protect_code не равен cookie current_pcode_save, возвращает false. ↩
plg-hdtv-liteiptv.c041 · code · unknown; прошивка — · get_tv_playback_url для защищённого канала возвращает заглушку http://mp4://dune-club.info/plugins/update/1.mp4, если переданный protect_code не совпадает с cookie pin (по умолчанию '0000').
plg-hdtv-liteiptv.c057 · code · unknown; прошивка — · Смена PIN в настройках требует, чтобы введённый pin1 совпал с текущим cookie pin (по умолчанию 0000), и сохраняет pin2; при пустом поле или несовпадении показывает сообщение об ошибке.
plg-dc-bazinga3.c044 · code · unknown; прошивка — · SmartVod::get_vod_stream_url вызывает mUrl::get_link(playback_url, качество) только если playback_url или качество отличаются от предыдущих (статические $old_playback_url/$old_video_quality); иначе отдаёт сохранённый в статическом $stream_urls результат. Качество — filmix_quality для URL с filmix, иначе video_quality, по умолчанию 1.
plg-dc-bazinga3.c053 · code · unknown; прошивка — · AbstractVod::get_vod_info передаёт в Movie::get_vod_info буферизацию 3000 мс; Movie::get_vod_info строит series из PluginVodSeriesInfo name/playback_url/playback_url_is_stream_url и пропускает playback_url=dummy.
plg-dc-dunemdb-supplier-movies-rus.c049 · code · unknown; прошивка — · do_get_stream_url резолвит поток через zonaMobi::getZonaMobiIframe(..., 'playbackUrl', 'https://w113.zona.plus') и считает ошибкой результат, содержащий dune-club.info (то есть заглушку).
plg-dc-dunemdb-supplier-movies-rus.c050 · code · unknown; прошивка — · Ветка playbackUrl при непустом id в zonaMobi::getZonaMobiIframe шлёт HEAD-запрос на /ajax/video с зашитым Cookie ZONAMOBI=jao7v3r6fu5ap8tcchbdko5qq0, затем GET /ajax/video/?client_time=<значение из http://dune-club.info/tts> с JSON-заголовками.
plg-dc-globaltv--rows-epf.c049 · code · unknown; прошивка — · URL предпросмотра plugin_tv://globaltv/ добавляется в playback_urls только при доступном pf_playback и не adult-канале (adult либо имя с префиксом XXX); в MediaURL устанавливается preview=1.
plg-dc-globaltv--rows-epf.c050 · code · unknown; прошивка — · В get_tv_info наличие preview переключает выдачу с channels_file на встроенные groups/channels: одну all_channels_group и один выбранный канал с playback_url_is_stream_url=1.
plg-ds-dune-hd-tv.c036 · code · unknown; прошивка — · get_tv_playback_url в ветке $restrict_ch (канал не защищён, родительский контроль выключен или код 0000, либо protect_code верен) для канала с streaming_url ≠ passive запрашивает у API v2/channels//stream с ts архива (пустой или -1 — 0) и type из $this->forced_stream_type, иначе из plugin_cookies->stream_type (local, local_low или hls; иное заменяется на hls), и берёт из ответа поле hls, иначе local, иначе local_low.
plg-ds-dune-hd-tv.c065 · code · unknown; прошивка — · Экран настроек предлагает «Качество картинки» (combobox stream_type: local «Наилучшее», local_low «Хорошее», hls «Авто», по умолчанию hls) и сохраняет выбор в plugin_cookies->stream_type.
plg-ds-dune-hd-tv.c038 · code · unknown; прошивка — · При ошибке запроса потока плагин возвращает видео-заглушку: при исключении «403» — http://mp4://media.zt.platform24.tv/Dune/geo_matras.mp4, иначе .../Dune/matras.mp4; для канала со streaming_url passive — тоже matras.mp4. ↩
plg-hdtv-folder-cache-vod.c072 · code · unknown; прошивка — · veterok для veterok.tv вытаскивает прямой URL из JavaScript-строки files["N"]="…" и заменяет YouZeeK.com/?sid= и youtube-embed на youtube watch?v=. ↩
plg-hdtv-folder-cache-vod.c139 · code · unknown; прошивка — · youwatch-декодер: GET страницы, разбирает скрытые op/usr_login/id/fname/referer/hash/ imhuman, после sleep(11) шлёт POST; URL берёт из file: "…mp4" либо из блока mp4|video и собирает http://.youwatch.org://video.mp4.
plg-hdtv-folder-cache-vod.c140 · code · unknown; прошивка — · youwatch embed-декодер: GET embed-страницы и возвращает строку между file: " и следующей кавычкой.
plg-hdtv-smart-vod.c273 · code · unknown; прошивка — · Filmix получает ссылку через FilmixNext::getIframe для карточки, сезона и перевода; при наличии .m3u8 get_vod_stream_url возвращает URL без изменений, иначе вызывает mUrl::get_link с качеством из cookie. Качество 1080/1440p/2160p предлагается только при успешном входе, а 1440p/2160p — дополнительно при HD::get_dash_platform_kind.
plg-hdtv-smart-vod.c281 · code · unknown; прошивка — · Kinogo.so получает ссылки через kinoGo::getIframe по числовому id, извлечённому из /- в URL карточки; ответ с SeasonId_ становится сезоном, с EpisodId_ — серией, а если вложенная ссылка содержит тот же id, дополнительно вызывается kinoGo::getIframe(..., 'seasons'); серии сезона берутся через kinoGo::getEpisodesKinoGo.
plg-hdtv-smart-vod.c288 · code · unknown; прошивка — · KinoTochka.Club при загрузке карточки использует cookie-файл tmp_dir_path/kinotochka_cooki, а ссылки получает через kinotochka::getKinoTochkaIframe с режимами doc, seasons и episodes; постер подставляется через CGI do?img=.
plg-hdtv-smart-vod.c320 · code · unknown; прошивка — · parse_video_page MoviesTape при совпадении iframe src="http://fs…" запрашивает этот адрес; при file : '…' добавляет серию с именем caption, при pl : '…' загружает JSON и, если playlist[0]->file задан, добавляет серии по comment, иначе сохраняет playlist в urls; после блока iframe при наличии div class="f-play" и rel="…" добавляет серию caption→rel.
plg-hdtv-smart-vod.c321 · code · unknown; прошивка — · parse_other_sources MoviesTape при непустом movie->kp_id и отсутствии поля error в ответе moonwalk запрашивает http://moonwalk.cc/api/videos.json с kinopoisk_id и api_token 997e626ac4d9ce453e6c920785db8f45 и добавляет каждый iframe_url как источник с title_ru/title_en, пометкой CamRip при camrip=1, переводчиком и added_at.
plg-hdtv-smart-vod.c322 · code · unknown; прошивка — · parse_other_sources MoviesTape ищет фильм через http://test.tree.tv/api (maska=&index=1), выбирает page_id только при совпадении year, затем запрашивает http://api.tree.tv/index/getfilm с idVideo; при наличии film_window перебирает качества 1080→720→480→360 по video_quality (1 = 360) и при найденных ссылках добавляет серии other_sources, иначе возвращает false.
plg-hdtv-smart-vod.c337 · code · unknown; прошивка — · В Filmix_API есть отдельный lib/dune_stb_api.php — «Dune STB API» автора Brigadir (forum.mydune.ru) с датой 23-07-2017 и последним обновлением 25-10-2019; файл содержит обёртки FolderViewItemParams/FolderViewParams и функции get_platform_kind, get_android_platform, get_product_id, get_firmware_version, get_parsed_firmware_ver, send_ir_code, get_player_state и другие. ↩
plg-hdtv-smart-vod--link-api.c058 · code · unknown; прошивка — · Для расшифровки подписей и получения cookie код обращается к dune-club.info: /echo (YouTube signature), /tts2 (Zona RCPC) и /tts (client_time для Zona). ↩
plg-gh-mdpuma-dune-plugin-altiptv.c104 · code · unknown; прошивка — · В режиме group_tv=5 get_tv_playback_url при отсутствии закреплённого источника циклически выбирает URL из global_channels и сбрасывает индекс при смене channel_id. ↩
plg-hdtv-liteiptv.c043 · code · unknown; прошивка — · При воспроизведении без архива, если у канала несколько источников, выбор хранится в ch_select[id] и общий — в ch_select_all; после пяти переключений плагин начинает циклически перебирать остальные URL из urls. ↩
plg-hdtv-novosib-iptv.c029 · code · unknown; прошивка — · Список найденных прокси хранится в /tmp/proxy_list_novosib и в cookie proxy_list; выбор источника пишется в cookie src_ и novosib, затем запускает tv_play. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c056 · code · unknown; прошивка — · При use_proxy=yes get_tv_stream_url переписывает UDP/RTP multicast URL в http://ts://:/udp/ либо /rtp/. ↩
plg-hdtv-novosib-iptv.c027 · code · unknown; прошивка — · proxy.php — сканер прокси: перебирает адреса в диапазоне /24 (n3..end_scann) и 0..255, проверяет fsockopen с таймаутом 0.2 с, дописывает найденные адреса в файл-список через '+' и останавливает перебор примерно через 56 с.
plg-hdtv-novosib-iptv.c028 · code · unknown; прошивка — · Кнопка сканирования после подтверждения в диалоге запускает /codecpack/bin/php proxy.php в фоне для случайных /24-подсетей (или полного диапазона) только при наличии /codecpack/bin/php и если с прошлого запуска прошло больше 100 с; при отсутствии симлинка создаёт /lib/libidn.so.11 и ждёт 50 с.
plg-gh-mdpuma-dune-plugin-altiptv.c087 · code · unknown; прошивка — · do.php получает GET n1,n2,an,en,port,plf,prov, проверяет адреса диапазона fsockopen с таймаутом 0.2 с и дописывает найденные IP:port в plf.
plg-gh-mdpuma-dune-plugin-altiptv.c091 · code · unknown; прошивка — · Для поиска прокси экран каналов обращается к 1whois.ru/?url= и извлекает диапазон и провайдера из ответа.
plg-dc-dunemdb-supplier-online-movies.c067 · code · unknown; прошивка — · Настройки Config читаются из /config/omov_config.txt; autoswitch_enabled по умолчанию равен 1 при наличии файла /config/online_movies_full.flag и 0 без него, но значение из /config/omov_config.txt имеет приоритет.
plg-dc-dunemdb-supplier-online-movies.c068 · code · unknown; прошивка — · Пороги авто-переключения по умолчанию: open 10 с, start 15 с, seek 30 с, start buffering 30 с, seek buffering 40 с, buffering 10 с, частое буферизирование — 6 раз за 60 с.
plg-dc-dunemdb-supplier-online-movies.c100 · code · unknown; прошивка — · Playback при state=buffering выбирает лимит: первый буферинг после старта — switch_long_start_buffering; буферинг в пределах 10 с после initializing — тот же лимит; в пределах 10 с после seeking — switch_long_seek_buffering; в пределах 10 с после SwitchAudioTrack — тот же; быстро повторный буферинг склеивается с предыдущим; иначе — switch_long_buffering с проверкой частоты.
plg-dc-dunemdb-supplier-online-movies.c101 · code · unknown; прошивка — · Playback::perform_work открывает SwitchDialog при истечении state_limit_tm или debug_forced_switch_delay, только если switch_enabled и osd_active; при уже открытом диалоге действие не повторяется.
plg-dc-dunemdb-supplier-online-movies.c103 · code · unknown; прошивка — · SwitchDialog при playback_stop без opened/confirmed просто закрывается; иначе берёт позицию из plugin_vod_stop_position либо последнюю известную и запускает switch_torrent, который перебирает следующие торренты через get_next_torrent и open_torrent с позицией.
plg-dc-bazinga3.c045 · code · unknown; прошивка — · При повторном запросе того же playback_url с тем же качеством get_vod_stream_url инкрементирует $counter: если предыдущий ответ — массив, берёт $stream_urls[$counter], иначе отдаёт тот же $stream_urls; при отсутствии элемента в массиве или $counter > 4 возвращает заглушку http://mp4://dune-club.info/plugins/update/1.mp4. ↩
plg-gh-kocourkuba-proiptv.c040 · code · unknown; прошивка — · Для архива generate_stream_url выбирает тип catchup (канал > пользовательская настройка > M3U/конфиг провайдера; для URL с mpegts — flussonic; по умолчанию shift) и строит шаблон: shift — utc=${start}&lutc=${timestamp}, timeshift — timeshift=${start}&timenow=${timestamp}, archive — archive=${start}&archive_end=${end}, flussonic — …/archive-${start}-14400.ts или <имя>-${start}-14400, xtream codes — /timeshift///240/{Y}-{m}-{d}:{H}-{M}/.. ↩
plg-hdtv-zlostnyi-iptv.c049 · code · unknown; прошивка — · Архив bcu при $archive_ts > 0 и format 'mpeg' (ветка else if после hls-ветки): в URL «mpegts» заменяется на «archive--7200.ts».
plg-hdtv-zlostnyi-iptv.c085 · code · unknown; прошивка — · great строит архив HLS заменой video.m3u8 на video--10800.m3u8, MPEG-TS — archive--7200.ts; VOD-константы указывают на online.dune-hd.com/demo2.
plg-hdtv-zlostnyi-iptv.c158 · code · unknown; прошивка — · sharavoz подставляет token вместо «flussonic_token»; при format = 'hls' заменяет «mpegts» на «index.m3u8», при archive_ts > 0 и format = 'hls' — «index.m3u8» на «archive--10800.m3u8», а при archive_ts > 0 и format = 'mpeg' — «mpegts» на «archive--10800.ts»; дни архива — из catchup-days, для не-VIP добавляется канал Info с роликом vip_3.mp4.
plg-hdtv-zlostnyi-iptv.c048 · code · unknown; прошивка — · Архив bcu при $archive_ts > 0 и format 'hls': плагин заново читает /tmp/playlist.m3u, находит строку канала по id (base64(название)&&tvg-id), берёт её catchup-source (без «$») и заменяет «video-{start}-{duration}» на «video--7200»; если catchup-source нет — URL не меняется.
plg-hdtv-zlostnyi-iptv.c086 · code · unknown; прошивка — · lightiptv строит архив как bcu: catchup-source канала из /tmp/playlist.m3u с заменой video-{start}-{duration} на video--7200.
plg-hdtv-zlostnyi-iptv.c084 · code · unknown; прошивка — · fox строит архив HLS через параметры ?utc=&lutc=, а MPEG-TS — заменой mpegts на archive--7200.ts.
plg-hdtv-zlostnyi-iptv.c104 · code · unknown; прошивка — · Архив edem: при $archive_ts > 0 к URL дописывается «?utc=&lutc=|||dune_params|||hls_forced_type:event».
plg-hdtv-zlostnyi-iptv.c155 · code · unknown; прошивка — · shura при archive_ts > 0 добавляет к URL «?archive=&lutc=» (не utc); дни архива считает из атрибута catchup-time как часы/24; id канала извлекает regex '/.+\/(.*)\/hls/' из URL, а если совпадения нет — берёт номер строки $i; логотип берёт с http://list.iptv-ott.ru/img/channel_icons/.png.
plg-dc-globaltv.c080 · code · unknown; прошивка — · Для архива плагин передаёт серверу длительность duration_m — до конца передачи по EPG, но не меньше 3600 с. ↩
doc-sdk-plugins--controls-playback.c047 · doc · any-documented; прошивка — · Подход D в SDK предлагает запоминать позицию по GUI_EVENT_TIMER, сохранять последнюю такую позицию постоянно по GUI_EVENT_PLAYBACK_STOP и использовать её при следующем старте через initial_position_ms. ↩
doc-sdk-plugins--controls-playback.c043 · doc · any-documented; прошивка — · Для чтения текущей позиции SDK предлагает поле playback_position файла /tmp/run/ext_command.state как временное решение вне официального PHP API. ↩
doc-sdk-plugins--gui-actions.c134 · doc · any-documented; прошивка — · Данные PluginUpdateOsdAction — класс PluginUpdateOsdActionData: components (тип записан как PluginOsdComponenetList) и необязательный post_action; действие доступно с прошивки 150528_r10
doc-sdk-plugins--gui-actions.c125 · doc · any-documented; прошивка — · Данные PluginUpdateInfoBlockAction — класс PluginUpdateInfoBlockActionData: text_above и необязательные text_color (по умолчанию 15), text_halo (false), text_y_offset (0), post_action; действие доступно с прошивки 150526_r10
plg-hdtv-altsource.c041 · code · unknown; прошивка — · Movie::get_vod_info задаёт PluginVodInfo::initial_position_ms из сохранённой позиции viewedItemsArr (p × 1000); если позиция в пределах 5 секунд от конца, она сбрасывается в 0.
plg-hdtv-altsource.c043 · code · unknown; прошивка — · Обработчик playback_stop переносит накопленные playback_info (p и d) в viewedItemsArr и сохраняет их, кроме файлов с расширениями wav/ogg/flac/midi/rm/aac/ wma/mka/ape/jpg/png.
plg-hdtv-smart-vod.c196 · code · unknown; прошивка — · При control_id=timer эталон читает /tmp/run/ext_command.state; playback_info присваивается только если найдены playback_position и playback_duration и оба значения больше нуля.
plg-hdtv-smart-vod.c197 · code · unknown; прошивка — · Movie::get_vod_info эталона при наличии viewed_items для URL и значении, отличном от viewed, вычисляет initial_position_ms из сохранённой позиции; pos<0 и pos+5>=duration заменяются нулём.
plg-hdtv-youtube.c060 · code · unknown; прошивка — · Movie::get_vod_info YouTube при watched == 1 помечает серии из viewed_items префиксом [ПРОСМ] или [ПРОСМ позиция/длительность] и задаёт initial_position_ms из сохранённой позиции; pos<0 и pos+5 ≥ длительности сбрасываются в 0. ↩
plg-hdtv-altsource.c042 · code · unknown; прошивка — · На первом событии таймера VOD-воспроизведения Movie добавляет запись в itemsHistory с history_path, history_str («Просмотрено: <дата>»), а также csi и current_network_folder при их наличии; запись ставится в начало, история обрезается до 310 элементов. ↩
plg-hdtv-smart-vod.c198 · code · unknown; прошивка — · При control_id=watched, заданной ненулевой playback_info и заданном playback_stop_pressed эталон сохраняет фильм в history_items; если после вставки размер ровно 31, удаляет последний элемент. ↩
plg-hdtv-altsource.c045 · code · unknown; прошивка — · Кнопка «Просм./Не просм.» переключает viewedItemsArr[series_id] только для video_file и audio_file; для остальных типов показывается сообщение, что отметки используются только для аудио и видео. ↩
plg-hdtv-smart-vod.c210 · code · unknown; прошивка — · При control_id=viewed и заданном selected_media_url VodSeriesListScreen эталона переключает запись viewed_items[HD::baseitem(series_id)] между отсутствием и строкой viewed, сохраняет её и инвалидирует vod_series. ↩
plg-dc-screenshoter.c097 · code · unknown; прошивка — · Функция get_prop_from_file() читает значение ключа из файла формата «key = value» построчно, возвращая заданное значение по умолчанию при отсутствии файла или ключа.
plg-dc-screenshoter.c068 · code · android; прошивка — · Скриншот через IR-код выбирается при HD_APK без HD_FW_APK, а при HD_FW_APK — если в /tmp/run/ext_command.state player_state = file_playback и в /tmp/run/ext_command.android.state android_app_active = 0
plg-hdtv-utility-family.c118 · code · unknown; прошивка — · do.php mark.it по cron читает /tmp/run/ext_command.state: если в 5-й строке есть playback_url, состояние не dvd_playback, файл не аудио и путь не начинается с http|udp|rtp|dvb:///|rstp и не в игнор-списке, — берёт playback_duration, playback_position, playback_video_width/height из строк 7, 8, 13, 14 и считает процент просмотра. ↩
plg-hdtv-youtube.c059 · code · unknown; прошивка — · Movie::get_vod_info YouTube возвращает PluginVodInfo с id, name, description, poster_url, series, initial_series_ndx, buffering_ms, actions (get_movie_actions), timer.delay_ms=500 и initial_position_ms (у эталона timer — 5000).
plg-hdtv-youtube.c061 · code · unknown; прошивка — · get_movie_actions YouTube назначает плееру GUI_EVENT_KEY_B_GREEN (menu2), CLEAR (sleep либо key_clear при clock 1/2), PLAYBACK_STOP, D_BLUE (menu), C_YELLOW (video_info при show_vxp == 1) и GUI_EVENT_TIMER (event_timer).
plg-hdtv-youtube.c062 · code · unknown; прошивка — · get_movie_actions YouTube только при HD::get_versions() === true добавляет GUI_EVENT_PLAYBACK_GOING_TO_SWITCH, GUI_EVENT_PLAYBACK_SWITCHED, GUI_EVENT_KEY_SUBTITLE, GUI_EVENT_KEY_INFO (при extendedInfo == 1) и GUI_EVENT_KEY_TOP_MENU (при top_menu == 1).
plg-gh-aspel-twitch-dune-plugin.c029 · code · unknown; прошивка — · TwitchPlugin::get_vod_info назначает на GUI_EVENT_KEY_CLEAR действие chat, а на GUI_EVENT_PLAYBACK_GOING_TO_SWITCH и GUI_EVENT_PLAYBACK_STOP — действие stop_irc.
plg-gh-aspel-twitch-dune-plugin.c053 · code · unknown; прошивка — · UserInputHandlerRegistry::create_action собирает действие PLUGIN_HANDLE_USER_INPUT_ACTION_ID с params handler_id (из get_handler_id) и control_id (имя контрола), добавляя переданные add_params.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c051 · code · unknown; прошивка — · В AceSearchTv::handle_user_input ветка elseif playback_stop (после ветки timer) при наличии command_url запрашивает command_url?method=stop; затем независимо от этого сбрасывает self::$playing_channel_id и возвращает действие очистки информационного блока (text_above = '').
plg-gh-valerievitch-dune-plugin-acestreamsearch.c052 · code · unknown; прошивка — · Регистрация обработчиков GUI_EVENT_PLAYBACK_SWITCHED и GUI_EVENT_PLAYBACK_GOING_TO_SWITCH закомментирована, хотя ветки playback_switched и playback_going_to_switch в handle_user_input есть и только пишут в лог.
plg-dc-torrent-center.c127 · code · unknown; прошивка — · timeInfoShowRend формирует OSD часов и прогресса, затем возвращает update_osd с change_behaviour и интервалом 1000 мс.
plg-dc-torrent-center.c117 · code · unknown; прошивка — · timeInfoShowRend рисует полосу прогресса из icons/selection_top.aai и icons/selection_dimmed_top.aai.
plg-dc-torrent-center.c164 · code · unknown; прошивка — · ActionFactory::update_osd возвращает PLUGIN_UPDATE_OSD_ACTION_ID с components и post_action.
plg-dc-torrent-center.c165 · code · unknown; прошивка — · ActionFactory::change_behaviour возвращает CHANGE_BEHAVIOUR_ACTION_ID с actions, timer и post_action.
plg-hdtv-altsource.c072 · code · unknown; прошивка — · OSD-часы и процент просмотра настраиваются в timeInfoShowRendSettings (цвет, halo, фон, шрифт, положение, режим clock, показ процента/остатка) и рисуются HD::timeInfoShowRend через update_osd/change_behaviour; настройка хранится с привязкой к MAC-адресу. ↩
plg-hdtv-youtube.c063 · code · unknown; прошивка — · SmartConfig::getInfoRend YouTube рисует поверх видео OSD (update_osd с change_behaviour, таймер 1000 мс); без jsd->prsnt позицию, длительность и размер кадра он берёт регулярными выражениями из /tmp/run/ext_command.state. ↩
plg-hdtv-youtube.c064 · code · unknown; прошивка — · SmartConfig::getSubtitleRend YouTube выводит субтитры как OSD-текст: по playback_position из /tmp/run/ext_command.state выбирает строку subArr['data'] (при отсутствии — ближайшую предыдущую), переносит по 80 символов и обновляет OSD с таймером 500 мс. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c048 · code · unknown; прошивка — · Обработчик timer в AceSearchTv читает stat_url канала; при наличии в ответе поля peers сохраняет его в acestream_data канала, а при наличии speed_down сохраняет его значение под ключом speed.
plg-dc-torrent-center.c126 · code · unknown; прошивка — · Обработчик key_b_green у Movie переключает статистику TorrServer/Peerflix через getInfoRend. ↩
plg-hdtv-youtube.c065 · code · unknown; прошивка — · При control_id=expect_stream VodTop500Screen YouTube показывает диалог с таймером 1000 мс; на 1-м и каждом 10-м тике вызывает Youtube::retrieve_playback_url и, пока результат равен заглушке http://mp4://dune-club.info/plugins/update/1.mp4, повторяет expect_stream, иначе выполняет vod_play().
plg-hdtv-youtube.c128 · forum · unknown; прошивка — · По первому посту темы 15724, в 6.7.7 добавлена функция «Ожидать стрим», проверяющая доступность стрима или премьеры каждые 10 с (через popup menu).
plg-dc-bazinga3.c054 · code · unknown; прошивка — · Movie::get_vod_info сливает viewedItemsTmpArr в viewedItemsArr и для серии с записью в viewedItemsArr при значении 'viewed' даёт префикс [ПРОСМ], иначе берёт позицию p ×1000 мс, сбрасывая отрицательную и позицию в пределах 5 с от конца d в 0. ↩
plg-dc-bazinga3.c055 · code · unknown; прошивка — · На событии playback_switched при $this->ims == 0 и наличии saveSeasonTimes[$user_input->plugin_vod_id] Movie опрашивает http://127.0.0.1:/cgi-bin/do?cmd=status до 130 раз по 50 мс до playback_state=playing, затем при HD::is_android() ждёт ещё 0,8 с и шлёт cmd=set_playback_state&position=…&speed=256. ↩
plg-dc-screenshoter.c072 · code · unknown; прошивка — · Запись видео (action rec) запрещена при HD_APK; иначе запускается bin/rec.sh, который вызывает screenrecord --size 1280x720 в фоне
plg-dc-screenshoter.c074 · code · unknown; прошивка — · status_rec отсчитывает 180 секунд от начала записи (tts = 180 - прошедшее время)
plg-dc-screenshoter.c076 · code · unknown; прошивка — · Состояние записи (путь файла, время старта) хранится в JSON-файле rec_data в tmp_dir_path через HD::save_items_tmp
plg-hdtv-megaradio.c135 · code · unknown; прошивка — · При проигрывании VOD/YouTube Movie::get_vod_info отдаёт actions с playback_stop watched, D_BLUE sleep и таймером 3000 мс; B_GREEN sound_info назначается только при наличии /firmware/bin/ffmpeg или /codeckpack/bin/ffmpeg, CLEAR yt_search — только при HD::get_versions() = true; OSD обновляется через get_radio_stream_info только при HD::get_versions() = true, use_osd не равен 0 и id не содержит youtube. ↩
plg-hdtv-altsource.c037 · code · unknown; прошивка — · Обработчик add_action проверяет PIN родительского контроля, необходимость mount для network_folder и существование пути (иначе delete_item), затем video_file/audio_file отправляет в vod_play, disk_image, image_file, playlist_file и папки BDMV/VIDEO_TS — в launch_media_url, остальные известные типы возвращают null, а папки без типа открывает через open_folder.
plg-hdtv-altsource.c038 · code · unknown; прошивка — · Для video_file и audio_file плагин запускает VOD-воспроизведение действием ActionFactory::vod_play, а диски/образы, image_file, playlist_file, папки BDMV/STREAM и VIDEO_TS/VIDEO_TS.IFO открывает как media_url через ActionFactory::launch_media_url.
plg-hdtv-altsource.c040 · code · unknown; прошивка — · SmartVod::try_load_movie строит Movie из FileList::getPlayFiles: для каждого файла того же типа в папке добавляет серию с playback_url file:// и is_stream_url=true; если файлов больше одного, подпись и иконка берутся у папки.
plg-hdtv-duneplexcatalog.c023 · code · unknown; прошивка — · Экран фильмов по Enter/Play при parts <> 1 возвращает open_folder (для многотомных — экран частей); при parts = 1 получает реальный путь, запускает notifier и для типа FILE отдаёт launch_media_url на m3u-файл, для DVD/BD — launch_media_url на путь папки. По Info открывает карточку VodMovieScreen, по жёлтой клавише ставит/снимает отметку просмотра.
plg-hdtv-duneplexcatalog.c024 · code · unknown; прошивка — · Экран частей фильма получает части через PL::get_movies_parts_ex, для каждой части вычисляет реальный путь и складывает в m3u-список, а по Play запускает playlist_play с выбранного индекса; если movie_id — папка (DVD/BD), открывает её через launch_media_url.
plg-hdtv-duneplexcatalog.c026 · code · unknown; прошивка — · Экран эпизодов строит m3u-список реальных путей и карту путь → l_key; при resume=dune по Enter/Play получает реальный путь, для типа FILE отдаёт launch_media_url на m3u, срезанный с выбранного индекса, и сохраняет карту в /tmp/dpc_files.list, для DVD/BD — launch_media_url на путь папки; notifier запускается в обоих случаях.
plg-hdtv-duneplexcatalog.c027 · code · unknown; прошивка — · Музыка идёт по цепочке artist list → album list → track list; на экране альбома треки складываются в m3u-список реальных путей, а Play вызывает playlist_play с выбранного индекса.
plg-hdtv-duneplexcatalog.c047 · code · unknown; прошивка — · DN::set_m3u_file перезаписывает <каталог плагина>/www/dpc_play_list.m3u: пишет #EXTM3U, строки #EXTINF и пути, вызывает shell-команду sync и возвращает plugin_file:///www/dpc_play_list.m3u.
plg-hdtv-duneplexcatalog.c044 · code · unknown; прошивка — · PL::get_real_path при совпадении префикса пути Plex с ключом из DN::$connections заменяет его на URL соединения и определяет тип медиа: путь с /BDMV/ или /STREAM/ — BD, с /VIDEO_TS/ или /VIDEO_TS. — DVD, иначе FILE; для BD/DVD возвращается родительская папка. ↩
plg-hdtv-remtor.c122 · code · unknown; прошивка — · map_rem_to_local читает paths_map выбранного подключения и при совпадении префикса from заменяет его на to, сохраняя остаток пути.
plg-hdtv-remtor.c123 · code · unknown; прошивка — · Для kc_local_dune путь, начинающийся с /transmission, переводится через readlink('/transmission') в storage_name://<имя накопителя><путь>.
plg-hdtv-remtor.c095 · code · unknown; прошивка — · Экран rt_setup_connection хранит одну пару сопоставления путей paths_map[0] с полями from и to; поля tr_paths_map_from и tr_paths_map_to обновляют её.
plg-hdtv-remtor.c074 · code · unknown; прошивка — · Воспроизведение файла на экране rt_files показывает диалог «Not supported», только когда get_torrent_array вернул ложь (тогда $fname = NULL); если торрент найден, путь downloadDir/name переводится map_rem_to_local и всегда передаётся в ActionFactory::launch_media_url, даже если map_rem_to_local вернул пустую строку.
plg-hdtv-remtor.c124 · code · unknown; прошивка — · map_rem_to_local при отсутствии совпадения возвращает пустую строку, а обработчик play экрана rt_files проверяет только is_null, поэтому пустая строка проходит проверку и передаётся в ActionFactory::launch_media_url.
plg-hdtv-mpd.c022 · code · unknown; прошивка — · CGI-команда stream запускает воспроизведение http://127.0.0.1:8000 на самом плеере через IP-control /cgi-bin/do?cmd=start_file_playback.
plg-hdtv-mpd.c030 · forum · Dune Solo, Dune Solo Lite, unknown; прошивка — · По словам автора, MPD не аудиофильский: аудиофайлы транслируются по HTTP на плеер, из-за чего управление (перемотка, пауза, громкость) отстаёт на пару секунд.
plg-hdtv-utility-family.c102 · code · unknown; прошивка — · Таймер включения SleepWake без пути к файлу пишет в cron wget к cmd=ir_code с кодом A05FBF00, если запись «Включение» уже есть (замена), и с кодом BC43BF00 при первой записи (append) — коды в двух ветках различаются.
plg-hdtv-utility-family.c103 · code · unknown; прошивка — · С заданным путём (cookie pl_path, пробелы → «+») таймер включения SleepWake пишет /tmp/scripts/wake.sh: wget cmd=ir_code&ir_code=A05FBF00, sleep 10, wget cmd=start_file_playback&media_url=<путь>; cron вызывает wake.sh.
plg-gh-kocourkuba-proiptv.c044 · code · unknown; прошивка — · Внешний плеер плагин запускает командой оболочки am start -a android.intent.action.VIEW -t "video/*" -d (start_external_player), передавая URL без dune_params и обёрток ts://.
plg-gh-kocourkuba-proiptv.c035 · code · unknown; прошивка — · При is_limited_apk() плагин скрывает пункт «внешний плеер» и «media info» в меню серий VOD, а в выборе папок передаёт PARAM_ALLOW_NETWORK = false (сетевые папки недоступны).
plg-hdtv-megatorrents.c101 · code · android; прошивка — · SmartConfig::get_android_action запускает внешний просмотрщик через am start -d "" -t -a android.intent.action.VIEW с MIME video/* (video), audio/x-mpegurl (m3u), application/x-bittorrent (torrent) и image/* (image).
plg-hdtv-megatorrents.c102 · code · android; прошивка — · При control_id play, platform_kind android, cookie android_action == 1, series_id != dummy и без dune_player VodSeriesListScreen вместо vod_play вызывает select_android_action с android_play=1.
plg-hdtv-megatorrents.c103 · code · android; прошивка — · select_android_action серий при android_play берёт URL после &turl=, либо сам playback_url для 9000/torrents/, .jpg и 8090/torrent/, иначе mUrl::get_link; заменяет http://mp4:// на http:// и отдаёт его интентом image (jpg/png) или video; при all=torrserve — m3u-плейлист TorrServe (/view/ → /playlist/ + m3u); затем отмечает просмотр (viewed).
plg-hdtv-megatorrents.c104 · code · android; прошивка — · select_android_action экрана сезонов при torrent получает .torrent через get_torrent(series_id, 'android_action') в /tmp/www/temp.torrent и открывает его интентом torrent с URL file:///tmp/www/temp.torrent.
fw-tv188b-261021-0117-r25--java-player.c064 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 явный запуск PlayerProxyActivity с HTTP MP4 и video/* без action VIEW (adb и php_server, также с skip_resume_position:1) оставляет navigator и передаёт intent в MainActivity без запуска VOD. ↩↩
plg-gh-infinitygp-dune-jellyfin-bridge.c014 · code · android-dune-fw; прошивка — · launchDunePlayer копирует входящий Intent, задаёт компонент com.dunehd.app/com.dunehd.shell.PlayerProxyActivity и при наличии NFS-URL подменяет data, сохраняя mime type.
plg-gh-infinitygp-dune-jellyfin-bridge.c015 · code · android; прошивка — · Перед запуском Dune из флагов интента убираются FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_FORWARD_RESULT и FLAG_ACTIVITY_PREVIOUS_IS_TOP, остальные флаги сохраняются.
plg-gh-infinitygp-dune-jellyfin-bridge.c046 · code · android; прошивка — · BridgeActivityTest проверяет три вещи: grace-период запуска 5000 мс (3000 мс на второй секунде и 0 на пятой), overlay-разрешение требуется только с SDK 29 при canDrawOverlays=false, а flagsForDunePlayer снимает NEW_TASK, FORWARD_RESULT и PREVIOUS_IS_TOP, сохраняя GRANT_READ_URI_PERMISSION и EXCLUDE_FROM_RECENTS.
plg-gh-infinitygp-dune-jellyfin-bridge.c016 · code · android-dune-fw; прошивка — · Приложение добавляет к интенту плеера extra com.dunehd.playback.dune_params со значением skip_resume_position:1; если extra уже непустой и не содержит этот параметр, значение дописывается через запятую, а повторно тот же параметр не добавляется.
plg-gh-vladikshkwok-lampa-dune-plugins.c034 · code · android; прошивка — · LampaDuneBridge::vod() превращает каждый элемент сессии в серию с name, playback_url и playback_url_is_stream_url=true.
plg-hdtv-web-launchers.c047 · code · unknown; прошивка — · tvzavr — HTML/JS-приложение, которое создаёт объект application/x-dune-stb-api (id player), вызывает init(), getScreenSize(), enableVideo(), play(url), getPlaybackState(), getLengthInSeconds(), getPositionInSeconds(), Stop() и exitBrowser(EXIT_BROWSER_MODE_CLOSE).
plg-hdtv-web-launchers.c051 · code · unknown; прошивка — · amediateka index.html создаёт объект application/x-dune-stb-api, проверяет наличие init(), вызывает stb.init(); при успешном init() (ready) каждые 500 мс проверяет stb.getIpAddress() и при наличии IP переходит на http://tv.amediateka.ru; при ошибке показывает сообщение и предлагает перезапуск.
plg-hdtv-web-launchers.c052 · code · unknown; прошивка — · amediateka при ошибке соединения или STB (waitForIpAddress) вызывает keyDown(), который для userAgent arora вешает onkeydown, для opera — onkeypress; keyHandler: Enter — reloadConnect(), Stop/TopMenu/Return — stb.exitBrowser(stb.EXIT_BROWSER_MODE_CLOSE).
plg-hdtv-web-launchers.c059 · doc · any-documented; прошивка — · media_url для FlashLite-приложения имеет вид swf://{HTTP-or-file-URL}[:::{parameters}], для веб-браузера — www://{HTTP-or-file-URL}[:::{parameters}]; параметры дописываются после «:::».
plg-hdtv-web-launchers.c066 · doc · any-documented; прошивка — · Параметры SWF-URL документ не описывает, а отправляет к внешнему flashlite_info.txt (http://dune-hd.com/firmware/flash/flashlite_info.txt).
plg-dc-torrent-center.c161 · code · unknown; прошивка — · В обработчике playDirectly проверяется bareword is_stream_url, после чего возвращается launch_media_url(playback_url).
plg-dc-torrent-center.c163 · code · unknown; прошивка — · ActionFactory::launch_media_url возвращает LAUNCH_MEDIA_URL_ACTION_ID с url и post_action.
plg-dune-remote-control.c077 · code · unknown; прошивка — · PHP-код плагина не вызывает IP Control; единственные обращения к /firmware/ext_command/cgi-bin/do — в rc_extension.bash (exec_do, вызов закомментирован) и reboot.bash (cmd=ir_code), то есть в shell-скриптах, а не в do.php. ↩
plg-gh-vladikshkwok-lampa-dune-plugins.c016 · code · android; прошивка — · Для операции get_vod_info плагин отдаёт данные типа plugin_vod_info из LampaDuneBridge::vod(LampaDuneBridge::load()).
plg-gh-vladikshkwok-lampa-dune-plugins.c020 · code · android; прошивка — · Для прочих операций при input_data.command = play плагин возвращает действие plugin_open_folder с media_url session и post_action plugin_vod_play.
plg-hdtv-smart-vod.c186 · code · unknown; прошивка — · Локальный ActionFactory::vod_play эталона принимает vod_info и помещает его в PluginVodPlayActionData::vod_info.
plg-hdtv-duneplexcatalog.c028 · code · unknown; прошивка — · Экран фото получает список через PL::get_photos_list и для каждой фотографии (file не null) кладёт в m3u-список URL transcode Plex; по Enter (control_id play) для фотографии запускает launch_media_url на m3u-файл, срезанный с выбранного индекса, для папки (file null) открывает её, а по клавише Play (control_id show) открывает одиночный URL фотографии.
plg-hdtv-duneplexcatalog.c039 · code · unknown; прошивка — · Обложки (thumb) и фоны (art) плагин запрашивает у Plex через /photo/:/transcode с параметрами width, height и url=; результат складывается в кэш thumb/info (фото — в кэш photo).
plg-hdtv-youtube.c058 · code · unknown; прошивка — · Movie::get_vod_info YouTube при create_playlist == 1 (по умолчанию), l == false и заданном urls.video_url перестраивает series_list из адреса папки (add_url_items_series_data) и берёт имя, описание и постер плейлиста из родительского media_url; иначе — имя, описание и первую картинку фильма. ↩
plg-gh-infinitygp-dune-jellyfin-bridge.c025 · code · android-dune-fw; прошивка — · DuneStatus.parse читает из JSON десять ключей: command_status, player_state, playback_state, playback_url, playback_caption, playback_position, playback_duration, android_app_active, video_enabled и playback_window_fullscreen; отсутствующие строковые ключи дают пустую строку.
plg-gh-infinitygp-dune-jellyfin-bridge.c026 · code · android-dune-fw; прошивка — · playback_position и playback_duration парсятся как неотрицательные числа — Number или строка с trim — и переводятся из секунд в миллисекунды умножением на 1000; отсутствующее, нечисловое или отрицательное значение даёт null.
plg-gh-infinitygp-dune-jellyfin-bridge.c027 · code · android-dune-fw; прошивка — · android_app_active, video_enabled и playback_window_fullscreen принимаются как Boolean; иначе строка значения после trim, равная «1»/«true» или «0»/«false» без учёта регистра (включая целые числа 1 и 0), даёт true/false, любое иное значение — null.
plg-gh-infinitygp-dune-jellyfin-bridge.c028 · code · android-dune-fw; прошивка — · isPlaybackActive возвращает false, если playback_state равен stopped; иначе считает воспроизведение активным при известной playback_position или при player_state, оканчивающемся на «_playback».
plg-gh-infinitygp-dune-jellyfin-bridge.c029 · code · android-dune-fw; прошивка — · isPlaybackVisible отдаёт приоритет android_app_active: при известном значении воспроизведение видимо только если оно активно и android_app_active=false; если android_app_active неизвестен и оба флага video_enabled и playback_window_fullscreen неизвестны, видимость равна активности; иначе видимо при video_enabled=true или playback_window_fullscreen=true.
plg-gh-infinitygp-dune-jellyfin-bridge.c030 · code · android-dune-fw; прошивка — · isReadyForSeek требует одновременно активного и видимого воспроизведения, известной playback_duration и playback_duration > 0.
plg-gh-infinitygp-dune-jellyfin-bridge.c031 · code · android-dune-fw; прошивка — · matchesMedia при активном воспроизведении считает статус своим, если fileName совпал с baseName(playback_url) (для http/https хвост после ? или # отрезается), или title совпал с playback_caption, или expectedUrl совпал с playback_url целиком; если ни одного ожидаемого значения нет, совпадением считается любой активный статус.
plg-gh-infinitygp-dune-jellyfin-bridge.c032 · code · android-dune-fw; прошивка — · DuneStatus.baseName для http/https URL отрезает хвост после первого «?» или «#», а базовое имя берёт как часть после последнего «/» или «\», поэтому имя файла с этими символами в локальном пути не искажается.
plg-gh-vladikshkwok-lampa-dune-plugins.c080 · code · android; прошивка — · consume() принимает позицию только при player_state=file_playback и совпадении identity(playback_url) с элементом сессии, требует числовые playback_position и playback_duration, duration > 0 и position не больше duration + 5. ↩
plg-gh-vladikshkwok-lampa-dune-plugins.c080 · code · android; прошивка — · consume() принимает позицию только при player_state=file_playback и совпадении identity(playback_url) с элементом сессии, требует числовые playback_position и playback_duration, duration > 0 и position не больше duration + 5.
plg-gh-vladikshkwok-lampa-dune-plugins.c083 · code · android; прошивка — · Когда сессия в состоянии playing и player_state перестаёт быть file_playback, она завершается с последним реальным sample; комментарий подчёркивает, что остановка не означает «просмотрено полностью».
plg-gh-infinitygp-dune-jellyfin-bridge.c039 · code · android-dune-fw; прошивка — · Конструктор PlaybackProgressTracker приводит начальную позицию к неотрицательной и кладёт её в lastPositionMillis; startupResetExpected=true только для expectedUrl, начинающегося с http:// или https://; initialSeekConfirmed=true сразу только при начальной позиции 0.
plg-gh-infinitygp-dune-jellyfin-bridge.c041 · code · android-dune-fw; прошивка — · После обработки статуса lastPositionMillis обновляется значением playback_position, только если начальная перемотка уже подтверждена или новая позиция больше текущей; позиции около нуля до подтверждения перемотки игнорируются.
plg-gh-infinitygp-dune-jellyfin-bridge.c042 · code · android-dune-fw; прошивка — · applyInitialSeek сбрасывает initialSeekConfirmed и seekConfirmedMillis и возвращает none, если статус не готов к перемотке; при позиции в пределах 5000 мс от начальной подтверждает перемотку; иначе при номере попытки больше 0 и позиции не меньше 30 000 мс считает перемотку ручной; иначе после 10 попыток сдаётся; повторную попытку отправляет не чаще чем раз в 2000 мс; в SEEK передаёт initialPositionMillis / 1000.
plg-gh-infinitygp-dune-jellyfin-bridge.c043 · code · android-dune-fw; прошивка — · positionResetDuringStabilityWindow возвращает true, только если ожидаемый URL — http(s), начальная позиция больше 30 000 мс, перемотка была подтверждена, текущая позиция не больше 15 000 мс и с подтверждения прошло не больше 15 000 мс; в этом случае onStatus снова запускает applyInitialSeek.
plg-gh-infinitygp-dune-jellyfin-bridge.c040 · code · android-dune-fw; прошивка — · onStatus при несовпадении статуса с медиа уходит в onUnmatchedStatus; при совпадении сбрасывает таймер несовпадений, выставляет playbackObserved=true, когда статус видим, и до первого наблюдения воспроизведения возвращает Update.none().
plg-gh-infinitygp-dune-jellyfin-bridge.c044 · code · android-dune-fw; прошивка — · onUnmatchedStatus ничего не делает до первого наблюдения воспроизведения или после уже отправленного конца; после первого несовпадения запускает отсчёт, и если статус не совпадает непрерывно не меньше 1000 мс, один раз возвращает PLAYBACK_ENDED; совпавший статус сбрасывает отсчёт.
plg-gh-infinitygp-dune-jellyfin-bridge.c045 · code · android-dune-fw; прошивка — · Update.action принимает значения NONE, SEEK, CONFIRMED, USER_OVERRIDE, GAVE_UP и PLAYBACK_ENDED; SEEK несёт позицию в секундах и номер попытки, остальные действия — нули.
plg-gh-vladikshkwok-lampa-dune-plugins.c087 · code · android; прошивка — · fixParse() оборачивает Lampa.Torserver.parse и, если result есть, data не is_file, movie.number_of_seasons задан и result.episode = 0, пытается восстановить номер серии из имени файла шаблонами S01E01, 1x01, Ep/Episode и «Серия/эпизод».
plg-gh-vladikshkwok-lampa-dune-plugins.c089 · code · android; прошивка — · Если result.episode = 0, data не is_file, movie.number_of_seasons задан, шаблон серии в имени файла не найден, а в торренте больше одного файла, fixParse() берёт hash_string = data.path, чтобы у каждого файла был свой прогресс.
plg-gh-vladikshkwok-lampa-dune-plugins.c088 · forum · android; прошивка — · Комментарий fixParse() объясняет обход тем, что Lampa не разбирает имена вида Show.S01E.01 или S01.E01 и даёт всем сериям сезона episode 0, то есть один общий timeline hash.
plg-gh-infinitygp-dune-jellyfin-bridge.c021 · code · android-dune-fw; прошивка — · При действии PLAYBACK_ENDED BridgeActivity на главном потоке вызывает returnToJellyfin: если setPlaybackResult() вернул true, activity при activityManager != null вызывает ActivityManager.moveTaskToFront(getTaskId(), 0) с логом «Bringing the existing Jellyfin task to the foreground» (SecurityException логируется), затем finish(); при уже доставленном результате returnToJellyfin ничего не делает. ↩
plg-hdtv-freetv.c035 · code · unknown; прошивка — · В пакете лежит сертификат rostelecom_rootcert.pem, а ini ссылается на rootcert.pem; файла с таким именем в пакете нет.
plg-hdtv-novosib-iptv.c033 · code · unknown; прошивка — · В пакете лежит сертификат rostelecom_rootcert.pem, а ini ссылается на rootcert.pem; файла с таким именем в пакете нет.
plg-hdtv-freetv.c065 · code · unknown; прошивка — · drm_iptv возвращает true, если существует /firmware/lib/libvmclient.so и product из versions.txt не solo4k/sololite/duo4k, иначе false; результат сохраняется в константу DRM_IPTV.
plg-hdtv-freetv.c066 · code · unknown; прошивка — · set_verimarix: если firmware_version из /tmp/sysinfo.txt содержит _r<цифра> и файл /tmp/verimatrix/hls_verimatrix_web.properties существует, удаляет каталог /tmp/verimatrix; если шаблона _r нет и файла ещё нет — создаёт properties с boot_address=vmxott.svc.iptv.rt.ru, company_name=Rostelecom и файл-маркер hls_verimatrix_web.
plg-hdtv-freetv.c057 · code · unknown; прошивка — · Ветки MPD/DASH (cdn.ngenix.net/mdrm/CH_, strm.yandex.ru/*.mpd): на не-Android и не-APK плагин возвращает заглушку .../free_tv/Logo/not_support.ts, на Android/APK при DUNE_FIRMWARE_BN < 21 — .../update_firmware.ts; только в ветке strm.yandex.ru/*.mpd на Android/APK и branch_num >= 21 манифест правится (cenc:default_KID, https→http) и отдаётся через локальный /index.mpd на HD_HTTP_LOCAL_PORT; в ветке cdn.ngenix.net/mdrm/CH_ для стран вне RUS/BLR/UKR хост заменяется на s17548.cdn.ngenix.net. ↩
plg-hdtv-freetv.c055 · code · unknown; прошивка — · get_tv_playback_url содержит отдельные ветки преобразования URL для сервисов и доменов: peers.tv, cdn.ngenix.net (HLS и MPD), URL вида :NNNN/hls/CH_, beeline, persik.by и dvr.persik.by, limehd.tv, strm.yandex.ru (HLS и DASH), iptvstream.site, voka.tv и 46.53.200., otv.im и ljpvv.hdme.top, spbtv.com, edem (/iptv/ и 213.183.46.195), cdntv.online, play-x.ru, spacetv (ottclub), fe.svc.ott.zala.by и 178.124.183., ottg.tv, spr24.net, iptv.monster и online24.pm, telecolatv (helper get_telecola), satbiling и only4.tv, iptvx.tv, itvlive, flussonic, antifriz.tv, lifeyosso и rapidnas, ?yosso, token=free, stalker, clientbox.online, anonymoustv.club и ipro.tv, hls.stb.md, vimax.tv, beetv.kz, spovt.ru и setanta-1.ru, api.iptv2021.com, URL вида http://host:port/ch/, vod.mors.by, 212.115.255.* (fregat), kineskop, 141.105.133., hlsN.onlineott.tv и 46.174.189. (TVOE), srvru.play-x.ru, ok.ru, jwplatform, tools/m3u/play.php, onlineott.tv, api.catcast.tv и earthtv.com. ↩
plg-hdtv-web-launchers.c024 · code · unknown; прошивка — · amediateka объявляет drm_defs/drm_def с id=spbtv, type=verimatrix_web и пустым params. ↩
plg-hdtv-101-ru.c021 · code · unknown; прошивка — · AbstractTv объявляет два режима: MODE_CHANNELS_1_TO_N = false и MODE_CHANNELS_N_TO_M = true; поля favorites_supported и playback_url_is_stream_url задаются конструктором. ↩
plg-hdtv-megaradio.c028 · code · unknown; прошивка — · Класс SmartM3uTv расширяет AbstractTv и реализует UserInputHandler с handler_id = «tv»; в конструкторе выбран режим MODE_CHANNELS_N_TO_M с поддержкой избранного SmartConfig::TV_FAVORITES_SUPPORTED и playback_url_is_stream_url = false. ↩↩
plg-hdtv-jurt.c018 · code · unknown; прошивка — · BtvTv использует AbstractTv::MODE_CHANNELS_1_TO_N; в load_channels он принудительно ставит have_archive=true для всех каналов, хотя рядом есть закомментированное чтение c->have_archive. ↩
plg-hdtv-rain-tv.c012 · code · unknown; прошивка — · RainTV extends AbstractTv и вызывает parent::__construct(true, false, true): режим MODE_CHANNELS_N_TO_M, избранное выключено, playback_url_is_stream_url включён.
plg-hdtv-rain-tv.c017 · code · unknown; прошивка — · Собственное private-свойство RainTV::$mode нигде не присваивается, поэтому в PluginTvInfo::show_group_channels_only уходит null, а не режим родителя.
plg-hdtv-plugtv.c016 · code · unknown; прошивка — · Класс DemoChannel (наследник DefaultChannel) хранит number, past_epg_days, future_epg_days, epg_cod, description и has_archive и отдаёт их геттерами; конструктор повторно записывает streaming_url.
plg-hdtv-plugtv.c059 · code · unknown; прошивка — · Поля epg_cod и description читаются из list.xml и хранятся в DemoChannel, но нигде не используются: get_epg_cod() и get_description() не вызываются, EPG строится без кода канала.
plg-hdtv-rain-tv.c013 · code · unknown; прошивка — · RainTV::get_local_channels создаёт по одному RainChannel на каждый элемент Config::$ICONS_GENRES_MAP; число каналов равно числу элементов массива.
plg-hdtv-rain-tv.c016 · code · unknown; прошивка — · RainTV::get_tv_info возвращает PluginTvInfo с groups и channels, favorites_supported=false, favorites_icon_url='', initial_channel_id из media_url, initial_group_id=null, initial_is_favorite=0, favorite_channel_ids=null и archive=null.
plg-hdtv-rain-tv.c019 · code · unknown; прошивка — · RainChannel реализует Channel и берёт id, title, stream_url и icon_url из массива конфига; get_groups всегда возвращает [Config::ALL_CHANNELS_GROUP], has_archive и is_protected — false, past_epg_days 0, future_epg_days 7, archive_past_sec/archive_delay_sec/buffering_ms 0, timeshift_hours 4.
plg-hdtv-kohana-channel.c068 · code · unknown; прошивка — · Канал в Welcome::playTV имеет id '1', group_ids ['0'], number -1, have_archive=false, is_protected=false, past_epg_days/future_epg_days/archive_past_sec/archive_delay_sec/ buffering_ms/timeshift_hours = 0 и playback_url_is_stream_url=true; caption и icon_url задаются в каждом пакете отдельно. ↩
plg-hdtv-plugtv.c012 · code · unknown; прошивка — · list.xml задаёт одну категорию General и четыре канала — «Высокое качество», «Среднее качество», «Низкое качество», «Авто качество» — с num_past_epg_days=6, num_future_epg_days=6 и привязкой к категории 1.
plg-hdtv-plugtv.c015 · code · unknown; прошивка — · В блоках tv_channel файла list.xml нет элементов number, hide, archive и epg_cod, а description пуст; иконки категории и каналов заданы через plugin_file://icons/.
plg-hdtv-plugtv.c056 · code · unknown; прошивка — · В load_channels обоих пакетов значение $ch_hide читается из XML, но не используется; в newworld проверка if ($ch_hide == 1) continue закомментирована, а в trofey её нет — скрытие каналов не реализовано.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c046 · code · unknown; прошивка — · AceSearchTv::get_tv_info при одновременных channel_id и group_id в media_url оставляет в PluginTvInfo::groups только текущую группу; комментарий автора объясняет это падением плагина. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c077 · code · unknown; прошивка — · AceSearchTv::load_channels создаёт AceSearchChannel с id = infohash, caption, icon, потоком, последовательным номером с 1 и самим item, добавляет канал в группу и в HashedArray channels.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c078 · code · unknown; прошивка — · Сортировка каналов в AceSearchTv::load_channels отключена: вызов $this->channels->usort(AceSearchConfig::CHANNEL_SORT_FUNC_CB) закомментирован, хотя callback sort_channels_cb сравнивает номера каналов.
plg-hdtv-pirates-radio.c028 · code · unknown; прошивка — · Станция читается из tv_info/tv_channels/tv_channel: caption, icon_url, streaming_url, number, num_past_epg_days и num_future_epg_days передаются в конструктор DemoChannel. ↩↩
plg-hdtv-surface-family.c029 · code · unknown; прошивка — · Radiorecord.ru в load_channels() запрашивает http://www.radiorecord.ru/api/stations, разбирает JSON через json_decode и для каждой станции result->stations берёт prefix (id), title (очищенный HD::str_remove_tag), tooltip (описание), icon_fill_white (иконку через CGI do_img) и stream_320 (https заменяется на http); number = -1, past/future EPG = 0, has_archive = 1.
plg-hdtv-surface-family.c032 · code · unknown; прошивка — · rmfon.pl load_channels() запрашивает http://www.rmfon.pl/xml/stations.txt, разбирает XML simplexml_load_string, и для каждого station задаёт id = индекс $i, title = station['name'], desc = station['link'], icon = plugin_file://www/lib/logo/logo.png, streaming_url = station['id'], number = $i+1, past_epg_days = 0, future_epg_days = 10, epg_url = false.
plg-dc-widget-ext--lib.c068 · code · unknown; прошивка — · Интерфейс Tv объявляет операции каналов, групп, TV/EPG, архива, избранного и hooks folder_entered/add_special_groups.
plg-dc-widget-ext--lib.c069 · code · unknown; прошивка — · EpgIterator выбирает программы, для которых get_start_time попадает в включительный интервал from <= t <= till.
plg-dc-globaltv--lib.c051 · code · android-dune-fw; прошивка 260827_0003_r24 · AbstractTv плагина имеет публичный конструктор с favorites_supported; AbstractTv r24 реализует Tv и имеет protected-конструктор с mode/favorites_supported/playback_url_is_stream_url.
plg-dc-globaltv--lib.c052 · code · android-dune-fw; прошивка 260827_0003_r24 · AbstractTv::get_fav_channel_ids плагина отбрасывает пустые элементы списка cookie через get_ids_from_comma_split_str; r24 возвращает результат preg_split без такого фильтра.
plg-dc-globaltv--lib.c053 · code · android-dune-fw; прошивка 260827_0003_r24 · TvFavoritesScreen плагина принимает tv и folder_views, а r24 принимает типизированный Tv и получает виды через get_tv_channel_list_folder_views.
plg-dc-globaltv--lib.c054 · code · android-dune-fw; прошивка 260827_0003_r24 · В карте TvFavoritesScreen плагина ENTER/PLAY направлены на create_action(play_tv), а в r24 напрямую на ActionFactory::tv_play().
plg-dc-globaltv--lib.c055 · code · android-dune-fw; прошивка 260827_0003_r24 · TvFavoritesScreen плагина читает канал через get_channel_by_id как массив с id/name, а r24 вызывает get_channel и использует get_id/get_title объекта.
plg-dc-globaltv--lib.c019 · code · android-dune-fw; прошивка 260827_0003_r24 · Поля plugin_name, dir_path, base_tmp_path и tmp_epfs_path в AbstractEpfsHandler плагина private static, а в r24 protected static.
plg-dc-globaltv--lib.c020 · code · android-dune-fw; прошивка 260827_0003_r24 · AbstractEpfsHandler::get_epfs_ts_path в плагине использует постоянный dir_path и id=tv, а r24 выбирает tmp_epfs_path или dir_path по аргументу tmp и имеет id=main.
plg-dc-globaltv--lib.c021 · code · android-dune-fw; прошивка 260827_0003_r24 · AbstractEpfsHandler::write_data_ts при отсутствии ts в плагине использует make_monotonic_ts с форматом %010d.%06d, а r24 при ложном ts соединяет sec и usec через точку.
plg-dc-globaltv--lib.c022 · code · android-dune-fw; прошивка 260827_0003_r24 · Плагин записывает RMC через write_rmc в каталог конкретного плагина как rows_menu_config.json; r24 предоставляет get_rows_menu_config_path(name) для rows_menu_config_.json в EPFS_BASE.
plg-dc-globaltv--lib.c023 · code · android-dune-fw; прошивка 260827_0003_r24 · В Conf::set_default плагин печатает предупреждение об отсутствующем ключе, а в r24 тот же вызов hd_print закомментирован.
plg-dc-globaltv--lib.c024 · code · android-dune-fw; прошивка 260827_0003_r24 · DefaultArchive при чтении versions.txt в плагине вызывает HD::http_get_document только с URL, а r24 дополнительно передаёт HD::get_dune_opts().
plg-dc-globaltv--lib.c025 · code · android-dune-fw; прошивка 260827_0003_r24 · Чтение size.txt в DefaultArchive плагина не обёрнуто отдельным try/catch, а r24 перехватывает Exception этого чтения и подставляет doc=null.
plg-hdtv-101-ru.c017 · code · unknown; прошивка — · Первый вид списка групп: сетка 7×2, paint_details false, sandwich-обложка plugin_file://icons/sandwich_base.png 200×200, подпись под иконкой, без async-загрузки иконок.
plg-hdtv-101-ru.c018 · code · unknown; прошивка — · Второй вид списка групп: сетка 2×4, paint_details true, zoom_detailed_icon false, иконка 145×145, подпись шириной 400, без async-загрузки иконок.
plg-hdtv-101-ru.c019 · code · unknown; прошивка — · Первый вид списка каналов: сетка 5×3, async_icon_loading true, paint_details true, sandwich 145×145, детальная информация с автопереносом и цветом 11.
plg-hdtv-101-ru.c020 · code · unknown; прошивка — · Второй вид списка каналов: один столбец, 10 строк, async_icon_loading true, paint_details true, иконка 55×55, подпись шириной 1070, детальная информация с автопереносом.
plg-hdtv-101-ru.c075 · code · unknown; прошивка — · Смена вида папки хранится в plugin_cookies по ключу screen..view_idx: get_next_folder_view увеличивает индекс, при выходе за число видов сбрасывает его в 0 и записывает cookie.
plg-hdtv-101-ru.c031 · code · unknown; прошивка — · Элемент списка каналов содержит media_url с channel_id и group_id, caption, icon_path и item_detailed_icon_path, item_detailed_info с '%tr%station_title' и (если desc непустой) '%tr%station_description', а также starred по is_favorite_channel_id. ↩
plg-hdtv-plugtv.c040 · code · unknown; прошивка — · Карточка канала показывает «Поток», «Разрешение» и «Источник телепрограммы»; название источника берётся из cookie epg_server (1 — «Внешний источник», 2 — «От провайдера», иначе «N/A»).
plg-hdtv-plugtv.c041 · code · unknown; прошивка — · В newworld разрешение в карточке определяется по элементу $url_arr[4] URL потока: nw_576p → 1024 x 576, nw_480p → 854 x 480, nw_360p → 640 x 386, nw_abr → «Переменное», иначе «Переменное».
plg-hdtv-plugtv.c042 · code · unknown; прошивка — · В trofey разрешение определяется по названию канала: «Высокое качество» → 1920 x 1080, «Среднее качество» → 1280 x 720, «Низкое качество» → 854 x 480, иначе «Переменное».
plg-hdtv-freetv.c068 · code · unknown; прошивка — · get_tv_info отдаёт каждый канал как массив ExtTvChannel с id, caption, group_ids, icon_url, number, have_archive, is_protected, past/future_epg_days, archive_past_sec, archive_delay_sec, buffering_ms, timeshift_hours, playback_url_is_stream_url=true и ext_epg_enabled=true; исключённые каналы попадают в группу id_bin («Корзина»). ↩
plg-dc-widget-ext--lib.c011 · code · unknown; прошивка — · ActionFactory::status передаёт аргумент status в StatusActionData действия STATUS_ACTION_ID.
plg-dc-widget-ext--lib.c022 · code · unknown; прошивка — · ActionFactory::update_info_block задаёт text_above, text_color, text_halo, text_y_offset и post_action в PLUGIN_UPDATE_INFO_BLOCK_ACTION_ID.
plg-dc-widget-ext--lib.c024 · code · unknown; прошивка — · ActionFactory::add_osd_image добавляет в comps компонент PluginOsdComponent с image_url, координатами и размерами изображения (размеры по умолчанию 0).
plg-hdtv-altv.c011 · code · unknown; прошивка — · Список каналов читается из локального файла data/channel_list.php; при cookie load_sex = yes вместо него берётся data/channel_all.php.
plg-hdtv-altv.c012 · code · unknown; прошивка — · Плейлист — XML с корнем tv_info: группы читаются из tv_categories/tv_category (id, caption, icon_url), каналы — из tv_channels/tv_channel.
plg-hdtv-surface-family.c107 · code · unknown; прошивка — · SurfaceM3uTv пакета LSS читает список из локального lib/channels_list.xml через file_get_contents(dirname(FILE).'/lib/channels_list.xml'); при is_null или simplexml false бросает исключение, а узел не tv_item считает ошибкой. Канал берёт id, caption, description, icon_url и streaming_url из XML, number = i+1, EPG-поля 0/false, has_archive = 0. В файле 11 станций soundsession.center:8000/-hq. ↩
plg-hdtv-plugtv.c012 · code · unknown; прошивка — · list.xml задаёт одну категорию General и четыре канала — «Высокое качество», «Среднее качество», «Низкое качество», «Авто качество» — с num_past_epg_days=6, num_future_epg_days=6 и привязкой к категории 1.
plg-hdtv-plugtv.c018 · code · unknown; прошивка — · load_channels читает локальный list.xml через file_get_contents, разбирает его simplexml_load_string и проверяет корневой элемент tv_info; catch (Exception) вокруг file_get_contents бросает DuneException с диалогом «Ошибка связи», а при $xml === false или неверном корневом элементе бросает исключение.
plg-hdtv-jurt.c017 · code · unknown; прошивка — · Список категорий и каналов плагин получает двумя запросами categories/list и channels/list; каналы раскладываются по категориям по полю channel->category_id. ↩
plg-hdtv-moidom.c013 · code · unknown; прошивка — · get_channel_list запрашивает channel_list.php?have_sepg=0; MoiDomTv пропускает группу с id 12, для каждой группы создаёт DefaultGroup с иконкой tv_.png, для канала — MoiDom_Channel с id, name, иконкой .png, past_epg_days=7, future_epg_days=4, buffering из cookie buf_time, флагами protected/have_archive/is_video. ↩↩
plg-hdtv-surface-family.c029 · code · unknown; прошивка — · Radiorecord.ru в load_channels() запрашивает http://www.radiorecord.ru/api/stations, разбирает JSON через json_decode и для каждой станции result->stations берёт prefix (id), title (очищенный HD::str_remove_tag), tooltip (описание), icon_fill_white (иконку через CGI do_img) и stream_320 (https заменяется на http); number = -1, past/future EPG = 0, has_archive = 1.
plg-hdtv-surface-family.c032 · code · unknown; прошивка — · rmfon.pl load_channels() запрашивает http://www.rmfon.pl/xml/stations.txt, разбирает XML simplexml_load_string, и для каждого station задаёт id = индекс $i, title = station['name'], desc = station['link'], icon = plugin_file://www/lib/logo/logo.png, streaming_url = station['id'], number = $i+1, past_epg_days = 0, future_epg_days = 10, epg_url = false.
plg-hdtv-surface-family.c101 · code · unknown; прошивка — · SurfaceM3uTv пакета SomaFM загружает каналы из http://somafm.com/channels.xml: ответ перекодируется iconv из ISO-8859-1 в UTF-8 и разбирается simplexml_load_string с LIBXML_NOCDATA; при false бросается исключение. Канал берёт title->{0}, description (к нему при наличии дописываются «||Genre|» и «||Listeners|»), иконку из largeimage, иначе image, иначе xlimage, поток из highestpls->{0}, иначе fastpls->{0}; id = i (с 0), number = i+1, past/future EPG = 0, epg_url = false.
plg-hdtv-surface-family.c104 · code · unknown; прошивка — · SurfaceM3uTv пакета Radiopotok.ru загружает каналы из http://radiopotok.ru/app3/all/: если HD::http_get_document() вернул null, бросается «Can not fetch playlist»; ответ разбирается @json_decode; у станции берутся name и stream, описание пустое, иконка plugin_file://www/lib/logo/radio.png, id = i (с 0), number = i+1, EPG-поля = 0/false.
plg-hdtv-101-ru.c092 · code · unknown; прошивка — · Категории DI.FM берутся из channel_filters (кроме name = All): id и name категории, картинка — images_compact первого канала категории без шаблона {?size,height,width,quality,pad}; канал получает категорию только при наличии streaming_url. ↩
plg-hdtv-freetv.c044 · code · unknown; прошивка — · get_playlist запрашивает http://<SERVER>/free_tv/get_playlist_new.php с User-Agent DuneHD/1.0 и заголовком SN: <серийный номер>; при непустом ответе кэширует его в локальном файле d2cb1ebf7e72e3749053af2966d8946c (/tmp/plugins, /persistfs/plugins_data или /flashdata/plugins_data) как base64 с заменой l на | и префиксом md5(S/N).
plg-hdtv-freetv.c045 · code · unknown; прошивка — · Если get_playlist вернул пустую строку, load_channels восстанавливает плейлист из той же локальной копии: убирает префикс md5(S/N), меняет | на l и делает base64_decode; без файла выводит «Нет доступа к плейлисту!!!» и завершает работу.
plg-gh-mdpuma-dune-plugin-altiptv.c050 · code · unknown; прошивка — · HD::load_prov_info получает altiptv_prov_country.xml и строит варианты caption|playlist_url из секции страны и общей секции tv_items.
plg-gh-mdpuma-dune-plugin-altiptv.c051 · code · unknown; прошивка — · HD::load_location_info ищет country сначала в /tmp/location_info.properties, затем в /config/location_info.properties; пробелы заменяет подчёркиваниями.
plg-hdtv-kaban.c015 · code · unknown; прошивка — · Источник плейлистов выбирается cookie m3u_type: 1 — все M3U/XSPF из playlists/ пакета, 2 — из каталога m3u_dir (по умолчанию /D), 3 — один плейлист по ссылке m3u; если m3u_type=3 и m3u пуст, тип принудительно становится 1. Имя источника — имя файла без расширения, оно должно соответствовать /^[a-zA-Z0-9-_]+$/. ↩
plg-hdtv-liteiptv.c029 · code · unknown; прошивка — · HD::get_m3u читает сериализованный файл pl_folder в data_dir_path и поддерживает элементы-каталоги, file_name, pl_url, файл pls.txt со списком ссылок; при вызове без аргумента записи из stopList пропускаются. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c049 · code · unknown; прошивка — · load_channels собирает список входных плейлистов из выбранного prov_pl, каталогов M3U/XSPF, pls.txt, SMB и прямых URL по m3u_type. ↩
plg-hdtv-liteiptv.c107 · forum · unknown; прошивка — · По первому посту liteIPTV поддерживает самообновляемые плейлисты: если в m3u встречается ссылка на другой m3u, плагин загружает и его, рекурсивно продолжая, пока встречаются вложенные плейлисты. ↩
plg-hdtv-liteiptv.c032 · code · unknown; прошивка — · Если строка плейлиста оканчивается на .m3u, плагин добавляет её в список источников и переходит к следующей строке, то есть рекурсивно загружает вложенные m3u по http или из файла. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c046 · code · unknown; прошивка — · Для строки, совпадающей с /^#EXTINF:[^,]*,(.+)$/, load_channels берёт caption из группы 1 и удаляет из него кавычки; при наличии в той же строке tvg-logo, tvg-id, group-title и catchup-days заполняет logo, id, group_name и past_epg_days.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c047 · code · unknown; прошивка — · После #EXTINF цикл увеличивает индекс и принимает следующую строку как media_url только если она начинается с http://; иначе media_url остаётся null.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c052 · code · unknown; прошивка — · В цикле load_channels переменные caption, logo, id и group_name не сбрасываются в начале итерации: они присваиваются только при совпадении соответствующих regex.
plg-hdtv-kaban.c010 · code · unknown; прошивка — · parse_m3u читает строки файла, пропускает #EXTM3U, из #EXTINF берёт caption после запятой и атрибуты logo, id, epg_shift, group_id; следующая строка — URL; id прогоняется через parse_id (vsetv_NNN при NNN<1000, tvs_ИМЯ). ↩
plg-hdtv-evolutiontv.c014 · code · unknown; прошивка — · parse_m3u читает caption после запятой в #EXTINF и атрибуты logo, id, epg_shift, group_id; epg_shift принимается только в диапазоне [-24, 24] часов, иначе 0 (в отличие от Kaban.tv, где условие всегда истинно). ↩↩↩
plg-hdtv-freetv.c046 · code · unknown; прошивка — · Плейлист разбирается как список блоков #EXTINF: id канала — значение cn-id=, подпись — текст после ,, число часов архива — cn-records=, группа — group-title="…", логотип — logotip=. ↩↩
plg-hdtv-liteiptv.c031 · code · unknown; прошивка — · Разбор m3u пропускает строки #EXTM3U, #EXTVLCOPT, #EXTGRP и #EXT-INETRA, берёт название из #EXTINF до запятой, а строки не в UTF-8 перекодирует из WINDOWS-1251. ↩
plg-hdtv-zlostnyi-iptv.c038 · code · unknown; прошивка — · Из #EXTINF bcu берёт название (после первой запятой), tvg-logo (по умолчанию plugin_file://icons/bcu_logo.png), tvg-id (пробелы → %20) и group-title (по умолчанию «Разное»); id канала — base64(название) . "&&" . tvg-id.
plg-hdtv-zlostnyi-iptv.c039 · code · unknown; прошивка — · BcuConfig::tryGetAttribute извлекает атрибут M3U простым explode по «имя="» и strstr до следующей кавычки, без регулярных выражений; если атрибута нет — значение по умолчанию.
plg-hdtv-kaban.c012 · code · unknown; прошивка — · В parse_m3u и parse_xspf epg_shift всегда обнуляется: условие (shift < -24 || shift > -24) ложно только при shift == -24, и тогда записывается -24 + 24 = 0, а при любом другом значении сразу записывается 0, поэтому итог всегда 0. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c113 · code · unknown; прошивка — · В обоих парсерах проверка epg_shift дважды сравнивает значение с -24; проверки верхней границы в этой строке нет. ↩
plg-hdtv-kaban.c013 · code · unknown; прошивка — · parse_xspf разбирает trackList/track, а id, epg_shift, logo и group_id берёт из extension через xpath в пространстве имён myiptv. ↩
plg-hdtv-evolutiontv.c016 · code · unknown; прошивка — · parse_xspf разбирает trackList/track; caption — title, URL — location, а id, epg_shift, logo и group_id — из extension через xpath myiptv:*. Для epg_shift действует то же ограничение [-24, 24] часов. ↩
plg-hdtv-peerstv.c008 · code · unknown; прошивка — · load_channels скачивает плейлист через HD::http_get_document, разбирает его simplexml_load_string и требует корневой элемент playlist.
plg-hdtv-peerstv.c009 · code · unknown; прошивка — · Канал XSPF берётся из trackList/track: id — значение extension в пространстве VLC (http://www.videolan.org/vlc/playlist/ns/0/) плюс 1, номер — psfile, также читаются title, image и location; канал создаётся как DemoChannel с past_epg_days=2 и future_epg_days=2.
plg-hdtv-peerstv.c010 · code · unknown; прошивка — · Группы каналов читаются из extension в пространстве VLC: title группы — атрибут title, id — порядковый номер с 1; каналы привязываются по tid из вложенных элементов. Для 14 названий групп (Эфирные, Информационные, …, Радио) заданы иконки plugin_file://icons/N.png.
plg-dune-remote-control.c010 · code · unknown; прошивка — · m3u.class.php — сторонний m3uParser 2.1.3 Роберта Уиддика (Robert Widdick) под GNU GPL 3.0.
plg-dune-remote-control.c073 · code · unknown; прошивка — · m3uParser требует существующий файл (иначе die), считает версию 2, если первая строка — #EXTM3U, иначе 1; в версии 2 длина и заголовок берутся из #EXTINF:, а URL — из следующей строки, в версии 1 каждая строка считается URL с длиной -1 и пустым заголовком.
plg-dune-remote-control.c074 · code · unknown; прошивка — · При подключении m3u.class.php выполняет error_reporting(0) и set_time_limit(15), перекрывая error_reporting(E_ALL), заданный в do.php.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c048 · code · unknown; прошивка — · Если group_name равен «Промо», load_channels пропускает канал до создания объекта (continue). ↩
plg-hdtv-zlostnyi-iptv.c040 · code · unknown; прошивка — · Строки M3U с group-title «Медиатека» или «BCU Кинопремьера» пропускаются при загрузке каналов — это фильмы медиатеки.
plg-hdtv-zlostnyi-iptv.c072 · code · unknown; прошивка — · BcuConfig::getVideoList отбирает из /tmp/vod_playlist.m3u строки #EXTINF с group-title = category_id; id фильма — номер строки в файле, постер — tvg-logo (по умолчанию mov_unset.png).
plg-hdtv-zlostnyi-iptv.c033 · code · unknown; прошивка — · Если HD::check_token вернул «nottoken», load_channels возвращает ActionFactory::show_title_dialog(«Неправильный ключ доступа»); иначе ответ пишется в /tmp/playlist.m3u и читается file() построчно.
plg-hdtv-zlostnyi-iptv.c048 · code · unknown; прошивка — · Архив bcu при $archive_ts > 0 и format 'hls': плагин заново читает /tmp/playlist.m3u, находит строку канала по id (base64(название)&&tvg-id), берёт её catchup-source (без «$») и заменяет «video-{start}-{duration}» на «video--7200»; если catchup-source нет — URL не меняется.
plg-ds-dune-hd-tv.c069 · code · unknown; прошивка — · Плагин содержит альтернативный режим списка каналов из M3U (I24hConfig::USE_M3U_FILE, URL http://online.dune-hd.com/i24h2/m3u/iptv.utf8.m3u), но в этой версии он выключен (USE_M3U_FILE = false). ↩
plg-gh-mdpuma-dune-plugin-altiptv.c052 · code · unknown; прошивка — · parse_playlist выбирает XSPF при совпадении /xspf/i в имени входа, иначе M3U.
plg-gh-mdpuma-dune-plugin-altiptv.c054 · code · unknown; прошивка — · Запись результата parse_m3u содержит URL, caption, logo, group, tvg_name, user_agent, dune_zoom, group_title, id, parental и epg_shift.
plg-hdtv-novosib-iptv.c014 · code · unknown; прошивка — · Плагин разбирает плейлисты .m3u и .xspf; в m3u читает атрибуты logo, a_id, id, pass, epg_shift и group_id, в xspf — title, location, myiptv:id, epg_shift, logo, group_id. ↩
plg-hdtv-surface-family.c035 · code · unknown; прошивка — · wwcam load_channels() читает локальный channel_list.xml из install_dir_path + Config::CHANNEL_LIST_URL, затем добавляет каналы из двух M3U-плейлистов https://iptvmaster.ru/webcams.m3u и https://iptvlist.ru/2762.m3u (строки EXTINF и URL), после чего добавляет tv_item из XML.
plg-hdtv-surface-family.c040 · code · unknown; прошивка — · В wwcam методы parse_m3u() (плейлист http://urlcut.ru/FreeWebCamsWorld.m3u) и clean_up_text_for_display() определены, но load_channels() их не вызывает.
plg-hdtv-web-launchers.c055 · code · unknown; прошивка — · rtmp-player — не плагин, а набор из rtmps.xml и SWF rtmp_player0_2__1920x1080__720p.swf; rtmps.xml содержит 40 элементов channel с name и link (все ссылки rtmp://).
plg-hdtv-web-launchers.c076 · forum · unknown; прошивка — · По словам 300n, rtmp-player сделан на Flash: запускаемый файл rtmp_player0_1…swf, рядом xml-файл с именами каналов и ссылками; в версии 0.2 добавлены неограниченное число каналов, управление звуком и формат 3x4. ENTER показывает список каналов, RETURN выходит из списка.
plg-hdtv-101-ru.c025 · code · unknown; прошивка — · Избранное хранится в plugin_cookies->favorite_channels как строка id через запятую; операции PLUGIN_FAVORITES_OP_ADD, REMOVE, MOVE_UP и MOVE_DOWN меняют массив, после чего выполняется invalidate_folders для TvFavoritesScreen. ↩↩
plg-hdtv-altv.c021 · code · unknown; прошивка — · Разобранный EPG кэшируется в /tmp/channel__ через serialize; при повторном запросе того же дня файл читается и unserialize вместо сети. ↩↩
plg-gh-kocourkuba-proiptv.c047 · code · unknown; прошивка — · При is_ext_epg_enabled() get_tv_info пишет channel_ids.txt (строки =-) во временный каталог и задаёт PluginTvInfo::ext_epg_enabled=true, ext_epg_base_url — CGI-адрес плагина, ext_epg_channel_ids_url — CGI channels; www/cgi-bin/channels отдаёт $FS_PREFIX/tmp/plugins/<плагин>/channel_ids.txt или 404. ↩↩
plg-hdtv-altv.c014 · code · unknown; прошивка — · Идентификатор канала — md5 от strtolower(caption) без переводов строк, двойных кавычек и пробелов; по этому хешу плагин берёт число из таблицы channels_id, иначе — 1000 + порядковый номер, и строит id вида _.
plg-hdtv-altv.c015 · code · unknown; прошивка — · Таблицу соответствий caption → id плагин пытается получить через HD::http_get_document(M3U_ID_FILE_URL), при ошибке читает локальный data/channels_id и разбирает его через unserialize.
plg-hdtv-liteiptv.c033 · code · unknown; прошивка — · Идентификатор канала — md5 от названия, приведённого HD::get_id_key к нижнему регистру с удалением пробелов (включая неразрывный), дефисов, кавычек, точек и переводов строк; найденное соответствие в vsetv_channels_id или my_channels_id заменяет этот ключ. ↩
plg-hdtv-smart-vod--link-api.c067 · code · unknown; прошивка — · mUrl::createIdKey нормализует название канала (кириллица → латиница, удаление пробелов и знаков) и возвращает md5; mUrl::parse_yturl извлекает 11-символьный id из youtu.be, youtube.com/embed, /v/, /watch?v= или /watch?<другие параметры>&v=. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c051 · code · unknown; прошивка — · make_id_key вычисляет md5 от strtolower названия после удаления \r, \n, двойных кавычек и пробелов. ↩
plg-hdtv-zlostnyi-iptv.c038 · code · unknown; прошивка — · Из #EXTINF bcu берёт название (после первой запятой), tvg-logo (по умолчанию plugin_file://icons/bcu_logo.png), tvg-id (пробелы → %20) и group-title (по умолчанию «Разное»); id канала — base64(название) . "&&" . tvg-id.
plg-hdtv-zlostnyi-iptv.c051 · code · unknown; прошивка — · EPG bcu: из id канала берётся часть после «&&» (tvg-id); программа на день запрашивается с http://api.zlostnyi.tech/bcu/methods/epg/_date=.json; при исключении — с http://api.zlostnyi.tech/univ/methods/epg/no_epg_date=<дата>.json, при второй ошибке — пустой массив.
plg-hdtv-kaban.c016 · code · unknown; прошивка — · Каналы разных плейлистов объединяются по ключу md5(strtolower(caption без пробелов, кавычек и переводов строк)); id канала — из плейлиста, иначе из channels_id_parsed по тому же ключу; URL хранятся по источнику, а выбранный источник — cookie src_<ключ>, если он есть среди urls канала. ↩
plg-hdtv-evolutiontv.c019 · code · unknown; прошивка — · Каналы из разных плейлистов объединяются по md5 от caption в нижнем регистре без пробелов, кавычек и переводов строк; URL хранятся по имени источника, выбранный источник — cookie src_<ключ>, если он есть среди urls канала. Группа берётся из group_id плейлиста, иначе из group_defs по id. ↩
plg-hdtv-liteiptv.c038 · code · unknown; прошивка — · Для одного канала плагин хранит несколько пар «URL потока → название канала» в global_channels[id]['urls'] и ['caption']; у нескрытого канала первый источник создаёт объект SmartChannel, остальные добавляются к тому же id. ↩
plg-hdtv-novosib-iptv.c015 · code · unknown; прошивка — · Каналы из разных плейлистов склеиваются по ключу md5(strtolower(caption без пробелов, кавычек и переводов строк)); URL каждого источника складываются в global_channels[key]['urls'][source]. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c105 · code · unknown; прошивка — · В ветке загрузки group_tv=1/4 идентификатор DemoChannel собирается как alt__%; при double_tv=2 добавляется компонент crc32 URL. ↩
plg-hdtv-kaban.c023 · code · unknown; прошивка — · Экран списка каналов обрабатывает info (показывает source и URL), popup_menu (выбор источника через cookie src_), select_source_ и add_favorite (PLUGIN_FAVORITES_OP_ADD); в ветке info вызывается $this->tv->get_tv_stream_url($plugin_cookies) с одним аргументом: $plugin_cookies попадает в $playback_uid, а второй аргумент (&$plugin_cookies) не передан. ↩
plg-hdtv-altv.c013 · code · unknown; прошивка — · Канал привязывается к группам по tv_channel/tv_categories/tv_category_id: плагин ищет группу по intval идентификатора и добавляет канал в неё и группу в канал. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c050 · code · unknown; прошивка — · group_id вычисляется через make_id_key(group_name), иконка — getIkonPath(group_name); если group_id ещё нет в groups, создаётся DefaultGroup и добавляется в groups, иначе берётся существующая; затем канал добавляется в группу, а группа — в канал. ↩
plg-hdtv-megaradio.c048 · code · unknown; прошивка — · Новая категория каналов получает id md5(имени), сохраняется в group_names, после чего плагин открывает выбор PNG-иконки для этой категории. ↩
plg-hdtv-freetv.c049 · code · unknown; прошивка — · Обычные группы каналов заданы списком из 15 названий (Общие, Кино и сериалы, Кинозал, Познавательные, Спортивные, Детские, Развлекательные, Музыка и стиль, Бизнес и новости, Региональные, Германия, Армения, Азербайджан, Зарубежные, Корзина); канал попадает в группу, только если его group-title совпадает с соответствующим названием сервера из cats_on_server, а «Корзина» получает индекс id_bin.
plg-hdtv-freetv.c073 · code · unknown; прошивка — · Помимо 15 обычных групп, DemoTv::load_channels добавляет FavoritesGroup с id __favorites (если is_favorites_supported()) и AllChannelsGroup с подписью из FreeTvConfig.
plg-hdtv-liteiptv.c028 · code · unknown; прошивка — · SmartConfig::get_group формирует 14 базовых названий групп (%tr%t22…%tr%t35), добавляет пользовательские из group_names со сдвигом 14 и группу 8888 «Без группы».
plg-hdtv-liteiptv.c034 · code · unknown; прошивка — · Группа канала берётся из grups_id по id без суффикса _HD, иначе назначается 8888; при pin = 1111 защита снимается, иначе канал защищён по parental_group или parental.
plg-hdtv-novosib-iptv.c023 · code · unknown; прошивка — · Группы каналов строятся из AllChannelsGroup, FavoritesGroup и отдельной группы 99 «HD Каналы»; канал с caption, содержащим « HD», дополнительно добавляется в группу 99. ↩
plg-hdtv-zlostnyi-iptv.c041 · code · unknown; прошивка — · Группа создаётся при первом появлении group-title; её иконка — http://zlostnyi.tech/dune/bcu/icons/.png с сервера автора. ↩
plg-hdtv-jurt.c019 · code · unknown; прошивка — · BtvTv::load_channels создаёт группы «Избранное» и «Все каналы» с иконками по цветам (eb178f и ffffff), а категории API — как DefaultGroup с цветом из поля color. ↩↩
plg-hdtv-freetv.c050 · code · unknown; прошивка — · Метаданные каналов (title, description, logoURL) берутся из http://195.189.238.120/tvguide/2/channels.json?channel=<ids>&fields=title,description,logoURL; в запрос идут id без суффикса _N.
plg-hdtv-freetv.c051 · code · unknown; прошивка — · Иконка канала: logotip из плейлиста; если он начинается с https — через CGI img.sh, иначе http://<logo>; без logotip — logoURL из channels.json; иначе plugin_file://icons/empty.jpg.
plg-hdtv-freetv.c072 · code · unknown; прошивка — · В строку channel_ids для запроса метаданных channels.json попадают только каналы с intval(cn-id) > 1000; перед запросом из неё удаляются суффиксы _N.
plg-hdtv-moidom.c015 · code · unknown; прошивка — · test_free_space сравнивает свободное место в каталоге установки (disk_free_space(DuneSystem::$properties['install_dir_path'])) с числом из /size.txt; при достаточном месте disk_space=1. get_archive при disk_space=1 отдаёт DefaultArchive('ico', ARCHIVE_URL), иначе null; get_icon берёт URL из архива, иначе http://iptv.new-rus.tv/_logos/duneLogos/CACHE_NEWRUS/. ↩
plg-hdtv-101-ru.c016 · code · unknown; прошивка — · DemoConfig задаёт TV_FAVORITES_SUPPORTED = true, CHANNEL_LIST_URL '/www/lib/channel_list.xml', подписи групп '%tr%all_channel' и '%tr%tv_fav', иконки icons/icon/all.png и icons/icon/fav.png.
plg-hdtv-101-ru.c025 · code · unknown; прошивка — · Избранное хранится в plugin_cookies->favorite_channels как строка id через запятую; операции PLUGIN_FAVORITES_OP_ADD, REMOVE, MOVE_UP и MOVE_DOWN меняют массив, после чего выполняется invalidate_folders для TvFavoritesScreen.
plg-hdtv-101-ru.c026 · code · unknown; прошивка — · FavoritesGroup::get_channels() вызывает $this->tv->get_fav_channel_ids() без аргумента plugin_cookies, тогда как интерфейс Tv объявляет get_fav_channel_ids(&$plugin_cookies).
plg-hdtv-megaradio.c030 · code · unknown; прошивка — · load_channels добавляет группу избранного FavoritesGroup и группу всех каналов AllChannelsGroup, а канал с непустым gid получает DefaultGroup с иконкой SmartConfig::get_plugin_ico(gid).
plg-hdtv-megaradio.c039 · code · unknown; прошивка — · Избранные ТВ-каналы хранятся в HD::get_items('favorite_channels') и сохраняются через HD::save_items; change_tv_favorites поддерживает добавление, удаление и перестановку вверх/вниз с инвалидацией TvFavoritesScreen.
plg-hdtv-megaradio.c039 · code · unknown; прошивка — · Избранные ТВ-каналы хранятся в HD::get_items('favorite_channels') и сохраняются через HD::save_items; change_tv_favorites поддерживает добавление, удаление и перестановку вверх/вниз с инвалидацией TvFavoritesScreen. ↩
plg-hdtv-surface-family.c028 · code · unknown; прошивка — · Избранные каналы Radiorecord.ru хранит в файле favorite_channels каталога данных через HD::get_items()/HD::save_items(), а rmfon.pl и wwcam — в cookie favorite_channels (строка id через запятую) через plugin_cookies. ↩
plg-hdtv-101-ru.c032 · code · unknown; прошивка — · Экран избранного: ENTER и PLAY — tv_play; B_GREEN — move_backward_favorite («Вверх»), C_YELLOW — move_forward_favorite («Вниз»), D_BLUE — remove_favorite, POPUP_MENU — меню с пунктом «Удалить из избранного».
plg-hdtv-101-ru.c033 · code · unknown; прошивка — · При наличии selected_media_url обработчик TvFavoritesScreen по move_backward_favorite выполняет PLUGIN_FAVORITES_OP_MOVE_UP, по move_forward_favorite — MOVE_DOWN, по remove_favorite — REMOVE; после каждой операции перестраивает список со сдвигом выделения -1, +1 или 0, без selected_media_url возвращает null.
plg-hdtv-101-ru.c034 · code · unknown; прошивка — · Список избранного пропускает пустые id (preg_match '/^\s*$/') и каналы, которых нет в текущем списке: get_channel в try/catch, при Exception пишет hd_print Warning и переходит к следующему.
plg-hdtv-liteiptv.c035 · code · unknown; прошивка — · Скрытие канала задаётся списками hide_ch (по id) и hide_groups (по группе); название заменяется значением из объединения vsetv_channels и vsetv_list по id (при совпадении побеждает vsetv_list), а из названия удаляются подстроки из cutname_list через str_ireplace. ↩↩
plg-hdtv-megaradio.c046 · code · unknown; прошивка — · Скрытие канала добавляет его id в HD::get_items('hide_ch') и сохраняет; cleer_hide_all очищает hide_ch, cleer_hide удаляет один ключ.
plg-hdtv-megaradio.c053 · code · unknown; прошивка — · Поиск по плейлисту run_search перебирает my_playlist через mb_stripos, помечает скрытые каналы суффиксом «(hide)» и по действию jump обновляет папку all_channels с переходом на найденный индекс.
plg-hdtv-liteiptv.c034 · code · unknown; прошивка — · Группа канала берётся из grups_id по id без суффикса _HD, иначе назначается 8888; при pin = 1111 защита снимается, иначе канал защищён по parental_group или parental. ↩
plg-hdtv-megaradio.c029 · code · unknown; прошивка — · load_channels строит каналы из HD::get_items('my_playlist') и группы из grups_id; каналы, отмеченные в hide_ch, пропускаются; группа канала берётся из grups_id (иначе all), защита — из parental при pin, отличном от 1111, буферизация — из cookie buf_time.
plg-hdtv-megaradio.c032 · code · unknown; прошивка — · get_tv_playback_url возвращает streaming_url канала, но при is_protected и несовпадении protect_code с pin подменяет URL на /icons/nopass.png.
plg-hdtv-megaradio.c047 · code · unknown; прошивка — · Родительский контроль канала хранится в HD::get_items('parental') как отметка для channel_id; add_parental_apply при заданном selected_media_url и отсутствии id в parental добавляет отметку, а del_parent_apply удаляет её только при совпадении введённого pin с pin из cookie.
plg-hdtv-novosib-iptv.c024 · code · unknown; прошивка — · Cookie show_xxx=no скрывает каналы с pass != 0; при show_xxx=yes добавляются все; порог pass берётся из m3u-атрибута pass. ↩
plg-hdtv-liteiptv.c036 · code · unknown; прошивка — · Поддерживаются четыре режима сортировки: 0 — без сортировки, 1 — по названию, 2 — по номеру из chnmbr_list, 3 — номер и алфавит; для режимов 2 и 3 плагин сохраняет порядок id в chnmbr_list.
plg-hdtv-liteiptv.c077 · code · unknown; прошивка — · Сортировка списка каналов циклически переключает cookie sort_channels 0→1→2→3→0; в группе __all_channels при режимах 2 и 3 меню предлагает подъём, спуск, перенос в начало/конец и очистку порядка через chnmbr_list.
plg-hdtv-megaradio.c044 · code · unknown; прошивка — · move_item меняет местами выбранный канал с соседним в массиве my_playlist (шаг 1 — вниз, иначе вверх), пересохраняет массив и инвалидирует tv_group_list. ↩
plg-hdtv-megaradio.c049 · code · unknown; прошивка — · group_move записывает выбранную категорию group_type в grups_id для всех выделенных каналов (select_id) либо для текущего канала, пустое значение удаляет запись. ↩
plg-hdtv-megaradio.c053 · code · unknown; прошивка — · Поиск по плейлисту run_search перебирает my_playlist через mb_stripos, помечает скрытые каналы суффиксом «(hide)» и по действию jump обновляет папку all_channels с переходом на найденный индекс.
plg-hdtv-megaradio.c050 · code · unknown; прошивка — · При существующей папке закачки save_m3u формирует «#EXTM3U» и запускает пошаговое сохранение run_save_m3u, который для каждого не-youtube канала разрешает поток через SmartConfig::get_radio_stream; файл MegaRadio.m3u пишет unloading_m3u в папку smbtree::get_folder_info('dload_dir_path').
doc-sdk-plugins--operations.c090 · doc · any-documented; прошивка — · Если PluginTvChannel::playback_url_is_stream_url == false, для получения реального stream URL нужен дополнительный вызов get_tv_stream_url() с playback URL ↩
doc-sdk-plugins--operations.c096 · doc · any-documented; прошивка — · При PluginTvChannel::playback_url_is_stream_url = TRUE playback URL трактуется как stream URL и get_tv_stream_url() никогда не вызывается ↩
doc-sdk-plugins--operations.c093 · doc · any-documented; прошивка — · Разделение playback URL и stream URL нужно, когда плагин не может дать фиксированный URL потока и получает его удалённым вызовом, результат которого каждый раз разный ↩
fw-tv188b-261021-0117-r25--shell-ext--ui-lib--tv-vod.c018 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractTv::get_tv_stream_url по умолчанию бросает Exception 'Error: get_tv_stream_url() is not supported.', а get_tv_playback_url загружает каналы и возвращает get_channel($channel_id)->get_streaming_url(), не используя archive_ts и protect_code. ↩
plg-hdtv-101-ru.c023 · code · unknown; прошивка — · AbstractTv::get_tv_stream_url() всегда бросает Exception с текстом 'Error: get_tv_stream_url() is not supported.'.
plg-hdtv-101-ru.c024 · code · unknown; прошивка — · AbstractTv::get_tv_playback_url() загружает каналы, берёт канал по id и возвращает его streaming_url; параметры archive_ts и protect_code не используются.
plg-hdtv-101-ru.c024 · code · unknown; прошивка — · AbstractTv::get_tv_playback_url() загружает каналы, берёт канал по id и возвращает его streaming_url; параметры archive_ts и protect_code не используются. ↩
plg-hdtv-rain-tv.c012 · code · unknown; прошивка — · RainTV extends AbstractTv и вызывает parent::__construct(true, false, true): режим MODE_CHANNELS_N_TO_M, избранное выключено, playback_url_is_stream_url включён.
plg-hdtv-rain-tv.c018 · code · unknown; прошивка — · RainTV::get_tv_playback_url перебирает $this->channels и возвращает get_streaming_url() первого канала с совпавшим id; archive_ts и protect_code не используются.
plg-hdtv-rain-tv.c021 · code · unknown; прошивка — · Config::$ICONS_GENRES_MAP в 43Kanal содержит один канал: id 0, name «"43 Канал" г.Туапсе», stream_url http://sochi-strk.ru:1936/strk/43Kanal.stream/playlist.m3u8, icon_url http://sochinskayatrk.ru/logs/43Kanal.png.
plg-hdtv-rain-tv.c022 · code · unknown; прошивка — · Config::$ICONS_GENRES_MAP в CTPK содержит один канал: id 0, name «"СТРК Сочи-HD» без закрывающей кавычки, stream_url http://sochi-strk.ru:1936/strk/strk.stream/playlist.m3u8, icon_url http://sochinskayatrk.ru/logs/STRK_LOG.png.
plg-hdtv-jurt.c020 · code · unknown; прошивка — · get_tv_playback_url для архива (archive_ts > 0) возвращает BTV_PROGRAM_URL, для live — BTV_CHANNEL_URL; protect_code игнорируется, проверка кода закомментирована. ↩↩
plg-hdtv-jurt.c021 · code · unknown; прошивка — · get_tv_stream_url вызывает api_get_stream_url: снимает префикс http://ts:// или http://mp4://, запрашивает API, берёт doc->uri до первого пробела или кавычки и заменяет http/ts:// на http://. ↩
plg-hdtv-freetv.c067 · code · unknown; прошивка — · В DemoTv объявлены методы для API провайдеров: get_voka — api.voka.tv/v1/devices.json и channels/<id>/stream.json; get_spbtv — spbtv.com/vplayer и api.spbtv.com/v1/...; token_starnet — token.stb.md/api/Flussonic/stream/N4_H264/metadata.json; get_telecola — o96889no.beget.tech/telecola.php?get=sid; get_slotos — tv.voon.eu (логин pacunaju%40trimsj.com, пароль zx12345678) через прокси proxy-nossl.antizapret.prostovpn.org:29976; в get_tv_playback_url вызываются get_spbtv, token_starnet и get_telecola, а get_voka и get_slotos — нет. ↩
plg-hdtv-surface-family.c033 · code · unknown; прошивка — · rmfon.pl get_tv_stream_url() запрашивает http://www.rmfon.pl/stacje/flash_aac_.xml.txt, перебирает playlist/item, заменяет https на http, открывает каждый URL через fopen(), читает 500 байт и возвращает первый URL с непустым ответом; если ни один не ответил, функция завершается без return. ↩
plg-hdtv-surface-family.c103 · code · unknown; прошивка — · У SomaFM playback_url_is_stream_url = true, а lib/tv/abstract_tv.php изменён: get_tv_playback_url() не возвращает streaming_url напрямую, а запрашивает его через HD::http_get_document(), извлекает regex «File\d=(.*)» все совпадения и возвращает случайное; если совпадений нет — plugin_file-путь install_dir_path/www/lib/logo/nostream.png. ↩
plg-hdtv-surface-family.c108 · code · unknown; прошивка — · У LSS playback_url_is_stream_url = false. get_tv_stream_url() при совпадении «(.?)::::(.)» вызывает функцию по имени из HD::$matches[1] с аргументом matches[2], иначе возвращает URL как есть; при совпадении «127.0.0.1:81/cgi-bin» дополнительно вызывает HD::get_codec_start_info(). get_tv_playback_url() при archive_ts > 0 дописывает к URL «|||dune_params|||hls_seek_live:1». ↩↩
plg-hdtv-surface-family.c037 · code · unknown; прошивка — · wwcam при воспроизведении канала с URL вида streamdays_pars:<ссылка> передаёт ссылку в HD::get_stream_link() и возвращает полученный прямой поток; перед возвратом печатает URL через echo.
plg-hdtv-surface-family.c038 · code · unknown; прошивка — · HD::get_stream_link() в wwcam разбирает streamdays двумя путями: для ссылки ::streamdays:: берёт как страницу streamdays, иначе запрашивает саму ссылку и находит streamdays.com/… → http://live.streamdays.com/<часть>; затем берёт iframe src, запрашивает его с Referer, берёт , запрашивает поток и при наличии m3u8 возвращает найденный URL m3u8. Если разобрать страницу, iframe или не удалось — plugin_file://logo/logo.png.
plg-hdtv-novosib-iptv.c017 · code · unknown; прошивка — · get_tv_playback_url для источника novosib берёт cookie novosib (по умолчанию '176.51.0.0', если не задан), разбирает URL канала через explode('/', …) и получает девятый элемент $udp[8] — host:port, считая 'drm:' и пустой элемент после '//'; str_replace заменяет в URL все вхождения этой строки на cookie novosib + ':1234'. ↩
plg-hdtv-megaradio.c029 · code · unknown; прошивка — · load_channels строит каналы из HD::get_items('my_playlist') и группы из grups_id; каналы, отмеченные в hide_ch, пропускаются; группа канала берётся из grups_id (иначе all), защита — из parental при pin, отличном от 1111, буферизация — из cookie buf_time. ↩
plg-hdtv-altv.c017 · code · unknown; прошивка — · Если cookie buf_time не равно '0', к playback URL добавляется суффикс '|||dune_params|||buffering_ms:'. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c079 · code · unknown; прошивка — · AceSearchTv::ace_search устанавливает статическое AceSearchChannel::$buffering_ms из настройки buffering_ms; комментарий автора называет это hack.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c080 · code · unknown; прошивка — · AceSearchChannel хранит номер канала и acestream_data, возвращает номер через get_number(), а get_buffering_ms() — статическое значение $buffering_ms.
plg-hdtv-folder-cache-vod.c093 · code · unknown; прошивка — · При playlistItem=0 и liveBroadcastContent=live parse_season вызывает Youtube::retrieve_playback_url и перебирает $media_urls[1] (snippet.resourceId.videoId) и $media_urls[2] (URL); при наличии $plugin_cookies-> ставит [NEW] начиная с первого videoId, которого нет в списке (флаг не сбрасывается). ↩
doc-sdk-plugins--operations.c067 · doc · any-documented; прошивка — · PluginTvChannel::buffering_ms — время предбуферизации при воспроизведении канала ↩
doc-sdk-plugins--operations.c064 · doc · any-documented; прошивка — · PluginTvChannel::have_archive включает архив канала; тогда get_tv_playback_url() должна поддерживать архив ↩
doc-sdk-plugins--operations.c071 · doc · any-documented; прошивка — · PluginTvChannel::archive_past_sec — максимальная глубина архива от текущего момента в прошлое, archive_delay_sec — интервал (в секундах) от текущего момента до ближайшего момента в прошлом, для которого архив доступен ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c046 · code · unknown; прошивка — · Для строки, совпадающей с /^#EXTINF:[^,]*,(.+)$/, load_channels берёт caption из группы 1 и удаляет из него кавычки; при наличии в той же строке tvg-logo, tvg-id, group-title и catchup-days заполняет logo, id, group_name и past_epg_days.
plg-hdtv-jurt.c018 · code · unknown; прошивка — · BtvTv использует AbstractTv::MODE_CHANNELS_1_TO_N; в load_channels он принудительно ставит have_archive=true для всех каналов, хотя рядом есть закомментированное чтение c->have_archive.
plg-gh-mdpuma-dune-plugin-altiptv.c059 · code · unknown; прошивка — · При archive_ts>0 get_tv_playback_url строит URL из таблицы arc с utcstart и utcend, ограничивая конец меньшим из текущего времени и начала+35999 секунд. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c064 · code · unknown; прошивка — · AbstractTv::get_day_epg преобразует элементы итератора в PluginTvEpgProgram с start_tm_sec, end_tm_sec, name и description.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c118 · code · unknown; прошивка — · AbstractTv::get_day_epg преобразует элементы EpgIterator в PluginTvEpgProgram с полями start_tm_sec, end_tm_sec, name и description.
plg-hdtv-101-ru.c035 · code · unknown; прошивка — · AbstractTv::get_day_epg() перебирает итератор get_day_epg_iterator и отдаёт массив с ключами PluginTvEpgProgram::start_tm_sec, end_tm_sec, name и description из методов элемента EPG.
fw-tv188b-260827-0003-r24--plugin-loader--php-runtime--opexec.c026 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Запросы get_day_epg (тип 5) исполнитель дедуплицирует и ограничивает по числу: если такой же день уже загружается активной операцией — «ignoring epg req, day already loading as %s» и запрос не создаётся; такой же запрос в очереди удаляется («q-removing %s: same EPG day request»); лишние удаляются с «q-removing #%d, %s: too many epg requests». ↩
doc-sdk-plugins--gui-actions.c131 · doc · any-documented; прошивка — · PluginUpdateEpgAction обновляет EPG, закэшированный в памяти плеера; три сценария: clear=TRUE без остальных полей — очистить весь кэш; clear=TRUE с channel_id (и, по желанию, programs на день day_start_tm_sec) — очистить кэш канала и положить новый список; clear=FALSE с channel_id, day_start_tm_sec, programs — просто обновить программу канала на день ↩
plg-dc-widget-ext--lib.c069 · code · unknown; прошивка — · EpgIterator выбирает программы, для которых get_start_time попадает в включительный интервал from <= t <= till. ↩
plg-hdtv-rain-tv.c026 · code · unknown; прошивка — · EPG разбирается как /xml/tv/*: берутся только узлы programme, имя — title; у start вида YYYYMMDDHHMMSS +TZ берётся часть до ' +' и форматируется как MM/DD/YYYY HH:MM, strtotime разбирает её в часовом поясе Europe/Moscow (смещение +TZ не применяется); программа оформляется DefaultEpgItem(name, '', start, -1), а EpgIterator ограничивается сутками day_start_ts…day_start_ts+86400. ↩↩
plg-hdtv-peerstv.c014 · code · unknown; прошивка — · EPG-программа заканчивается временем следующей программы, а последняя — start+3600; в iterator попадают только программы с началом в [day_start_ts, day_start_ts+86400]. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c061 · code · unknown; прошивка — · get_day_epg_iterator возвращает EpgIterator с границами day_start_ts и day_start_ts+100400. ↩
plg-hdtv-101-ru.c097 · code · unknown; прошивка — · EPG DI.FM дополняется записью On AIR/music на время started+length элемента $di_object[0] (первого в ответе), сортируется по времени, каждый элемент становится DefaultEpgItem(name, desc, time + epg_shift, -1), результат отдаётся через EpgIterator на диапазон day_start_ts … day_start_ts + 100400. ↩
plg-hdtv-plugtv.c021 · code · unknown; прошивка — · Разбор EPG общий: регулярное выражение выделяет строки «ЧЧ:ММ текст», имя и описание делятся по «|», время собирается как strtotime("$epg_date $time $local_tz") + $ch_shift (зависит от источника), к началу прибавляется $epg_shift, при переходе через полночь прибавляются сутки, затем массив сортируется по времени и превращается в DefaultEpgItem с finish_time=-1 и EpgIterator с границами day_start_ts-локальное смещение и day_start_ts+100400. ↩
plg-hdtv-altv.c020 · code · unknown; прошивка — · При отсутствии кэша EPG для каналов с id < 1000 плагин берёт с vsetv.com по шаблону schedule_channel_day_nsc_1.html, перекодирует из WINDOWS-1251 в UTF-8, вырезает HTML и разбирает строки времени и названия.
plg-hdtv-altv.c023 · code · unknown; прошивка — · Для каналов с внутренним id >= 1000 get_day_epg_iterator сразу возвращает пустой массив (у них нет соответствия в vsetv).
plg-hdtv-kaban.c020 · code · unknown; прошивка — · При отсутствии кэша /tmp/channel_ для канала с ненулевым id<1000 get_day_epg_iterator скачивает HTML vsetv.com, перекодирует WINDOWS-1251→UTF-8, заменяет div-классы desc/onair/pasttime/time и br на разделители, извлекает время и название регуляркой, а результат сериализует в /tmp/channel_. ↩↩
plg-hdtv-liteiptv.c047 · code · unknown; прошивка — · HD::get_vsetv_epg при отсутствии файла кэша скачивает страницу vsetv schedule_channel_daynsc_1.html, перекодирует WINDOWS-1251 в UTF-8, подставляет данные jquery-gs.js и кэширует результат в tmp_dir_path/channel_ через serialize. ↩↩
plg-hdtv-pirates-radio.c033 · code · unknown; прошивка — · get_day_epg_iterator отделяет числовой id канала после "_" и для id >= 1000 сразу возвращает пустой массив.
plg-hdtv-pirates-radio.c039 · code · unknown; прошивка — · Для канала с числовым id < 1000 при отсутствии кэша EPG плагин запрашивает vsetv.com по шаблону schedule_channel_day_nsc_1.html, перекодирует ответ из WINDOWS-1251 в UTF-8, заменяет HTML-блоки разделителями, снимает теги и разбирает строки регуляркой "ЧЧ:ММ текст".
plg-hdtv-plugtv.c024 · code · unknown; прошивка — · Внешний EPG обоих плагинов берётся с vsetv.com: newworld — schedule_channel_1158, trofey — schedule_channel_1098; страница перекодируется из WINDOWS-1251 в UTF-8, заменяется набором regex и очищается strip_tags. ↩
plg-hdtv-smart-vod--link-api.c066 · code · unknown; прошивка — · mUrl::get_vsetv_epg запрашивает http://www.vsetv.com/schedule_channel_daynsc_1.html, заменяет иконки времени на 0/5, разбирает время, название и описание и кэширует serialize в файл channel_. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c112 · code · unknown; прошивка — · HD::get_day_epg в utils.php обращается к vsetv.com/schedule_channel_day_nsc_1.html и при разборе может выполнить HTTP POST на URL vsetv.com из ответа. ↩
plg-hdtv-novosib-iptv.c025 · code · unknown; прошивка — · Для канала с id 0 get_day_epg_iterator сразу возвращает пустой массив; для id 1..1199 EPG берётся с vsetv (WINDOWS-1251 → UTF-8, разбор HTML), для id >= 1200 — из tvsapi.cellmp.de с User-Agent Apache-HttpClient/UNAVAILABLE (java 1.4) и JSON-полями anfangsdatum/titel/genre/jahr/land. ↩↩↩
plg-hdtv-kaban.c021 · code · unknown; прошивка — · При отсутствии кэша /tmp/channel__ для канала с id>=1000 EPG берётся с http://tvsapi.cellmp.de/getProgram_1_3.php?date=<дата>&channel=[""]&time=05:00 с User-Agent 'Apache-HttpClient/UNAVAILABLE (java 1.4)'; BOM срезается, JSON разбирается, время — strtotime(' CEST'), название — titel, описание — genre+jahr+land. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c071 · code · unknown; прошивка — · В своей ветке EPG DemoM3uTv запрашивает расписание через http://tvsapi.cellmp.de/getProgram_1_3.php с идентификатором канала и параметрами даты. ↩
plg-hdtv-evolutiontv.c022 · code · unknown; прошивка — · get_day_epg_iterator поддерживает два источника: при epg_source=1 для ненулевого числового id<1000 — vsetv.com, иначе tvsapi.cellmp.de; при epg_source=2 — TVheadend по адресу http://:9981/epg?start=0&limit=200&channel=. Для TVheadend ответ берётся с первого '[' без последнего символа и разбирается json_decode; времена и названия берутся из start/title/description. ↩↩
plg-gh-mdpuma-dune-plugin-altiptv.c065 · code · unknown; прошивка — · get_day_epg_iterator выбирает EPG по числовым диапазонам id; для 12000–12999 назначает epg_type=13 (point.md), если не выбран JTV.
plg-gh-mdpuma-dune-plugin-altiptv.c067 · code · unknown; прошивка — · В своей ветке EPG DemoM3uTv запрашивает расписание через http://www.teleman.pl/program-tv/stacje/ с идентификатором канала и параметрами даты.
plg-gh-mdpuma-dune-plugin-altiptv.c072 · code · unknown; прошивка — · В своей ветке EPG DemoM3uTv запрашивает расписание через http://tv.mail.ru/ajax/channel/ с идентификатором канала и параметрами даты.
plg-hdtv-plugtv.c020 · code · unknown; прошивка — · get_day_epg_iterator выбирает источник EPG по cookie epg_server: '1' — ET::get_epg_vsetv, '2' — EPG провайдера (get_epg_newworld или get_epg_trofey); по умолчанию '1'.
plg-hdtv-plugtv.c031 · code · unknown; прошивка — · Экран настроек DemoSetupScreen содержит комбобоксы show_tv (Показать/Спрятать), epg_server (Внешний источник/От провайдера), epg_shift (от -12 до 12 часов), epg_font (Нормальный/Мелкий, хранится в set_font), buf_time (0…10000 мс), кнопки информации о плагине и канале и перезагрузки.
plg-hdtv-evolutiontv.c022 · code · unknown; прошивка — · get_day_epg_iterator поддерживает два источника: при epg_source=1 для ненулевого числового id<1000 — vsetv.com, иначе tvsapi.cellmp.de; при epg_source=2 — TVheadend по адресу http://:9981/epg?start=0&limit=200&channel=. Для TVheadend ответ берётся с первого '[' без последнего символа и разбирается json_decode; времена и названия берутся из start/title/description.
plg-hdtv-evolutiontv.c015 · code · unknown; прошивка — · parse_id, кроме vsetv_ (число <1000) и tvs_, поддерживает новый префикс moi_: значение после moi_ возвращается как id канала; ветка tvs_ из-за проверки $channel_id === true не возвращает id.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c059 · code · unknown; прошивка — · get_day_epg_iterator запрашивает file_get_contents http://ott.tv.planeta.tc/epg/program.xml?channelId=$channel_id&fields=desc&extended и разбирает ответ simplexml_load_string.
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c060 · code · unknown; прошивка — · В цикле по programme get_day_epg_iterator берёт start/stop через strtotime, оставляет программы с start >= day_start_ts и start < day_start_ts+86400 и создаёт DefaultEpgItem(title, desc, start, stop).
plg-hdtv-jurt.c022 · code · unknown; прошивка — · EPG запрашивается по BTV_EPG_URL с датой в формате %d.%m.%Y (gmstrftime); поля programs begin_time/name/description превращаются в DefaultEpgItem с end=-1. ↩
plg-hdtv-moidom.c016 · code · unknown; прошивка — · get_day_epg_iterator вычисляет часовой пояс командой date +%z (часы и минуты), берёт дату gmstrftime('%d%m%y'), запрашивает epg.php?cid=&day=&with_ts=1&tz=<±hhmm>; элементы epg/item разбираются как progname (первая строка — название, остальное — описание) и ut_start, конец программы -1; границы EpgIterator сдвинуты на tz_sec. ↩↩
plg-hdtv-zlostnyi-iptv.c148 · code · unknown; прошивка — · ottclub берёт EPG у провайдера: адрес http:///api/channel/, где server — хост из первого URL плейлиста, ответ JSON с массивом epg_data (time, name, descr), кэш — /tmp/ottclub_channel_ через serialize. ↩
plg-dc-globaltv.c085 · code · unknown; прошивка — · EPG плагин берёт с http://s1.dune-club.info/plugins/globaltv/epg/: файл channel_ids.txt (строки stream_id = epg_id) и JSON программы по адресу /.
plg-dc-globaltv.c086 · code · unknown; прошивка — · JSON дневного EPG — объект «start_tm → запись» с полями len (по умолчанию 3600), title, sub-title, desc, year.
plg-hdtv-rain-tv.c025 · code · unknown; прошивка — · RainTV::get_day_epg_iterator получает EPG через HD::http_get_document(Config::TV_EPG_URL); при null бросает Exception «Can not fetch movie list», при неразбираемом XML — «Error: can not parse XML document», при корне не 'xml' — «Invalid XML Document».
plg-hdtv-rain-tv.c026 · code · unknown; прошивка — · EPG разбирается как /xml/tv/*: берутся только узлы programme, имя — title; у start вида YYYYMMDDHHMMSS +TZ берётся часть до ' +' и форматируется как MM/DD/YYYY HH:MM, strtotime разбирает её в часовом поясе Europe/Moscow (смещение +TZ не применяется); программа оформляется DefaultEpgItem(name, '', start, -1), а EpgIterator ограничивается сутками day_start_ts…day_start_ts+86400.
plg-hdtv-plugtv.c022 · code · unknown; прошивка — · EPG провайдера newworld получается с http://n-w.tv/all_tv.xml: из узлов programme берутся title, desc и атрибут start, смещение часового пояса из start вычитается, а в текст попадают только программы запрошенной даты.
plg-hdtv-plugtv.c023 · code · unknown; прошивка — · EPG провайдера trofey получается с http://trofey.net/index.php?option=com_tvguide… в формате raw: JSON декодируется, из значений удаляются теги и нормализуются переводы строк, текст склеивается; в get_day_epg_iterator для него задан ch_shift = local_tz_offset - 10800.
plg-hdtv-zlostnyi-iptv.c051 · code · unknown; прошивка — · EPG bcu: из id канала берётся часть после «&&» (tvg-id); программа на день запрашивается с http://api.zlostnyi.tech/bcu/methods/epg/_date=.json; при исключении — с http://api.zlostnyi.tech/univ/methods/epg/no_epg_date=<дата>.json, при второй ошибке — пустой массив.
plg-hdtv-zlostnyi-iptv.c149 · code · unknown; прошивка — · shura берёт EPG с http://epg.propg.net//epg2/; в конфиге закомментирован прежний источник http://s1.tvshka.net//epg/range9-2.json.
plg-hdtv-zlostnyi-iptv.c150 · code · unknown; прошивка — · shara-club берёт EPG с http://api.sramtv.com/epg/read//, при ошибке — с https://api.gazoni1.com/epg/read//; кэш — /tmp/shara_channel_.
plg-hdtv-zlostnyi-iptv.c152 · code · unknown; прошивка — · sharavoz берёт EPG с http://epg.arlekino.tv/api/program?epg=&date=, при сбое — с http://api.program.spr24.net/api/program?epg=&date=; кэш — /tmp/sharavoz_channel_.
plg-gh-mdpuma-dune-plugin-altiptv.c075 · code · unknown; прошивка — · Ветка JTV сохраняет архив url_tvg в /tmp/schedule.zip и извлекает .ndx/.pdt через PHP zip API, перекодируя имена CP866→UTF-8. ↩
plg-hdtv-peerstv.c011 · code · unknown; прошивка — · get_day_epg_iterator скачивает ZIP с DemoConfig::EPG_URL в /tmp/schedule.zip и читает из него пары файлов .ndx/.pdt (имена без расширения — ключ канала); данные кэшируются в памяти не дольше 3600 секунд.
plg-hdtv-peerstv.c012 · code · unknown; прошивка — · Запись .ndx разбирается как 2-байтовое число программ, затем по 12 байт на программу (unpack 'x2/V2time/voffset'); .pdt — 2-байтовая длина заголовка и строка CP1251. Время пересчитывается по формуле от эпохи (при time1<0 добавляется 429.4967296), округляется до 10 с и сдвигается на -7 часов (комментарий «NSK GMT offset»).
plg-hdtv-megaradio.c034 · code · unknown; прошивка — · ЭПГ радиостанции — один элемент DefaultEpgItem с названием «ON AIR» и описанием из поля info плейлиста, где «||» заменяются переводом строки, а «|» — пробелом.
plg-hdtv-megaradio.c035 · code · unknown; прошивка — · get_day_epg_iterator сдвигает начало дня на 10800 секунд назад и задаёт интервал программы 86400 секунд.
plg-hdtv-surface-family.c039 · code · unknown; прошивка — · wwcam get_day_epg_iterator() не использует данные канала: возвращает один DefaultEpgItem «ON AIR» с пустым описанием на день, сдвинутый на -10800 секунд от day_start_ts и длиной 86400 секунд; код чтения description закомментирован.
plg-hdtv-surface-family.c102 · code · unknown; прошивка — · SomaFM строит EPG как одну программу «ON AIR» на сутки: описание берётся из сохранённого aDesc[channel_id], начало сдвинуто на -10800 секунд, конец — начало + 86400.
plg-hdtv-surface-family.c105 · code · unknown; прошивка — · Radiopotok.ru строит EPG как одну программу «ON AIR» на сутки с пустым описанием; начало сдвинуто на -10800 секунд, конец — начало + 86400.
plg-hdtv-101-ru.c096 · code · unknown; прошивка — · DemoTv::get_day_epg_iterator запрашивает историю треков канала с http://api.audioaddict.com/v1/di/track_history/channel/.json?per_page=100, берёт track как name и artist как desc и пропускает записи ADWTAG_, More of the show и Choose premium.
plg-hdtv-101-ru.c097 · code · unknown; прошивка — · EPG DI.FM дополняется записью On AIR/music на время started+length элемента $di_object[0] (первого в ответе), сортируется по времени, каждый элемент становится DefaultEpgItem(name, desc, time + epg_shift, -1), результат отдаётся через EpgIterator на диапазон day_start_ts … day_start_ts + 100400.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c081 · code · unknown; прошивка — · AceSearchChannel::getEpg при непустом acestream_data['epg'] строит DefaultEpgItem из полей name, start, stop, а при отсутствии данных возвращает NULL.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c086 · code · unknown; прошивка — · AceSearchTv::get_day_epg_iterator берёт единственный EPG-элемент канала (getEpg) и оборачивает его в EpgIterator на сутки от day_start_ts.
plg-dc-globaltv.c087 · code · unknown; прошивка — · Если EPG для канала с архивом пуст, плагин подставляет фиктивную программу из часовых интервалов с заголовком-датой (d.m.Y H:i). ↩
plg-hdtv-liteiptv.c046 · code · unknown; прошивка — · get_day_epg_iterator для id без латинских букв запрашивает mUrl::get_vsetv_epg(id без _HD, day_start_ts), а для id с буквами генерирует по одному пункту «On Air» на каждый час от -24 до +23; к времени добавляется cookie epg_shift. ↩
plg-hdtv-kohana-channel.c068 · code · unknown; прошивка — · Канал в Welcome::playTV имеет id '1', group_ids ['0'], number -1, have_archive=false, is_protected=false, past_epg_days/future_epg_days/archive_past_sec/archive_delay_sec/ buffering_ms/timeshift_hours = 0 и playback_url_is_stream_url=true; caption и icon_url задаются в каждом пакете отдельно.
plg-hdtv-kohana-channel.c070 · code · unknown; прошивка — · Welcome::get_day_epg игнорирует аргументы и возвращает пустой массив — EPG у канала нет.
plg-hdtv-surface-family.c030 · code · unknown; прошивка — · Radiorecord.ru get_day_epg_iterator() сразу возвращает array(); расположенный после return код запроса http://history.radiorecord.ru/index-onstation.php и заполнения $this->arcUrl недостижим. ↩
plg-hdtv-pirates-radio.c038 · code · unknown; прошивка — · В обоих списках станций нет тегов num_past_epg_days и num_future_epg_days, поэтому intval(null) даёт 0 и DemoChannel отдаёт платформе 0 дней EPG в обе стороны. ↩
plg-hdtv-evolutiontv.c023 · code · unknown; прошивка — · EPG кэшируется в /tmp/channel__ как serialize-массив; при повторном запросе читается из файла. Итоговый EpgIterator строится по времени start с учётом epg_shift, конец программы — -1. ↩
plg-hdtv-novosib-iptv.c026 · code · unknown; прошивка — · EPG кэшируется в /tmp/channel__; к времени каждого пункта прибавляются cookie epg_shift и epg_shift из плейлиста (в часах × 3600). ↩↩↩
plg-hdtv-pirates-radio.c040 · code · unknown; прошивка — · Для канала с числовым id < 1000 разобранный EPG кэшируется в /tmp/channel__ через serialize; при повторном запросе того же дня файл читается и unserialize вместо сети. ↩
plg-gh-mdpuma-dune-plugin-altiptv.c066 · code · unknown; прошивка — · Ветка point.md читает EPG из tmp_dir_path/channel__, иначе получает страницу point.md и сохраняет сериализованный результат. ↩
plg-hdtv-zlostnyi-iptv.c052 · code · unknown; прошивка — · EPG кэшируется в файле /tmp/bcu_channel_ (serialize массива); если файл есть, сеть не запрашивается; записывается только непустой результат. ↩
plg-dc-globaltv.c171 · code · unknown; прошивка — · MainTv::get_day_eepg кэширует в памяти результат try_get_day_eepg по ch_id и дню; при исключении или отсутствии результата сохраняет пустой массив, а последующие вызовы возвращают сохранённое значение. ↩
plg-hdtv-freetv.c059 · code · unknown; прошивка — · get_day_epg кэширует непустой результат в DuneSystem::$properties[_], а mail_tv-ветка — в файле tmp_dir_path/; при устаревшем кэше mail_tv удаляет array_map("unlink", glob(tmp_dir_path."/*")) все файлы временного каталога. ↩
plg-hdtv-peerstv.c011 · code · unknown; прошивка — · get_day_epg_iterator скачивает ZIP с DemoConfig::EPG_URL в /tmp/schedule.zip и читает из него пары файлов .ndx/.pdt (имена без расширения — ключ канала); данные кэшируются в памяти не дольше 3600 секунд. ↩
plg-hdtv-altv.c022 · code · unknown; прошивка — · Время программ EPG разбирается как EEST, а к каждому пункту прибавляется cookie epg_shift (коррекция в секундах). ↩
plg-hdtv-pirates-radio.c041 · code · unknown; прошивка — · Для канала с числовым id < 1000 при разборе ответа vsetv.com время программ EPG считается как EEST, а к каждому элементу прибавляется cookie epg_shift (коррекция в секундах). ↩
plg-hdtv-plugtv.c025 · code · unknown; прошивка — · HD::get_local_time_zone выполняет shell-команду TZ=cat /etc/TZ date +%z и возвращает строку вида ±HHMM; HD::get_local_time_zone_offset разбирает её в секунды, инвертируя знак (комментарий: TZ='GMT+12:00' соответствует -1200).
plg-hdtv-plugtv.c021 · code · unknown; прошивка — · Разбор EPG общий: регулярное выражение выделяет строки «ЧЧ:ММ текст», имя и описание делятся по «|», время собирается как strtotime("$epg_date $time $local_tz") + $ch_shift (зависит от источника), к началу прибавляется $epg_shift, при переходе через полночь прибавляются сутки, затем массив сортируется по времени и превращается в DefaultEpgItem с finish_time=-1 и EpgIterator с границами day_start_ts-локальное смещение и day_start_ts+100400.
plg-hdtv-pirates-radio.c043 · code · unknown; прошивка — · Экран настроек содержит два комбобокса: show_tv («Показывать TV в главном меню:», Да/Нет) и epg_shift («Коррекция программы (час):», подписи от -12 до +12, значения $i*3600 секунд); show_vod читается из cookies, но контрола для него нет. ↩
plg-hdtv-plugtv.c031 · code · unknown; прошивка — · Экран настроек DemoSetupScreen содержит комбобоксы show_tv (Показать/Спрятать), epg_server (Внешний источник/От провайдера), epg_shift (от -12 до 12 часов), epg_font (Нормальный/Мелкий, хранится в set_font), buf_time (0…10000 мс), кнопки информации о плагине и канале и перезагрузки. ↩
plg-hdtv-plugtv.c027 · code · unknown; прошивка — · В AbstractTv::get_tv_info размер шрифта EPG берётся из cookie set_font: '2' → PLUGIN_FONT_SMALL, иначе PLUGIN_FONT_NORMAL; значение уходит в PluginTvInfo::epg_font_size.
plg-hdtv-plugtv.c031 · code · unknown; прошивка — · Экран настроек DemoSetupScreen содержит комбобоксы show_tv (Показать/Спрятать), epg_server (Внешний источник/От провайдера), epg_shift (от -12 до 12 часов), epg_font (Нормальный/Мелкий, хранится в set_font), buf_time (0…10000 мс), кнопки информации о плагине и канале и перезагрузки.
plg-hdtv-zlostnyi-iptv.c053 · code · unknown; прошивка — · Ответ EPG разбирается как JSON-массив объектов с полями start, title, desc после удаления UTF-8 BOM (chr(239).chr(187).chr(191)); берутся передачи с start от (day_start − 1 ч) до (day_start + 1 сутки).
plg-hdtv-zlostnyi-iptv.c056 · code · unknown; прошивка — · Перед выдачей EPG bcu заменяет HTML-сущности по таблице (' → ', " → ", латышские/литовские ā … ļ; немецкие Ä … ü — на строки в двойной перекодировке вида «Г„»).
plg-hdtv-plugtv.c043 · code · unknown; прошивка — · Файл plugtv_tvg_screen.php объявляет экран DemoTvgScreen (ID 'tvg'), но нигде не подключается и не регистрируется в DemoPlugin — это мёртвый код.
plg-hdtv-plugtv.c044 · code · unknown; прошивка — · DemoTvgScreen строит телегид на выбранную дату: комбобокс дат от -2 до +7 дней; если cookie tvg_date равен текущей дате, подпись «Сегодня» и отметка текущей передачи префиксом «->».
plg-hdtv-surface-family.c109 · code · unknown; прошивка — · SurfaceM3uTv пакета LSS реализует UserInputHandler и регистрируется в реестре; get_actions() добавляет GUI_EVENT_TIMER (content_timer) и GUI_EVENT_KEY_SETUP (setup_time), get_tv_info() задаёт таймер 10000 мс. По SETUP открывается диалог «Задать время записи:» с combobox epg_shift от -12 до 12 часов и кнопкой «Применить»; выбор сохраняется в cookie epg_shift. ↩
plg-dc-widget-ext--lib.c023 · code · unknown; прошивка — · ActionFactory::update_epg задаёт channel_id, clear, day_start_tm_sec, programs и post_action в PLUGIN_UPDATE_EPG_ACTION_ID. ↩
plg-hdtv-freetv.c060 · code · unknown; прошивка — · При EXT_EPG_AVAILABLE get_tv_info создаёт в /tmp/www/cgi-bin/epg shell-скрипт, если его ещё нет; скрипт ждёт JSON FS_PREFIX/tmp/ext_epg/<channel>-<date>.json и отдаёт его; при DUNE_FIRMWARE_BN >= 11 ext_epg_enabled включается только при наличии /tmp/www/channel_ids.txt и этого скрипта, base_url — http://127.0.0.1/cgi-bin/. ↩
plg-dc-globaltv.c073 · code · unknown; прошивка — · Ветка внешнего EPG в ensure_tv_cache содержит ошибки и никогда не срабатывает: каналы — ассоциативные массивы (json_decode(..., true) в cache.php), а условие проверяет свойство объекта isset($c->epg_id); кроме того, присваивается неопределённая переменная $eepg_id. ↩
plg-hdtv-liteiptv.c109 · forum · unknown; прошивка — · Первый пост темы thr-hdtv-19237 описывает myEPGserver как отдельный плагин-сервер EPG с поддержкой xmltv, который может получать EPG из локального файла или по http и отдавать его любому приложению на плеере и другим плагинам по сети. ↩
plg-hdtv-liteiptv.c111 · forum · unknown; прошивка — · Автор liteIPTVplus в теме thr-hdtv-19237 пишет, что пока поддерживается только одна ссылка EPG: при вводе нового адреса и запуске загрузки старые файлы очищаются. ↩
plg-hdtv-liteiptv.c125 · code · unknown; прошивка — · Первая точка входа манифеста myEPGserver задаёт parent_media_url = root://applications и media_url = setup_app.
plg-hdtv-liteiptv.c129 · code · unknown; прошивка — · Первая точка входа myEPGserver задаёт show_cookie_name = main_icon, show_by_default = yes и ip_address_required = yes.
plg-hdtv-liteiptv.c130 · code · unknown; прошивка — · Вторая точка входа myEPGserver задаёт parent_media_url = setup://applications, media_url = setup, caption «myEPGserver», icon_url plugin_file://icons/logo.png и badge_icon_url plugin_file://icons/default.png.
plg-hdtv-liteiptv.c132 · code · unknown; прошивка — · Вторая точка входа myEPGserver задаёт ip_address_required = yes и не содержит popup_menu.
plg-hdtv-liteiptv.c139 · code · unknown; прошивка — · Список источников xmltv хранится в DATA-файле xmltvEpgPaths массивом записей с полями p (путь или URL) и t = 'xmltv'; для http-источника отдельно сохраняется запись md5(p) с полем filepath, а для локального выбранного пути — с filepath или параметрами SMB/NFS-монтирования.
plg-hdtv-liteiptv.c140 · code · unknown; прошивка — · Отключённый источник записывается в DATA-файл skipArrEpg значением 1 по ключу p, и do.php пропускает такой источник при обновлении.
plg-hdtv-liteiptv.c141 · code · unknown; прошивка — · CGI folders.php обслуживает добавление источника (action=addDelXmltvEpg): принимает только значение, начинающееся с http, отвергает дубликат с ошибкой «Такой http адрес источника EPG уже существует» и сохраняет источник; action=delXmltvEpg удаляет запись из xmltvEpgPaths и соответствующий md5-файл.
plg-hdtv-liteiptv.c142 · code · unknown; прошивка — · В экране каналов источник можно добавить двумя путями: ввести http-адрес в поле saveAddDelXmltvEpg (проверка ^http и дубликата) или выбрать локальный файл .xml/.gz через файловый браузер (тоже с проверкой дубликата); локальный путь (или SMB/NFS-монтирование) сохраняется записью md5(p).
plg-hdtv-liteiptv.c143 · code · unknown; прошивка — · Если в media_url выбранного элемента есть epgSourceId, popup-меню источника EPG в экране каналов позволяет поднять или опустить источник (когда он не первый/не последний), включить или отключить его и удалить; для перемещения обработчик queue при action = up/down меняет местами соседние элементы xmltvEpgPaths.
plg-hdtv-liteiptv.c144 · code · unknown; прошивка — · Если каталог EPG существует и список xmltvEpgPaths непуст, do.php перебирает его, пропускает источники из skipArrEpg, получает путь через smbtree::get_folder_info(md5(p)), принимает только существующий файл или адрес, начинающийся с http, и обрабатывает только источники с t = 'xmltv'; файл .gz открывается через compress.zlib://.
plg-hdtv-liteiptv.c145 · code · unknown; прошивка — · При разборе элемента channel do.php для каждого display-name вычисляет ключ mUrl::createIdKey и сохраняет в myEPGserverIDs запись с display_name, id_name = md5(xmlfile . epgId), epgId и xmlfile; пара epgId → id_name дополнительно пишется в epgId2epgIdName. Если имя уже занято каналом из другого файла, программы этого канала помечаются к пропуску через nSaveChannels.
plg-hdtv-liteiptv.c146 · code · unknown; прошивка — · При разборе элемента programme do.php вычисляет id_name = md5(xmlfile . channel), день date("Ymd", start) и складывает передачу в массив по ключу start с полями start, stop, title и desc (desc — только если есть); передачи каналов из nSaveChannels пропускаются.
plg-hdtv-liteiptv.c147 · code · unknown; прошивка — · do.php сбрасывает накопленный массив на диск, когда в нём уже 10 разных id_name и начинается передача нового канала, а также в конце обновления; при слиянии с существующим файлом удаляет дни старше семи суток (DateTime('-7 days')) и пишет JSON в /.json.
plg-hdtv-liteiptv.c148 · code · unknown; прошивка — · После обновления do.php удаляет из каталога EPG все *.json, которых нет среди значений epgId2epgIdName.
plg-hdtv-liteiptv.c150 · code · unknown; прошивка — · getEpg при наличии day_start_ts выбирает способ поиска: caption → mUrl::createIdKey(urldecode(caption)) и запись myEPGserverIDs[id_name]; tvgid → epgId2epgIdName; idname → имя JSON-файла напрямую.
plg-hdtv-liteiptv.c151 · code · unknown; прошивка — · Для найденного канала getEpg отдаёт массив дня $dayEpgArr[date("Ymd", day_start_ts)]; если дня нет, echoDayEpgHourArr возвращает 48 передач «On Air» с пустым desc на каждый час от -24 до +23 от day_start_ts.
plg-hdtv-liteiptv.c152 · code · unknown; прошивка — · getEpg?getLogoArr сканирует /logo/*, строит карту createIdKey(имя файла без .png/.jpeg) → имя файла (префикс /logo/ убирается, + заменяется на plus) и добавляет в массив элемент [1]; если каталога logo нет, создаёт его и возвращает [1].
plg-hdtv-liteiptv.c153 · code · unknown; прошивка — · getEpg?getlogo= возвращает файл логотипа с Content-Type image/jpeg, заменяя plus на + в значении параметра; если файла нет, отдаёт icons/0.png из каталога установки плагина.
plg-hdtv-liteiptv.c154 · code · unknown; прошивка — · getEpg?clear удаляет все файлы в каталоге EPG командой shell_exec("rm -f /*") и отвечает JSON {"clear":"1"}.
plg-hdtv-liteiptv.c155 · code · unknown; прошивка — · getEpg отвечает JSON {"err":"404"}, если каталог EPG не существует или если на устройстве нет /persistfs, а jsonsPath остался по умолчанию (data_dir_path/dataFiles).
plg-hdtv-liteiptv.c156 · code · unknown; прошивка — · Все ответы getEpg, включая JSON, отдаются с Content-Type text/html; charset=utf-8; только ветка getlogo переопределяет заголовок на image/jpeg.
plg-hdtv-liteiptv.c061 · code · unknown; прошивка — · В liteIPTVplus SmartM3uTv::get_icon_path стал публичным и принимает channel_id, caption и plugin_cookies; при первом вызове он загружает массив логотипов с http:///cgi-bin/plugins/myEPGserver/getEpg?getLogoArr (epgIp по умолчанию 127.0.0.1).
plg-hdtv-liteiptv.c063 · code · unknown; прошивка — · В liteIPTVplus get_day_epg_iterator запрашивает http:///cgi-bin/plugins/myEPGserver/getEpg?day_start_ts=&caption=, где «+» в названии заменён на «plus», и разбирает JSON-ответ.
plg-hdtv-liteiptv.c064 · code · unknown; прошивка — · В liteIPTVplus экран настроек добавляет текстовое поле epgIp с подписью «IP адрес плеера с myEPGserver» и сохраняет его в cookie при вводе.
plg-hdtv-liteiptv.c164 · code · unknown; прошивка — · liteIPTVplus запрашивает у myEPGserver три ветки API: getEpg?getLogoArr для карты логотипов, getEpg?getlogo= для файла логотипа и getEpg?day_start_ts=&caption= для программы дня; все три ветки реализованы в getEpg.php сервера.
plg-hdtv-liteiptv.c165 · code · unknown; прошивка — · Программа дня, которую отдаёт сервер, — объект с ключами start, stop, title и (при наличии) desc; liteIPTVplus читает title или name и desc, поэтому формат сервера (title/desc) и резервный формат On Air (name/desc) оба принимаются клиентом.
plg-hdtv-liteiptv.c133 · code · unknown; прошивка — · Глобальное действие boot манифеста myEPGserver имеет тип plugin_system и запускает bin/update_cron.sh.
plg-hdtv-liteiptv.c159 · code · unknown; прошивка — · При изменении setAutoUpdateXmltvEpg, autoUpdateEpg_hour или autoUpdateEpg_day плагин сохраняет режим (n или manually) в DATA-файле manuallyAutoUpdateXmltvEpg, а при manually и заданном autoUpdateEpg_hour — ещё час и день; addCronTask при режиме n удаляет строку с маркером #myEPGserver, а при manually добавляет в /tmp/cron/crontabs/root строку «0 * * wget -O - do > /dev/null #myEPGserver». На Android файл создаётся через echo и crond перезапускается командой /system/dunehd/dunehd_service do crond -b -c /tmp/cron/crontabs; на остальных платформах файл пишется и вызывается crontab -e.
plg-hdtv-liteiptv.c160 · code · unknown; прошивка — · При загрузке плагина bin/update_cron.sh запрашивает CGI setcrontab; setcrontab.php читает manuallyAutoUpdateXmltvEpg и заново добавляет в cron строку с маркером #myEPGserver, используя в условии переменную $autoScanFolders, которая в файле не определена.
plg-hdtv-liteiptv.c166 · forum · unknown; прошивка — · Автор myEPGserver в первом посте темы пишет, что EPG можно получать вручную или по расписанию раз в неделю в указанный день и указанное время (utc +0 time). ↩
plg-hdtv-liteiptv.c161 · code · unknown; прошивка — · Веб-интерфейс index.php показывает таблицу каналов из myEPGserverIDs (display_name, epgId, id_name), список источников xmltvEpgPaths и модальное окно их добавления/удаления; кнопка обновления шлёт запрос на do, кнопка очистки — GET getEpg?clear, поиск фильтрует строки таблицы на клиенте. ↩
plg-ds-dune-hd-tv.c060 · code · unknown; прошивка — · get_tv_info включает внешний EPG (ext_epg_enabled, ext_epg_channel_ids_url = "dunehdtv_channel_ids.txt"), если определена PluginTvInfo::ext_epg_channel_ids_url и есть /firmware_ext/plugins/ext_epg/dune_plugin.xml.
plg-ds-dune-hd-tv.c061 · code · unknown; прошивка — · Файл dunehdtv_channel_ids.txt в коде плагина нигде не создаётся и в пакете отсутствует.
plg-hdtv-liteiptv.c157 · code · unknown; прошивка — · Экран настроек myEPGserver всегда содержит выбор каталога EPG (setJsonsPath), выбор main_icon и пункт whats_new; при непустом jsonsPath он добавляет addDelXmltvEpg, updateXmltvEpg, showEpgAvailableChannels, autoUpdateXmltvEpg, showEpgUpdateLog и clearXmltvEpg. Если jsonsPath не задан, берётся data_dir_path/dataFiles, но при отсутствии /persistfs этот путь очищается; если нет одновременно /persistfs и /D, показывается предупреждение о необходимости накопителя. ↩
plg-hdtv-liteiptv.c158 · code · unknown; прошивка — · Пункт updateXmltvEpg запускает обновление фоновой командой wget на plugin_cgi_url/do; диалог showEpgUpdateLog читает DATA-файл do.log и каждую секунду перезапускает себя, пока в логе нет «Script stop» (если не передан showLog). ↩
plg-hdtv-liteiptv.c162 · code · unknown; прошивка — · Экран каналов при пустом media_url показывает список каналов из myEPGserverIDs; media_url с id_name открывает JSON-файл канала (дни), с id_name и day — программы дня, а с epgList — список источников с пунктом «Добавить xmltv EPG». ↩
plg-hdtv-liteiptv.c163 · code · unknown; прошивка — · CGI getEpg и do при наличии /tmp/plugins/link_api.php подключают его, иначе — локальный link_api.php; локальная копия определяет только класс mUrl с методом createIdKey. ↩
plg-hdtv-liteiptv.c167 · code · unknown; прошивка — · В lib/action_factory.php myEPGserver show_dialog принудительно задаёт frame_style = DIALOG_FRAME_STYLE_GLASS, а строка, читающая dialog_params из $attrs, закомментирована.
plg-hdtv-liteiptv.c168 · code · unknown; прошивка — · В lib/control_factory.php myEPGserver метод add_label создаёт элемент с пустым GuiControlDef::name, а заголовок передаёт в GuiControlDef::title.
plg-hdtv-liteiptv.c169 · code · unknown; прошивка — · В lib/utils.php myEPGserver http_get_document задаёт CONNECTTIMEOUT и TIMEOUT по 40 секунд, User-Agent Firefox 7.0.1 и печатает сообщения через echo, а не через hd_print.
fw-tv188b-261021-0117-r25--network-services.c064 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · В прогоне collect8 (2026-10-30) на tv188b r25 $P/firmware/bin/ts — симлинк на $P/lib/libxxx_ts.so, а $P/flashdata/ts/ts — симлинк на $P/flashdata/plugins/dunemdb_supplier_online_movies/bin/ts; у работающего процесса ts (pid 32670) снят только argv (ts --port 8095 ...), /proc/<pid>/exe не снят, поэтому тождество бинарников не установлено. ↩↩
plg-dc-dunemdb-supplier-online-movies.c057 · code · unknown; прошивка — · install_ts читает server_release.json с releases.yourok.ru, берёт ссылку android-arm7, сохраняет версию в /flashdata/ts/version и качает бинарник wget-действием с тайм-аутом 600 с в /flashdata/ts/ts.loading, показывая диалог ожидания.
plg-dc-dunemdb-supplier-online-movies.c058 · code · unknown; прошивка — · apply_ltsb при ltsb_status не succeeded удаляет ts.loading и показывает ошибку; иначе заменяет /flashdata/ts/ts файлом ts.loading, запускает TorrServer и при успехе вызывает configure_ts.
plg-dc-dunemdb-supplier-online-movies.c060 · code · unknown; прошивка — · do_ensure_own_torrserver создаёт /flashdata/ts; если /flashdata/ts/ts нет, на APK делает symlink на /bin/ts, а на не-APK возвращает false. При наличии ts выставляет 0755, запускает ts с --port 8095 -k -d /flashdata/ts -l /tmp/run/ts.log (на не-APK через /system/dunehd/dunehd_service do) и ждёт до 40 с по 0,4 с.
plg-dc-dunemdb-supplier-online-movies.c039 · code · unknown; прошивка — · Код плагина использует файл /flashdata/ts/ts как TorrServer — запускает его с параметрами --port 8095 -k -d /flashdata/ts -l /tmp/run/ts.log и затем опрашивает HTTP-порт.
plg-hdtv-megatorrents.c056 · code · android; прошивка — · При start/restart, check_local_torrserve(1) == true и platform_kind android server_action_torrserve при dune_torrserve_ip == 2 читает собственный CGI http://127.0.0.1/cgi-bin/plugins//torrserve, иначе ищет в /tmp/applications/app_data.json пакет с подстрокой torrserve и выполняет am start /.
plg-hdtv-megatorrents.c060 · code · android; прошивка — · torrserve.php при наличии /data/data/ru.yourok.torrserve/files/torrserver и отсутствии процесса (pidof torrserver) запускает его в фоне с ключами -k -d /sdcard/Android/data/ru.yourok.torrserve/files и отвечает «TorrServe started», при работающем — «TorrServe started earlier».
plg-dc-torrent-center.c089 · code · unknown; прошивка — · torrserve.php при наличии файла Android-приложения и отсутствии pid torrserver запускает внешний torrserver с -k -d /sdcard/Android/data/ru.yourok.torrserve/files. ↩
plg-hdtv-megatorrents.c058 · code · unknown; прошивка — · Для удалённого TorrServe (check_local_torrserve(1) == false) start при dune_torrserve_ip == 2 вызывает CGI MegaTorrents на удалённом плеере (/cgi-bin/plugins//torrserve), при == 1 — service_api TorrServe-плагина там же; результат пишется в tmp_dir_path/logs. ↩
plg-dc-torrent-center.c088 · code · unknown; прошивка — · getStartSlaveTorrServer пробует CGI torrserve текущего плагина, затем Bazinga на хосте настроенного TorrServer.
plg-dc-torrent-center.c090 · code · unknown; прошивка — · При отсутствии файла Android-приложения и не-Android platform_kind torrserve.php вызывает service_api?cmd=torrserve_start установленного плагина TorrServe.
plg-hdtv-megaanime.c053 · code · unknown; прошивка — · server_action_torrserve реализует start/restart (restart сначала POST-ит /shutdown и ждёт 5 с, затем запуск через CGI, am start или service_api TorrServe), torrent_list, settings, settings_read, settings_write, settings_html, rem, add, get, stat, preload (фоновый wget), stop (POST /shutdown) и soft_restart (GET /torrent/restart).
plg-hdtv-megaanime.c054 · code · unknown; прошивка — · Настройки TorrServe читаются через settings_read (JSON) и settings_html (HTML), поля строятся по именам/типам из HTML, CacheSize и PreloadBufferSize показываются в МБ, а при сохранении умножаются на 1024*1024 и отправляются в settings_write.
plg-dc-dunemdb-supplier-online-movies.c062 · code · unknown; прошивка — · Кэш TorrServer держится в памяти, если /config/ts_disk_cache.txt отсутствует и MemTotal не меньше 1100000 КБ; при меньшем MemTotal или значении 1 в файле включается дисковый кэш /flashdata/ts_cache с правами 0777, UseDisk=true, TorrentsSavePath и RemoveCacheOnDrop=true.
plg-dc-dunemdb-supplier-online-movies.c063 · code · unknown; прошивка — · ensure_head_and_tail требует CacheSize > 0, ReaderReadAHead и PreloadCache в диапазоне 0..100, считает head = CacheSize*ReaderReadAHead/100 и tail = остаток; при head < 60000000 или tail < 30000000 увеличивает размер до минимумов, округляет до мегабайта и пересчитывает проценты, ограничивая ReaderReadAHead 1..99.
plg-hdtv-megatorrents.c051 · code · unknown; прошивка — · Ответ /echo плагин трактует как версию TorrServe: число без точек > 1025 выбирает ключ Link вместо Magnet, а при числе < 1054 плагин сам посылает cURL POST {"":""} на /torrent/add (CONNECTTIMEOUT 25) и по Hash открывает папку серий с season_id torrserve_.
plg-hdtv-megatorrents.c052 · code · unknown; прошивка — · При версии TorrServe ≥ 1054 плагин добавляет торрент через server_action_torrserve('add'), передавая Info с name/img/descr/info_name/myShowId (urlencode(json_encode)), только если версия > 1065 и add_torrserve_inf == 1; затем запускает цикл add_torrserve_action с полученным hash.
plg-hdtv-megaanime.c050 · code · unknown; прошивка — · torrserve_action при пустом torrserve_ip открывает выбор действия; иначе опрашивает http://:8090/echo и, если check_local_torrserve(2) и сервер не отвечает, запускает его через server_action_torrserve('start'); получает торрент, выбирает ключ Magnet (версия <= 1025) или Link; для версии < 1054 POST-ит {"<ключ>":""} на /torrent/add и открывает VodSeriesListScreen с season_id torrserve_, для более новой зовёт server_action_torrserve('add', …) и ждёт файлы через add_torrserve_action. ↩
plg-dc-torrent-center.c083 · code · unknown; прошивка — · TorrServer-адаптер посылает action=drop, rem или get вместе с hash на /torrents. ↩
plg-hdtv-megatorrents.c053 · code · unknown; прошивка — · add_torrserve_action показывает диалог «Добавление» со счётчиком и кнопкой «Удалить» и через timer(1000) по GUI_EVENT_TIMER повторяет себя, пока /torrent/get не вернёт Files; затем (при add_torrserve_inf == 1 и без torrserve_inf) сохраняет описание в torrserve_infs[hash] и открывает папку torrserve_. ↩
plg-dc-dunemdb-supplier-online-movies.c093 · code · unknown; прошивка — · torrserverActionGet перед json_decode переписывает числовые значения после ключей в строки; запрос ограничен тайм-аутом 1 с, предупреждения заглушены.
plg-dc-dunemdb-supplier-online-movies.c094 · code · unknown; прошивка — · TorrServer::do_get_series_list оставляет только файлы с расширениями видео/аудио, id файла — md5(path), size_mb считается из length, playback_url — /stream/?link=&index=&play, список сортируется по пути.
plg-dc-dunemdb-supplier-online-movies.c125 · code · unknown; прошивка — · TorrentHelper::open_torrent проверяет TorrServer через getOnlineStatusServer, берёт ссылку через MainHelper::$tordb->get_torrent_file, ищет hash в кэше по uid, при отсутствии hash или неполных данных добавляет торрент с dontSave=1, сохраняет hash в /tmp/run/dunemdb_supplier_online_movies_hash_by_uid.json и запускает AddTorrentDialog; ошибки 1/2/3 означают «сервер не запущен», «ссылка не получена», «торрент не добавлен». ↩
plg-dc-dunemdb-supplier-online-movies.c091 · code · unknown; прошивка — · TorrServer::torrserverAddTorrent при действии 1 не сохраняет в БД; если IP сервера не содержит первый октет локального IP, ссылка не magnet и адрес не 127.0.0.1, торрент загружается файлом /tmp/www/temp.torrent на /torrent/upload, иначе добавляется ссылкой через /torrents. ↩
plg-dc-torrent-center.c094 · code · unknown; прошивка — · Transmission::transmissionActionSaveTorrentFile сохраняет входной .torrent в /tmp/www/temp.torrent и создаёт Torrent для его разбора.
plg-hdtv-megatorrents.c041 · code · unknown; прошивка — · SmartConfig::get_torrent по умолчанию сохраняет .torrent в /tmp/www/temp.torrent; для URL kinozal (при get_login_check('kinozal')), nnmclub, rutracker dl.php (при логине) — с cookie-файлом трекера в tmp_dir_path, для hdreactor — с Referer, для прочих не-magnet — простым GET; при пути по умолчанию возвращает http:///temp.torrent. ↩
plg-hdtv-megaanime.c059 · code · unknown; прошивка — · При выборе локального .torrent файла SmartFileSystemScreen отправляет его в TorrServe: копирует в /tmp/www/temp.torrent, отдаёт серверу URL http:///temp.torrent и для версии < 1054 POST-ит /torrent/add, иначе server_action_torrserve('add'); для Peerflix — multipart POST /upload, затем открывает список торрентов. ↩
plg-hdtv-megatorrents.c043 · code · unknown; прошивка — · Для magnet:?xt=urn:btih:<40 символов> и пути, отличного от /tmp/www/temp.torrent, get_torrent скачивает http://itorrents.org/torrent/.torrent; при пути acestream возвращает get_acestream_content_id, при android_action пишет файл в /tmp/www/temp.torrent и возвращает true. ↩
plg-dc-torrent-center.c072 · code · unknown; прошивка — · Глобальный file_popup обработчик добавляет меню только для расширения torrent после проверки обязательных полей и исключения оптического диска.
plg-dc-torrent-center.c073 · code · unknown; прошивка — · get_file_popup_action собирает абсолютный путь из mount_path источника и selected_file_path.
plg-hdtv-remtor.c077 · code · unknown; прошивка — · get_add_torrent_dialog различает три источника: URL, проходящий проверку strspn по набору 'http://', при успешном HD::http_get_document и записи скачивается во временный файл; magnet-ссылка сохраняется как add_torrent_fn; локальный файл проверяется Torrent::is_torrent и разбирается конструктором Torrent.
plg-hdtv-remtor.c147 · code · unknown; прошивка — · Для проверки, что аргумент начинается с http://, get_add_torrent_dialog использует strspn($fn,'http://',0,7) == 7, то есть проверяет набор символов, а не строковый префикс.
plg-hdtv-remtor.c078 · code · unknown; прошивка — · Для .torrent плагин берёт общий размер через Torrent::size, список файлов через Torrent::content, помечает все файлы need = true и отрезает общий каталог, вычисленный последовательным dirname.
plg-hdtv-remtor.c134 · code · unknown; прошивка — · Torrent::is_torrent считает файл торрентом, если первые 11 байт равны «d8:announce».
fw-tv188b-261021-0117-r25--downloads.c042 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · do_get_series_list возвращает отсортированный по пути массив с title, id=md5(path), size/size_mb при наличии length и URL /stream/<имя>?link=&index=&play; filter_extensions по умолчанию true. ↩
plg-dc-dunemdb-supplier-online-movies.c094 · code · unknown; прошивка — · TorrServer::do_get_series_list оставляет только файлы с расширениями видео/аудио, id файла — md5(path), size_mb считается из length, playback_url — /stream/?link=&index=&play, список сортируется по пути. ↩
plg-dc-torrent-center.c080 · code · unknown; прошивка — · TorrServer::get_series_list собирает playback_url как /stream/?link=&index=&play, заменяя пробелы имени на %20.
plg-hdtv-megatorrents.c106 · code · unknown; прошивка — · SmartVod::get_vod_stream_url возвращает часть после from_src=android&turl=, либо playback_url без изменений для адресов 9000/torrents/, .jpg, 8090/torrent/ и 9092/torrent; иначе mUrl::get_link с video_quality из HD::get_item (по умолчанию 1). ↩
plg-dc-torrent-center.c084 · code · unknown; прошивка — · torrserverActionPreload запускает фоновый wget по URL потока, заменив &play на &preload.
plg-dc-torrent-center.c105 · code · unknown; прошивка — · Для TorrServer при включённом preloadTorrServ экран файлов запускает preload и переходит к doPreload вместо немедленного vod_play.
plg-dc-torrent-center.c148 · code · unknown; прошивка — · doPreload запускает vod_play при переходе stat=2→3 или при заполнении preload_size более чем на 98 процентов.
plg-hdtv-megatorrents.c064 · code · unknown; прошивка — · При control_id play и series_id вида http://:8090/torrent/view// VodSeriesListScreen проверяет :8090/echo; при ответе и PreloadBufferSize > 0 из settings_read запускает preload (torrent/view → torrent/preload) и цикл do_torrserve_preload; без ответа — диалог «TorrServe не запущен!».
plg-hdtv-megatorrents.c065 · code · unknown; прошивка — · do_torrserve_preload запрашивает /torrent/stat и повторяется, пока (PreloadLength > PreloadSize и IsPreload == 1) или IsGettingInfo == 1, показывая буфер и пиров; иначе загружает фильм и возвращает ActionFactory::vod_play().
plg-gh-vladikshkwok-lampa-dune-plugins.c059 · code · android; прошивка — · directStream() переписывает URL TorrServer на прямой адрес только если путь содержит /stream/, origin и префикс пути совпадают с сохранённым source, link — 40 hex, index — положительное число и есть параметр play.
plg-gh-vladikshkwok-lampa-dune-plugins.c060 · code · android; прошивка — · directStream() не переписывает URL с логином/паролем и URL, у которого после /stream/ нет сегмента пути или их больше одного.
plg-gh-vladikshkwok-lampa-dune-plugins.c061 · code · android; прошивка — · prepare() перед подменой прокси делает read-only запрос POST /torrents с {action:'get', hash} через Lampa.Android.httpReq (timeout 1000, общий watchdog 1200) и переписывает URL только при совпадении hash в ответе.
plg-gh-vladikshkwok-lampa-dune-plugins.c062 · code · android; прошивка — · Если target или source не заданы, выбранный URL не проходит directStream(source, target) или проверка hash в ответе не удалась, prepare() возвращает исходное тело и прокси-ссылки не меняются.
plg-gh-vladikshkwok-lampa-dune-plugins.c084 · code · android; прошивка — · share() пишет позицию в TorrServer через Lampa.Torserver.viewedSet только для ключа torrent:<40 hex>: и при наличии Lampa.Torserver, Lampa.Storage.field, функций viewedSet и url и включённом torrserver_tracktimecode; пустой base и http-адрес на https-странице пропускаются.
plg-gh-vladikshkwok-lampa-dune-plugins.c085 · code · android; прошивка — · share() при обычном просмотре отправляет timecode после 30 секунд, затем не чаще раза в 30 секунд, сразу при перемотке, сдвигающей время больше чем на 30 секунд от ожидаемого, и принудительно при остановке; повтор того же timecode и первое значение без force не отправляются.
plg-gh-vladikshkwok-lampa-dune-plugins.c086 · code · android; прошивка — · Комментарий share() утверждает, что это тот же запрос, который Lampa делает при закрытии своего плеера: POST /viewed с {action:'set', hash, file_index, timecode} в целых секундах; другие клиенты читают его при открытии списка файлов.
plg-hdtv-megatorrents.c072 · code · unknown; прошивка — · peerflix_action посылает {"link":""} с Content-type application/json на http://:9000/torrents, при пустом infoHash повторяет до 10 раз через 4 с и открывает папку серий с season_id = infoHash. ↩
plg-hdtv-megaanime.c049 · code · unknown; прошивка — · peerflix_action при пустом peerflix_ip открывает выбор действия, а при локальном peerflix_ip (127.0.0.1 или IP устройства) удаляет старый лог и гасит transmission, noxbit, acestream и torrserve; для 127.0.0.1 проверяет store.js, а сервер поднимает через /cgi-bin/plugins//service_api?cmd=peerflix_start, если store.js есть при 127.0.0.1 или dune_peerflix_ip == 1 и /torrents недоступен; затем POST-ит {"link":""} на http://:9000/torrents и до 10 раз по 4 с ждёт infoHash. ↩↩
plg-dc-torrent-center.c092 · code · unknown; прошивка — · PeerflixServer загружает .torrent через POST file=@<путь> на /upload и возвращает infoHash.
plg-dc-torrent-center.c093 · code · unknown; прошивка — · PeerflixServer::get_series_list формирует playback_url как адрес сервера плюс files[].link, с is_stream_url=true.
plg-hdtv-megatorrents.c071 · code · unknown; прошивка — · Если (store.js есть и peerflix_ip 127.0.0.1) или dune_peerflix_ip == 1, а http://:9000/torrents не отвечает, плагин вызывает http:///cgi-bin/plugins//service_api?cmd=peerflix_start и до 10 раз через 4 с ждёт ответа; иначе (не локальный и не Dune) при недоступном :9000/torrents/ — диалог ошибки. ↩
plg-dc-torrent-center.c158 · code · unknown; прошивка — · PeerflixServer::startPeerflixServer для настроенного хоста запускает wget на service_api?cmd=peerflix_start выбранного служебного плагина. ↩
plg-dc-torrent-center.c096 · code · unknown; прошивка — · transmissionActions.php создаёт TransmissionRPC на /transmission/rpc с переданными login/pass.
plg-dc-torrent-center.c097 · code · unknown; прошивка — · TransmissionRPC упаковывает запрос в JSON method/arguments и отправляет POST с X-Transmission-Session-Id.
plg-dc-torrent-center.c098 · code · unknown; прошивка — · TransmissionRPC добавляет Authorization: Basic, если заданы username и password.
plg-dc-torrent-center.c099 · code · unknown; прошивка — · transmissionActions.php различает операции get/getFile, remove, add_file, sget, sstats и setPriorityHigh.
plg-hdtv-megaanime.c048 · code · unknown; прошивка — · transmission_action при пустом transmission_ip показывает настройки, иначе проверяет http:///transmission/rpc, при необходимости запускает start_transmission, создаёт TransmissionRPC("http:///transmission/rpc", login, pass), получает торрент через SmartConfig::get_torrent и отправляет его $rpc->add(). ↩
plg-hdtv-megatorrents.c077 · code · unknown; прошивка — · transmission_action создаёт TransmissionRPC("http:///transmission/rpc", login, pass) и передаёт ему результат get_torrent через $rpc->add(), то есть URL temp.torrent на плеере или magnet-ссылку.
plg-hdtv-megatorrents.c082 · code · unknown; прошивка — · Для локального Transmission вне ветки Android BTC start_transmission при pidof transmission-daemon == false выполняет shell_exec('transmission-start') и до 10 раз через 4 с проверяет /transmission/rpc, но в обеих ветках результата возвращает false.
plg-hdtv-remtor.c080 · code · unknown; прошивка — · При action_type confirm/apply после успешного checkconnect в case btnOk magnet-ссылка добавляется вызовом add_torrent с filename, download-dir и paused; .torrent — вызовом add_metainfo с base64-содержимым, download-dir, paused, files-wanted и files-unwanted.
plg-hdtv-remtor.c081 · code · unknown; прошивка — · При ответе Transmission с arguments->torrent-duplicate плагин закрывает внешний вызов результатом «Torrent duplicate».
plg-dc-torrent-center.c101 · code · unknown; прошивка — · TransmissionUPnP получает список файлов через php-cgi transmissionActions.php action=getFile на адресе getTransmissionBtcIp.
plg-dc-torrent-center.c157 · code · unknown; прошивка — · TransmissionUPnP::getTransmissionBtcIp берёт host адреса UPnP и отдельный transmissionPort для RPC, по умолчанию 9091.
plg-hdtv-megatorrents.c081 · code · android; прошивка — · start_transmission при transmission_ip 127.0.0.1 или IP плеера (порт отрезается по «:»), platform_kind android и dune_transmission_ip == 2 ищет com.ap.transmission.btc в app_data.json, выполняет am start /, ждёт 15 с и возвращает доступность /transmission/rpc; без пакета — false.
plg-hdtv-megatorrents.c087 · code · unknown; прошивка — · Экран vod_peerflix с first_arg transmission_upnp читает M3U http://:9092/playlist (#EXTINF → подпись) и создаёт элементы upnp_transmission_; при dune_transmission_ip == 2, локальном IP и android без ответа сначала выполняет am start com.ap.transmission.btc/com.ap.transmission.btc.activities.MainActivity и ждёт 10 с.
plg-hdtv-megaanime.c055 · code · unknown; прошивка — · Экран vod_peerflix для first_arg transmission_upnp читает M3U http://:9092/playlist и строит элементы upnp_transmission_; для first_arg torrserve читает /torrent/list, показывает «Загрузить торрент файл» и список торрентов с размером и датой добавления. ↩
plg-hdtv-smart-apps.c032 · code · unknown; прошивка — · При actions_app (ENTER/PLAY) установка Transmission из Entware блокируется диалогом %tr%t54/%tr%t58, если существует /ltu или /tmp/run/installed_plugins.xml содержит Transmission, и выбран install_script install_transmission. ↩
plg-hdtv-peerflixserver.c039 · code · unknown; прошивка — · Пункт verify_peerflix при выбранном verify пишет config->verify=true только для значения true, иначе false; если configObg сохранил настройки и сервер запущен, перезапускает его.
plg-hdtv-peerflixserver.c057 · forum · unknown; прошивка — · По словам автора, у пирфликса нет кеша в памяти: он качает файл целиком на диск; при включённой «проверке торрента» после перезапуска идёт перехеширование, при выключенной ранее закачанное отбрасывается и закачка начинается заново, резервируя место по размеру торрента.
plg-hdtv-remtor.c056 · code · unknown; прошивка — · Фильтр списка торрентов предлагает группы tr_kind_all, tr_kind_active, tr_kind_downloading, tr_kind_inactive, tr_kind_stopped и tr_kind_error со счётчиками TotalCnt, ActiveCnt, DownCnt, StoppedCnt и ErrorCnt. ↩
plg-hdtv-remtor.c096 · code · unknown; прошивка — · Страница download экрана setup_trans показывает поля download-dir, rename-partial-files, seedRatioLimit, idle-seeding-limit и cache-size-mb из ответа session-get.
plg-hdtv-remtor.c097 · code · unknown; прошивка — · Страница network экрана setup_trans показывает поля peer-port, peer-port-random-on-start, port-forwarding-enabled, encryption и dht-enabled, а также кнопку tr_test_port.
plg-hdtv-remtor.c098 · code · unknown; прошивка — · При action_type confirm/apply изменение любого поля setup_trans после checkconnect вызывает set_session_arg с парой control_id => new_value; кнопка tr_test_port вызывает port_test и показывает tr_test_true/tr_test_false.
plg-hdtv-remtor.c117 · code · unknown; прошивка — · port_test возвращает истину, если port-is-open = 1; в ветке catch после успешного try_connect вызывается несуществующий метод test_port(), а не port_test().
plg-hdtv-remtor.c075 · code · unknown; прошивка — · Пункт tr_add_torrent выставляет DuneBrowserDirClass::filemask = '.torrent', задаёт action_ok через close_and_run действия tr_select_torrent и action_cancel, затем открывает экран gl_browser.
plg-hdtv-remtor.c076 · code · unknown; прошивка — · После выбора .torrent по SMB-пути tr_select_torrent монтирует шару через DuneFileUtils::net_mount_smb в /tmp/mnt/smb/rem_tor и заменяет путь на точку монтирования.
plg-hdtv-remtor.c146 · code · unknown; прошивка — · Экран gl_browser хранит текущий каталог в plugin_cookies->browse_setting как JSON, фильтрует файлы по filemask, при SMB монтирует шару через net_mount_smb и возвращает выбранный путь в result_link.
plg-hdtv-remtor.c082 · code · unknown; прошивка — · Каталог закачки по умолчанию берётся из session-get поля download-dir; кнопка смены каталога показывает подкаталоги через DuneFileUtils::get_folder с OnlyDir, а путь для показа переводится map_rem_to_local.
plg-hdtv-remtor.c138 · forum · unknown; прошивка — · В changelog 0.0.18 (p221846) указано, что при добавлении торрента можно изменить директорию, но выбор ограничен первыми 15 поддиректориями из-за отсутствия скроллинга.
plg-hdtv-remtor.c070 · code · unknown; прошивка — · Экран rt_files получает файлы торрента вызовом get_torrent_array_bint с полями id, hashString, name, files и fileStats; отдельно берёт item_files и item_stats.
plg-hdtv-remtor.c071 · code · unknown; прошивка — · Экран rt_files отрезает у имён файлов общий каталог, вычисленный последовательным dirname по первым элементам списка.
plg-hdtv-remtor.c072 · code · unknown; прошивка — · Строка файла торрента показывает размер, процент выполнения для неполного файла, приоритет (high/normal/low) или «не загружать»; иконка completed.aai, downloading/*.aai или skip.aai выбирается по wanted и bytesCompleted, а priority задаёт подпись high/normal/low у загружаемого файла.
plg-hdtv-remtor.c073 · code · unknown; прошивка — · После проверки selected_media_url обработчик tr_set_priority экрана rt_files вызывает set_priority_file с setpriority и списком выбранных файлов, а при пустом выборе — с одним file_id. ↩
plg-hdtv-megaanime.c051 · code · unknown; прошивка — · acestream_action вызывает check_local_acestream: при select_action открывает выбор действия, при true показывает ошибку; иначе получает content_id через get_torrent(series_id, 'acestream') и открывает VodSeriesListScreen с season_id acestream_. parse_acestream_page после успешной проверки читает http://:6878/ace/getstream?id=&format=json, а при ответе без #EXTM3U добавляет одну серию с этим URL.
plg-hdtv-megaanime.c047 · code · unknown; прошивка — · popup торрент-серии предлагает действия «Открыть через Android» (только Android), «Скачать через Transmission», «Перейти в RemTor», «Смотреть через Peerflix-server», «Смотреть через TorrServe», «Смотреть через Ace Stream» (только Android) и «Сохранить торрент файл».
plg-hdtv-megatorrents.c045 · code · unknown; прошивка — · get_acestream_content_id посылает base64 содержимого .torrent POST-запросом (Content-Type application/octet-stream) на http://api.torrentstream.net/upload/raw и возвращает content_id из JSON.
plg-hdtv-megatorrents.c046 · code · unknown; прошивка — · При отсутствии content_id get_acestream_content_id выполняет выражение «else false;» без return, то есть функция возвращает null.
plg-hdtv-liteiptv.c115 · code · android; прошивка — · При platform_kind = android, локальном IP AceStream и неудачном первом запросе get_version плагин ищет package_name с acestream в /tmp/applications/app_data.json, запускает его через am start, ждёт 15 секунд и повторно запрашивает /webui/api/service?method=get_version. ↩
plg-hdtv-liteiptv.c044 · code · unknown; прошивка — · При воспроизведении без архива перед выдачей URL плагин распознаёт stream?cid= (Noxbit), acestream:// или /ace/getstream?id= (AceStream) и youtube (mUrl::get_link), а запись zoom канала добавляет к URL параметр dune_params zoom.
plg-hdtv-liteiptv.c105 · forum · unknown; прошивка — · По первому посту liteIPTV проверяет доступность Noxbit и AceStream и пытается запустить их на локальном плеере Dune или плеере в сети; для acestream:// указывается IP сервера AceStream 3.1+, по умолчанию порт 6878, для Noxbit — 6689 (это же следует из кода настроек).
plg-gh-valerievitch-dune-plugin-acestreamsearch.c036 · code · unknown; прошивка — · Если ace_proxy_ip пуст и use_local_search_engine выключен, AceSearchTvGroupListScreen в get_folder_view ставит таймер PluginRegularFolderView с задержкой 100 мс.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c037 · code · unknown; прошивка — · В AceSearchTvGroupListScreen в цепочке elseif после history_delete, really_history_delete и history_sort обработчик timer показывает диалог T::t('enter_ace_proxy_ip') с кнопкой setup, а обработчик setup (elseif после timer) открывает папку setup.
plg-gh-valerievitch-dune-plugin-acestreamsearch.c071 · code · unknown; прошивка — · AceSearchTv::load_channels при пустом ace_proxy_ip и выключенном use_local_search_engine сбрасывает plugin_cookies->query и бросает DuneException 'Empty Ace Proxy address' с фатальным show_error T::t('enter_ace_proxy_ip').
plg-hdtv-megaanime.c046 · code · unknown; прошивка — · Действие по умолчанию для торрентов и magnet-ссылок выбирается из списка: 0 не выбрано, 1 Transmission, 2 Peerflix-server, 3 сохранить .torrent, 4 Ace Stream (только Android), 5 TorrServe, 6 открыть через Android (только Android). ↩
plg-hdtv-megaanime.c047 · code · unknown; прошивка — · popup торрент-серии предлагает действия «Открыть через Android» (только Android), «Скачать через Transmission», «Перейти в RemTor», «Смотреть через Peerflix-server», «Смотреть через TorrServe», «Смотреть через Ace Stream» (только Android) и «Сохранить торрент файл». ↩
plg-hdtv-megaanime.c057 · code · unknown; прошивка — · Пункт open_remtor проверяет наличие rem_tor в /tmp/run/installed_plugins.xml и запускает plugin_launcher://rem_tor; если плагина нет, предлагает установить его из plugin_installer://http://vadimkell.dlinkddns.com/update.tgz. ↩
plg-hdtv-megatorrents.c104 · code · android; прошивка — · select_android_action экрана сезонов при torrent получает .torrent через get_torrent(series_id, 'android_action') в /tmp/www/temp.torrent и открывает его интентом torrent с URL file:///tmp/www/temp.torrent.
plg-hdtv-megatorrents.c101 · code · android; прошивка — · SmartConfig::get_android_action запускает внешний просмотрщик через am start -d "" -t -a android.intent.action.VIEW с MIME video/* (video), audio/x-mpegurl (m3u), application/x-bittorrent (torrent) и image/* (image).
plg-hdtv-megatorrents.c098 · code · unknown; прошивка — · При control_id aria_download, заданном selected_media_url и существующем dload_dir_path SmartDloadScreen берёт folder_movie (не-http URL разрешает parse_video_stream_url) и запускает в фоне -x2 --file-allocation=none --continue=true --log-level=info --dir= с выводом в tmp_dir_path/aria.log. ↩
plg-hdtv-smart-vod.c138 · code · unknown; прошивка — · При control_id=aria_download, заданном selected_media_url и существующем dload_dir_path эталон запускает фоновый /ltu/bin/aria2c с -x2, continue=true и логом tmp_dir_path/aria.log.
plg-hdtv-smart-vod.c327 · code · unknown; прошивка — · В lib/vod/movie.php MoviesTape пункт меню «Скачать» показывается при HD::get_dload_app()==true, а обработчик dload запускает найденный путь с -x2, file-allocation=none, continue=true и логом tmp_dir_path/aria.log; get_dload_app в lib/utils.php возвращает /opt/bin/aria2c либо /ltu/bin/aria2c, но только при существовании /codecpack/script/mw_download, иначе false.
plg-hdtv-smart-vod.c201 · code · unknown; прошивка — · При заданном selected_media_url, control_id=aria_inf и status=false диалог загрузок эталона назначает timer(3000) и GUI_EVENT_TIMER на повторный aria_inf через close_dialog_and_run. ↩
plg-hdtv-megatorrents.c099 · code · unknown; прошивка — · HD::get_aria2c_dload_info оставляет в aria.log только хвост после последней строки «====…», разбирает строки # (SIZE, SPD, ETA, DL), «Download complete:», «FILE:», таблицу «n|status|speed|name» и «download completed»; без aria.log сообщает «Закачки остановленны». ↩
plg-hdtv-smart-vod.c175 · code · unknown; прошивка — · В Zona.mobi при control_id, отличном от run и run_ltu_install, и handler_id=entry обработчик открывает папку, если существует /ltu/bin/aria2c либо файл get_data_path()/ltu_install; иначе, при отсутствии aria2c, показывает предупреждение LTU. ↩
plg-hdtv-smart-vod.c295 · code · unknown; прошивка — · knigavuhe загружает книги через действие dload: при selectFolder открывает file_list с save_data=dload_dir_path; если папка не выбрана — предлагает выбрать; при del запрашивает подтверждение, при deleteY удаляет папку книги, при openDir открывает её через embedded_app file_browser, при stop выполняет /tmp/curlDloadTerminate.sh; иначе (в том числе при all) создаёт каталог с очищенным именем книги и запускает bin/curlDload.sh в фоне.
plg-hdtv-smart-vod.c297 · code · unknown; прошивка — · bin/curlDload.sh читает platform_kind из /tmp/run/versions.txt и выбирает curl: для android — /firmware/bin/curl, для 87.. — ./curl.87xx, для 864. — ./curl.864x, для 867. — ./curl.867x, для 865. — ./curl.865x; каждый URL скачивается командой curl -C - -O -# --insecure, прогресс пишется в /tmp/curlDload.txt, а /tmp/curlDloadTerminate.sh завершает процесс.
plg-hdtv-smart-vod.c296 · code · unknown; прошивка — · Прогресс загрузок knigavuhe читается через CGI-вызов php-cgi -f www/cgi-bin/run.php; run.php читает /tmp/curlDload.txt, разбирает строки по \r, берёт текущий URL и последний процент, возвращает JSON вида {url: "NN%"} или [].
plg-hdtv-smart-vod.c304 · code · unknown; прошивка — · В knigavuhe экран серий показывает прогресс загрузки из actionGetDloadList: если существует /tmp/curlDload.txt и для URL серии в результате есть запись, иконка меняется на download.png, цвет на 19, а процент выводится в item_extra_info, если определено ViewItemParams::item_extra_info (иначе — префиксом [NN%] в caption); при непустом dload_dir_path, готовом файле в папке загрузок и отсутствии активной загрузки ($dp == false) ставится hdd.png.
plg-hdtv-smart-vod.c348 · code · unknown; прошивка — · bin/wget_dload Vimeo запускает /usr/bin/wget -O /.mp4, пишет лог в /tmp/plugins/Vimeo/.wget и скрипт остановки в /tmp/plugins/Vimeo/.kill; при --stop выполняет ".kill". lib/vod/vod_list_screen.php при control_id=video_dload, заданном selected_media_url и непустом существующем dload_dir_path, а lib/vod/movie.php в той же ветке по series_list вызывают его с --start md5(name), где file_url — результат mUrl::get_link после удаления mp4://.
plg-hdtv-smart-vod.c349 · code · unknown; прошивка — · get_dload_list Vimeo читает glob('/tmp/plugins/vimeo/*.wget') со строчной «vimeo», тогда как bin/wget_dload пишет в /tmp/plugins/Vimeo/ с заглавной «Vimeo»; кроме того, главное меню в ветке dload_list ссылается на SmartDloadScreen, но в tree.tsv пакета нет Smart_dload_screen.php.
plg-hdtv-smart-vod.c253 · code · unknown; прошивка — · В lib/vod/vod_series_list_screen.php всех девяти полных пакетов нет обработчиков aria_download, aria_download_all, aria_stop и open_folder, которые были в эталоне; у восьми VOD-пакетов список серий назначает SETUP, ENTER/PLAY, зелёную viewed, жёлтую qlt_item и POPUP_MENU, а у knigavuhe жёлтая кнопка назначена собственному действию dload. ↩
plg-dc-dunemdb-supplier-online-movies.c066 · code · unknown; прошивка — · При DlState::ENABLED = false обработчик игнорирует control_id downloads, download_torrent, delete_torrent_data и show_in_folder, поэтому менеджер загрузок плагина выключен. ↩
plg-dc-dunemdb-supplier-online-movies.c097 · code · unknown; прошивка — · StorageHelper читает /tmp/run/storage_list.xml, пропускает хранилища с is_persistfs_capable=1 и считает основным только хранилище с mount_path /tmp/mnt/D. ↩
plg-hdtv-rclone.c052 · code · unknown; прошивка — · bin/rclone_mount.sh вызывает rclone mount с --daemon, --config, --cache-dir, --vfs-cache-max-size, --vfs-cache-mode, --vfs-read-chunk-size, --vfs-cache-poll-interval, --buffer-size, --vfs-read-chunk-size-limit 1G, --uid 0, --gid 9997, --umask 022, --allow-other, --vfs-cache-max-age 675h, --dir-cache-time 672h, --no-check-certificate, --ca-cert /firmware/certs/ca-bundle.crt и --rc.
plg-hdtv-rclone.c053 · code · unknown; прошивка — · bin/rclone_mount.sh добавляет --read-only, если в каталоге данных нет файла autostart_write_mode.
plg-hdtv-rclone.c105 · code · unknown; прошивка — · Значения по умолчанию для монтирования: кеш 32M, режим writes, размер части чтения 16M, буфер 32M, интервал опроса кеша 60 с.
plg-hdtv-rclone.c099 · forum · unknown; прошивка — · В первом посте автор описывает кеш rclone: прочитанный файл сначала загружается в каталог кеша и хранится там 48 часов, а на время загрузки видео плеер не реагирует на пульт; кеш 32 МБ на системной флешке для видео не рекомендуется.
plg-hdtv-rclone.c095 · forum · Dune HD Pro 4K II, Dune HD Pro 4K Plus II, Dune HD Ultra Vision 4K, Dune HD Max Vision 4K, Dune HD Pro Vision 4K Solo, Dune HD Real Vision 4K, unknown; прошивка — · Автор темы указывает, что на плеерах Realtek RTD1619 после монтирования содержимое папки не появляется, но доступно через браузер сети → этот плеер → builtin_memory → папка подключения.
plg-dc-dunemdb-supplier-online-movies.c039 · code · unknown; прошивка — · Код плагина использует файл /flashdata/ts/ts как TorrServer — запускает его с параметрами --port 8095 -k -d /flashdata/ts -l /tmp/run/ts.log и затем опрашивает HTTP-порт. ↩↩
plg-dc-dunemdb-supplier-online-movies.c038 · code · unknown; прошивка — · Пакетный bin/ts — ELF; в его строках есть исходник playback/rmmpegdemux/src/rmmpegdemux.c, библиотека librmmpegdemux.so и функции RMMPEGDemuxOpen/RMMPEGDemuxSendData, но нет строк HTTP или TorrServer. ↩↩
plg-dc-torrent-center.c123 · code · unknown; прошивка — · SmartVod сохраняет favorite_movies в plugin_cookies как строку идентификаторов, разделённых запятыми.
plg-hdtv-moidom.c019 · code · unknown; прошивка — · Избранные фильмы хранятся в cookie favorite_movies как id через запятую; load_favorites догружает недостающие карточки, set_fav_movie_ids_to_cookies записывает список обратно.
plg-hdtv-peerstv.c016 · code · unknown; прошивка — · Избранные фильмы хранятся в plugin_cookies в поле favorite_movies как список id через запятую; пустые элементы отбрасываются.
plg-hdtv-pirates-radio.c048 · code · unknown; прошивка — · Избранные фильмы хранятся в cookie favorite_movies одной строкой id через запятую: если cookie задана, при чтении строка делится preg_split('/,/'), элементы без непробельных символов отбрасываются, при записи массив склеивается join(','), а при отсутствии cookie возвращается пустой массив.
plg-hdtv-zlostnyi-iptv.c074 · code · unknown; прошивка — · Избранные фильмы bcu хранятся в cookie favorite_movies — id через запятую.
plg-hdtv-freetv.c028 · code · unknown; прошивка — · Избранные фильмы видеотеки хранятся через HD::get_items('favorite_movies') и HD::save_items('favorite_movies', $ids).
plg-hdtv-smart-vod.c114 · code · unknown; прошивка — · Избранное HdKinoTeatr.Com читается и записывается через HD::get_items/save_items с именем favorite_movies, несмотря на имя методов с суффиксом from/to_cookies.
plg-dc-dunemdb-supplier-movies-rus.c023 · code · unknown; прошивка — · Плагин регистрируется старым путём: пишет описатель прямо в /tmp/movie_suppliers/movies_rus; элемента params/movie_suppliers в манифесте нет, файла bin/movie_suppliers_update.sh в пакете нет. ↩
plg-dc-globaltv--lib.c033 · code · android-dune-fw; прошивка 260827_0003_r24 · T::t1 в плагине непосредственно вставляет v1 в локальный ключ, а r24 предварительно применяет strip_param, который преобразует префиксы %tr% и %ext%. ↩
plg-dc-globaltv--lib.c034 · code · android-dune-fw; прошивка 260827_0003_r24 · Для получения enabled-набора ListUtils плагина использует all_list/def_list/on_off/avoid_empty, а r24 — all_services/def_ids/on_idset/off_idset. ↩
plg-dc-globaltv--lib.c035 · code · android-dune-fw; прошивка 260827_0003_r24 · Плагин при пустом enabled-наборе и avoid_empty возвращает def_idset; r24 get_enabled_idset удаляет off_idset из набора и возвращает результат без такого fallback. ↩
plg-gh-infinitygp-dune-jellyfin-bridge.c014 · code · android-dune-fw; прошивка — · launchDunePlayer копирует входящий Intent, задаёт компонент com.dunehd.app/com.dunehd.shell.PlayerProxyActivity и при наличии NFS-URL подменяет data, сохраняя mime type.
plg-gh-infinitygp-dune-jellyfin-bridge.c016 · code · android-dune-fw; прошивка — · Приложение добавляет к интенту плеера extra com.dunehd.playback.dune_params со значением skip_resume_position:1; если extra уже непустой и не содержит этот параметр, значение дописывается через запятую, а повторно тот же параметр не добавляется.
plg-hdtv-altv.c022 · code · unknown; прошивка — · Время программ EPG разбирается как EEST, а к каждому пункту прибавляется cookie epg_shift (коррекция в секундах).
plg-hdtv-pirates-radio.c041 · code · unknown; прошивка — · Для канала с числовым id < 1000 при разборе ответа vsetv.com время программ EPG считается как EEST, а к каждому элементу прибавляется cookie epg_shift (коррекция в секундах).
plg-dc-dunemdb-supplier-online-movies.c060 · code · unknown; прошивка — · do_ensure_own_torrserver создаёт /flashdata/ts; если /flashdata/ts/ts нет, на APK делает symlink на /bin/ts, а на не-APK возвращает false. При наличии ts выставляет 0755, запускает ts с --port 8095 -k -d /flashdata/ts -l /tmp/run/ts.log (на не-APK через /system/dunehd/dunehd_service do) и ждёт до 40 с по 0,4 с. ↩
plg-dc-dunemdb-supplier-movies-eng.c070 · inference · android-dune-fw; прошивка 260827_0003_r24 · В shell_ext r24 описатель плагина без playback_type, supported_video_types и play_action получает playback_type = stream, supported_video_types = video и play_action = '', то есть плагин участвует в поиске видео, а не трейлеров или дополнительных материалов. ↩
plg-dc-dunemdb-supplier-movies-rus.c057 · inference · unknown; прошивка — · Плагин пишет описатель прямо в /tmp/movie_suppliers и не пишет /tmp/movie_suppliers_changed.flag; на r24 оболочка перечитывает поставщиков по этому флагу, поэтому появление поставщика после boot_end не доказано. ↩
plg-dc-dunemdb-supplier-online-movies.c119 · inference · unknown; прошивка — · MovieTorrents::filter_all_torrents содержит безусловный return до кода фильтрации (после if ($this->movie->series_type) return; стоит ещё return;), поэтому фильтрация invalid-торрентов недостижима. ↩
plg-dc-dunemdb-supplier-movies-rus.c041 · inference · unknown; прошивка — · Поэтому для сериала, у которого на странице нет списка сезонов, а только один выбранный сезон, URL сезона пустой и эпизоды не собираются. ↩
plg-dc-globaltv--rows-epf.c061 · inference · unknown; прошивка — · Без PluginRowsPane::headers сообщение msg_search_empty, вероятно, не появится даже при отсутствии найденных каналов: rows уже содержит начальный VGAP. ↩
plg-gh-valerievitch-dune-plugin-acestreamsearch.c124 · inference · unknown; прошивка — · AceSearchTv::get_tv_stream_url вычисляет channel_id как substr(media_url, strpos(media_url, 'infohash=') + 9); если в media_url нет 'infohash=', strpos вернёт false и будет взята подстрока с 9-го символа, то есть неверный id. ↩
plg-hdtv-web-launchers.c040 · inference · unknown; прошивка — · vkmusic и moskva-fm запускают FlashLite-приложение через swf:// (vkmusic_ver…swf и moskva_fm_ver…swf); rtmp-player содержит SWF rtmp_player0_2…swf, но манифеста и swf://-действия у него нет. SDK указывает, что SMP87xx и Android не поддерживают FlashLite. ↩
plg-dc-screenshoter.c075 · inference, disputed · unknown; прошивка — · screenrecord сам останавливает запись через 180 секунд — поэтому плагин показывает обратный отсчёт от 180 ↩
plg-ds-dune-hd-tv.c046 · inference · unknown; прошивка — · receive5, вероятно, — локальный HTTP-ретранслятор потока: play.sh поднимает его на порту 18883, а плагин отдаёт плееру URL на localhost. ↩
plg-dune-remote-control.c078 · inference · unknown; прошивка — · Плагин сам не запускает воспроизведение и не управляет воспроизведением: он отдаёт каталог, избранное, сетевые папки и плейлисты, а просмотр и удалённый запуск воспроизведения выполняет мобильное приложение; конкретный механизм запуска в источнике не назван. ↩
plg-dune-remote-control.c032 · inference · unknown; прошивка — · Вероятно, put/append на устройстве не работают: код читает тело POST только из $HTTP_RAW_POST_DATA, а в php.ini рядом с php-cgi нет always_populate_raw_post_data и php://input нигде не используется — тогда разбирается пустой и возвращается operation_failed. ↩
plg-dune-remote-control.c072 · inference · unknown; прошивка — · Вероятно, через pls можно читать и перезаписывать любые файлы .m3u/.m3u8, доступные процессу CGI, а не только плейлисты плагина. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c053 · inference · unknown; прошивка — · Если очередная строка #EXTINF не содержит tvg-id, tvg-logo или group-title, канал получит значения из предыдущей строки; для group_name это также влияет на проверку «Промо». ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c054 · inference · unknown; прошивка — · При совпадении tvg-id двух каналов HashedArray::put оставляет оба элемента в последовательности, но map указывает на последний: список покажет дубли, а get_channel вернёт последний. ↩
plg-gh-mikhail-ilin-dune-plugin-weburgtv.c062 · inference · unknown; прошивка — · При ошибке HTTP file_get_contents возвращает false, simplexml_load_string не даёт programme, и EPG за день будет пустым; обработки этой ошибки в ветке нет. ↩
plg-hdtv-megaradio.c052 · inference · unknown; прошивка — · В Smart_file_screen.php импорт m3u в my_playlist выполняется после цикла foreach по строкам файла и использует последние значения $line и $name, а не добавляет каждую станцию внутри цикла. ↩
plg-hdtv-pirates-radio.c034 · inference · unknown; прошивка — · Если M3U_ID_FILE_URL недоступен, а data/myiptv_channels_id в пакете нет, все каналы получают id >= 1000 и EPG для них не запрашивается. ↩
plg-hdtv-plugtv.c057 · inference · unknown; прошивка — · list.xml не задаёт number ни одному каналу, поэтому intval($xml_tv_channel->number) даёт 0 для всех четырёх каналов, и сортировка по get_number() не различает их. ↩
plg-hdtv-plugtv.c058 · inference · unknown; прошивка — · В блоке try/catch вокруг file_get_contents нет проверки результата: file_get_contents не бросает исключение при ошибке, поэтому при недоступном list.xml будет предупреждение PHP, а затем simplexml_load_string(false) и исключение «Illegal XML document». ↩
plg-hdtv-surface-family.c031 · inference · unknown; прошивка — · В Radiorecord.ru get_tv_playback_url() при archive_ts > 0 берёт URL из $this->arcUrl[$archive_ts], но этот массив заполняется только в недостижимом коде get_day_epg_iterator(), поэтому архивный трек не получит URL. ↩
plg-hdtv-surface-family.c110 · inference · unknown; прошивка — · Cookie epg_shift, сохраняемый диалогом LSS, при построении EPG не читается: в get_day_epg_iterator() строка с $epg_shift и её использование закомментированы, а в handle_user_input() значение читается только как начальное для combobox, поэтому коррекция программы не влияет на выдаваемый EPG. ↩
plg-hdtv-liteiptv.c170 · inference · unknown; прошивка — · Ветки export_data и import_data файлового экрана myEPGserver вызывают HD::pCopyFolders, но в lib/utils.php этой копии такого метода нет; из интерфейса плагина эти ветки не открываются — setup передаёт только save_data = jsonsPath, а экран каналов — save_file action = select_file. ↩
plg-hdtv-zlostnyi-iptv.c054 · inference · unknown; прошивка — · В формате даты EPG-окна стоит «H:m:s» (m — месяц, а не минуты), поэтому границы окна сдвинуты на номер месяца в минутах. ↩
plg-dc-dunemdb-supplier-online-movies.c040 · inference · unknown; прошивка — · Пакетный bin/ts по содержимому не является TorrServer, поэтому запуск TorrServer из него на APK, вероятно, не работает; проверка — запуск на устройстве и HTTP-запрос к порту 8095. ↩
plg-dc-dunemdb-supplier-online-movies.c124 · inference · unknown; прошивка — · Класс DownloadsScreen и файл downloads_screen.php присутствуют, но экран недоступен: DlState выключен, обработчик downloads игнорируется, а entry_point downloads закомментирован в манифесте. ↩
plg-hdtv-megatorrents.c093 · inference · unknown; прошивка — · acestream_action проверяет только check === true, поэтому при неудачном запуске (возврат строки acestream_ip) поток продолжается к получению content_id без сообщения о незапущенном движке. ↩
plg-hdtv-rclone.c109 · inference · unknown; прошивка — · Плагин сам не вызывает воспроизведение: единственный путь к смонтированным файлам — открыть каталог встроенным файловым браузером (ActionFactory::launch_media_url с embedded_app://{name=file_browser}); действий vod_play или иного плеера в пакете нет. ↩