Переработка под iptvc

This commit is contained in:
2025-05-12 00:07:43 +08:00
parent f43843bb07
commit 252af50239
29 changed files with 1662 additions and 1268 deletions

View File

@@ -1,5 +1,16 @@
{###########################################################################
# Copyright (c) 2025, Антон Аксенов
# This file is part of iptv.axenov.dev web interface
# MIT License: https://git.axenov.dev/IPTV/web/src/branch/master/LICENSE
###########################################################################}
{% extends "template.twig" %}
{% block head %}
<script async type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
<script async nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
{% endblock %}
{% block header %}
<h2>FAQ</h2>
{% endblock %}
@@ -7,19 +18,20 @@
{% block content %}
<div class="row">
<div class="col-md-12">
<p>
<p class="mb-5">
В этом сервисе собраны ссылки на IPTV-плейлисты, которые находятся в открытом доступе.
Они отбираются вручную и постоянно проверяются здесь автоматически.
Они отбираются вручную и периодически проверяются здесь автоматически.
</p>
<p>
<p class="mb-5">
Сервис "{{ config('app.title') }}" ({{ base_url() }}) не предназначен для хранения или трансляции
видео/аудио потоков, программ телепередач, плейлистов и их поддержки. Этим занимаются администраторы
ресурсов, указанные как источник, и те, с чьих ресурсов ведётся трансляция.
</p>
<p>
За содержимое плейлистов и их качество отвечают авторы плейлистов. На стороне сервиса управляются сами
плейлисты.
<p class="mb-5">
</p>
<p class="mb-5">
Сервис "{{ config('app.title') }}" ({{ base_url() }}) предоставляет только информацию об активности
плейлистов, найденных в открытом доступе, и короткие ссылки на них для удобства использования в ПО.
@@ -27,270 +39,269 @@
тем, кто несёт за них ответственность (см. источники плейлистов).
</p>
<div class="accordion" id="faq-accordion">
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header" id="h-purpose">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#purpose" aria-expanded="false" aria-controls="purpose">
Для чего нужен сервис?
</button>
</h2>
<div id="purpose" class="accordion-collapse collapse" aria-labelledby="h-purpose" data-bs-parent="#faq-accordion">
<div class="accordion-body">
<p>Изначально сервис создавался "для себя", чтобы:</p>
<ul>
<li>сократить ссылки на сторонние плейлисты и их было проще вводить с пульта;</li>
<li>собрать в одном месте наиболее годные плейлисты.</li>
</ul>
</div>
</div>
<p class="mb-5">
Автор не занимается созданием, изменением, размещением и хранением плейлистов на сайте
"{{ config('app.title') }}" ({{ base_url() }}). Ни бесплатно, ни за деньги, ни бартером, ни за спасибо.
<b>Все плейлисты, которые отображаются на сайте "{{ config('app.title') }}" ({{ base_url() }}), созданы
и размещены третьими лицами на чужих серверах.</b>
</p>
</div>
<p class="mb-5">
Проект "{{ config('app.title') }}" ({{ base_url() }}) является бесплатным проектом с открытым исходным
кодом, он публичен и открыт для всех. Весь его исходный код размещён в публичных репозиториях под
лицензией MIT.
</p>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header" id="h-howtouse">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtouse" aria-expanded="false" aria-controls="howtouse">
Как пользоваться сервисом?
</button>
</h2>
<div id="howtouse" class="accordion-collapse collapse" aria-labelledby="h-howtouse" data-bs-parent="#faq-accordion">
<p class="accordion-body">
На главной странице отображается список доступных в плейлистов, их идентификаторы, статусы,
количество каналов и короткие ссылки.
Для просмотра списка каналов следует нажать на ссылку <b>"Подробнее..."</b> под интересующим плейлистом.
Для добавления плейлиста в свой медиаплеер удобно использовать <b>"Ссылку для ТВ"</b>.
Это делается для удобства ввода, например, на телевизоре с пульта.
На странице детальной информации также есть прямая ссылка на сам плейлист от источника.
Можно использовать и её.
</p>
</div>
</div>
<p class="mb-5">
Автор не взимает плату за размещение ссылок на сторонние плейлисты на сайте "{{ config('app.title') }}"
({{ base_url() }}). За содержимое плейлистов и их качество отвечают авторы плейлистов.
</p>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-howtoconnect">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtoconnect" aria-expanded="false" aria-controls="howtoconnect">
Как подключить плейлист?
</button>
</h2>
<div id="howtoconnect" class="accordion-collapse collapse" aria-labelledby="h-howtoconnect" data-bs-parent="#faq-accordion">
<p class="accordion-body">
<a href="https://www.google.com/search?q=%D0%BA%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20iptv%20%D0%BF%D0%BB%D0%B5%D0%B9%D0%BB%D0%B8%D1%81%D1%82%20%D0%BF%D0%BE%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5">
Добавь в свой медиаплеер</a> "Ссылку для ТВ".
</p>
</div>
</div>
<p class="mb-5">
Автор не зарабатывает на проекте "{{ config('app.title') }}" ({{ base_url() }}) и не собирается.
Всё, что ты видишь по этому адресу, сделано бесплатно и на энтузиазме.
Но ты можешь сделать добровольное пожертвование, которое поможет мне компенсировать затраты на
поддержку и техническое развитие проекта. Ссылки в шапке сайта.
</p>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-isitfree">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#isitfree" aria-expanded="false" aria-controls="isitfree">
Эти плейлисты и каналы в них -- бесплатны?
</button>
</h2>
<div id="isitfree" class="accordion-collapse collapse" aria-labelledby="h-isitfree" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Возможно. По крайней мере, так утверждают источники. Но гарантий никаких никто не даёт.
</p>
</div>
</div>
<!-- Для чего нужен сервис? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="why">
<h2>Для чего нужен сервис?</h2>
<p>Изначально сервис создавался "для себя", чтобы:</p>
<ul>
<li>сократить ссылки на сторонние плейлисты и их было проще вводить с пульта;</li>
<li>собрать в одном месте наиболее годные плейлисты.</li>
</ul>
<p>
Сейчас я сам им не пользуюсь, но им пользуются сотни людей ежедневно, чтобы найти
плейлист себе по душе или по необходимости. Например, чтобы смотреть заблокированные российские
телеканалы в свободной демократической европе.
</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header" id="h-logos">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#logos" aria-expanded="false" aria-controls="logos">
Откуда берутся логотипы каналов и программы передач?
</button>
</h2>
<div id="logos" class="accordion-collapse collapse" aria-labelledby="h-logos" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Всё это (не) указывается внутри плейлиста его авторами.
Но в некоторых плеерах можно вручную указывать программу передач (см. ниже).
</p>
</div>
</div>
<!-- Как пользоваться сервисом? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="how">
<h2>Как пользоваться сервисом?</h2>
<p>
На главной странице отображается список доступных в плейлистов, их идентификаторы, статусы,
количество каналов и короткие ссылки.
Для просмотра списка каналов следует нажать на ссылку <b>"Подробнее..."</b> под интересующим
плейлистом.
Для добавления плейлиста в свой медиаплеер удобно использовать <b>"Ссылку для ТВ"</b>.
На странице детальной информации также есть прямая ссылка на сам плейлист от источника.
Можно использовать и её.
</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-which">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#which" aria-expanded="false" aria-controls="which">
Какие плейлисты попадают сюда?
</button>
</h2>
<div id="which" class="accordion-collapse collapse" aria-labelledby="h-which" data-bs-parent="#faq-accordion">
<div class="accordion-body">
<p>Есть некоторые критерии, по которым плейлисты отбираются в этот список:</p>
<ul>
<li>Прежде всего -- каналы РФ и бывшего СНГ, но не только</li>
<li>Открытый источник</li>
<li>Прямая ссылка на плейлист</li>
<li>Автообновление плейлиста</li>
</ul>
<p>
В основном, в плейлистах именно трансляции телеканалов, но могут быть просто список каких-то
(мульт)фильмов и передач, находящихся на чужих дисках (как если бы вы сами составили плейлист с музыкой,
например).
</p>
</div>
</div>
</div>
<!-- Какие плейлисты попадают сюда? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="which">
<h2>Какие плейлисты попадают сюда?</h2>
<p>Есть некоторые критерии, по которым плейлисты отбираются в этот список:</p>
<ul>
<li>Прежде всего -- каналы РФ и бывшего СНГ, но не только</li>
<li>Открытый источник</li>
<li>Прямая ссылка на плейлист</li>
<li>Автообновление плейлиста</li>
</ul>
<p>
В основном, в плейлистах именно трансляции телеканалов, но могут быть просто список каких-то
(мульт)фильмов и передач, находящихся на чужих дисках (как если бы вы сами составили плейлист с музыкой,
например).
</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-statuses">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#statuses" aria-expanded="false" aria-controls="statuses">
Что означают статусы плейлистов?
</button>
</h2>
<div id="statuses" class="accordion-collapse collapse" aria-labelledby="h-statuses" data-bs-parent="#faq-accordion">
<div class="accordion-body">
<ul>
<li>
<span class="badge small text-dark bg-secondary">loading</span>
Загрузка данных, нужно немного подождать.
</li>
<li>
<span class="badge small text-dark bg-success">online</span>
Плейлист, возможно, активен. <i>Если каналов 0, значит, вероятно, источник поставил
редирект с плейлиста на куда ему вздумалось. То есть плейлист, наверное, отсутствует
и, возможно, больше никогда не появится по текущему адресу.</i>
</li>
<li>
<span class="badge small text-dark bg-warning">timeout</span>
Не удалось вовремя проверить плейлист, сервер с плейлистом слишком долго запрягает.
</li>
<li>
<span class="badge small text-dark bg-danger">offline</span>
Плейлист недоступен, вообще.
</li>
<li>
<span class="badge small text-dark bg-danger">error</span>
Ошибка при проверке плейлиста. Пора удалять плейлист отсюда.
</li>
</ul>
</div>
</div>
</div>
<!-- Что означают статусы? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="statuses">
<h2>Что означают статусы?</h2>
<p>Плейлист может быть в одном из трёх статусов:</p>
<ul>
<li>
<span class="badge small text-dark bg-secondary">unknown</span>
Плейлист ещё не проверялся, можно зайти позже.
</li>
<li>
<span class="badge small text-dark bg-success">online</span>
Плейлист активен. Это не значит, что он работает. В нём может быть 0 каналов.
</li>
<li>
<span class="badge small text-dark bg-danger">offline</span>
Плейлист недоступен, вообще никак. Главный кандидат на удаление с сайта.
</li>
</ul>
<p>Каждый канал в плейлисте может быть в одном из трёх статусов:</p>
<ul>
<li>
<span class="text-success"><ion-icon name="radio-button-on-outline"></ion-icon></span>
Канал активен. Это не значит, что он работает. Там может транслироваться какая-нибудь заглушка (например, от Wink).
</li>
<li>
<span class="text-danger"><ion-icon name="radio-button-on-outline"></ion-icon></span>
Канал не работает.
</li>
</ul>
<p>
Я не гарантирую корректность и актуальность информации, которую ты увидишь здесь.
Хотя я и стараюсь улучшать качество проверок, но всё же рекомендую проверять желаемые
плейлисты самостоятельно вручную, ибо нет никаких гарантий:
</p>
<ul>
<li>что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;</li>
<li>что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);</li>
<li>что подгрузится корректное количество каналов и их список.</li>
</ul>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-donttrust">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#donttrust" aria-expanded="false" aria-controls="donttrust">
Почему нельзя доверять результатам проверки?
</button>
</h2>
<div id="donttrust" class="accordion-collapse collapse" aria-labelledby="h-donttrust" data-bs-parent="#faq-accordion">
<div class="accordion-body">
<p>
Я не гарантирую корректность и актуальность информации, которую ты увидишь здесь.
Хотя я и стараюсь улучшать качество проверок, но всё же рекомендую проверять желаемые
плейлисты самостоятельно вручную, ибо нет никаких гарантий:
</p>
<ul>
<li>что это вообще плейлисты, а не чьи-то архивы с мокрыми кисками;</li>
<li>что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;</li>
<li>что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);</li>
<li>что подгрузится корректное количество каналов и их список (хотя на это я ещё могу влиять и стараюсь как-то улучшить).</li>
</ul>
</div>
</div>
</div>
<!-- Как часто обновляется список плейлистов? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="how-often-list">
<h2>Как часто обновляется список плейлистов?</h2>
<p>
Время от времени.
Иногда я захожу сюда и проверяю всё ли на месте, иногда занимаюсь какими-то доработками.
Если есть кандидаты на добавление, то читай ниже.
</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-guarantee">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#guarantee" aria-expanded="false" aria-controls="guarantee">
Какова гарантия, что я добавлю себе плейлист отсюда и он работать хоть сколько-нибудь долго?
</button>
</h2>
<div id="guarantee" class="accordion-collapse collapse" aria-labelledby="h-guarantee" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Никакова.
Мёртвые плейлисты я периодически вычищаю, реже -- добавляю новые.
ID плейлистов могут меняться, поэтому вполне может произойти внезапная подмена одного другим, однако
намеренно я так не делаю.
Если один плейлист переезжает на новый адрес, то я ставлю временное перенаправление со старого ID на
новый.
Плюс читай выше про доверие результатам проверки (проблема может быть не стороне сервиса).
</p>
</div>
</div>
<!-- Как часто обновляется содержимое плейлистов? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="how-often-chan">
<h2>Как часто обновляется содержимое плейлистов?</h2>
<p>Зависит от источника. Я этим не занимаюсь.</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header" id="h-panic">
<button class="accordion-button text-warning bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#panic" aria-expanded="false" aria-controls="panic">
У меня перестал работать/исчез любимый канал/плейлист! Нет лого канала/программы передач!
</button>
</h2>
<div id="panic" class="accordion-collapse collapse" aria-labelledby="h-panic" data-bs-parent="#faq-accordion">
<p class="accordion-body">Ну штош ¯\_(ツ)_/¯</p>
</div>
</div>
<!-- Есть приложение? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="app">
<h2>Есть приложение?</h2>
<p>Нет, и не планируется. Ищи плеер и добавляй плейлист туда по ссылке.</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-epg">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#epg" aria-expanded="false" aria-controls="epg">
Где взять программу передач (EPG)?
</button>
</h2>
<div id="epg" class="accordion-collapse collapse" aria-labelledby="h-epg" data-bs-parent="#faq-accordion">
<div class="accordion-body">
<ul>
<li><b>https://iptvx.one/viewtopic.php?f=12&t=4</b></li>
<li>https://iptvmaster.ru/epg-for-iptv</li>
<li>https://google.com</li>
</ul>
</div>
</div>
</div>
<!-- Эти плейлисты и каналы в них -- бесплатны? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="is-pls-free">
<h2>Эти плейлисты и каналы в них -- бесплатны?</h2>
<p>
Возможно. По крайней мере, так утверждают источники, которые их распространяют.
Но гарантий никаких никто не даёт. Любой плейлист и любой канал в любом плейлисте может сдохнуть
навсегда в любой момент. Или показывать заглушку.
</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-howoftenlist">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howoftenlist" aria-expanded="false" aria-controls="howoftenlist">
Как часто обновляется список плейлистов?
</button>
</h2>
<div id="howoftenlist" class="accordion-collapse collapse" aria-labelledby="h-howoftenlist" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Время от времени.
Иногда я захожу сюда и проверяю всё ли на месте, иногда занимаюсь какими-то доработками.
Если есть кандидаты на добавление, то читай ниже.
</p>
</div>
</div>
<!-- Заглушка 1 -->
<div class="alert my-5 bg-dark text-light border-secondary" id="paywall1">
<h2 class="text-warning">
На канале отображается заглушка:<br /><br />
<span class="fst-italic">"Уважаемый клиент! Для возобновления просмотра Вам необходимо использовать не более 2 устройств"</span><br /><br />
или<br /><br />
<span class="fst-italic">"Ваша подписка не активна"</span>
</h2>
<p>Кто-то воткнул платный канал в плейлист и распространил его как бесплатный.</p>
<p>Забудь про этот плейлист. Ищи другой. Без вариантов. Такова цена халявы.</p>
<p>Нет, я не буду это исправлять.</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-howoftench">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howoftench" aria-expanded="false" aria-controls="howoftench">
Как часто обновляется содержимое плейлистов?
</button>
</h2>
<div id="howoftench" class="accordion-collapse collapse" aria-labelledby="h-howoftench" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Зависит от источника. Я этим не занимаюсь.
</p>
</div>
</div>
<!-- Заглушка 2 -->
<div class="alert my-5 bg-dark text-light border-secondary" id="paywall2">
<h2 class="text-warning">
На канале отображается заглушка:<br /><br />
<span class="fst-italic">"Просмотр ТВ-каналов, фильмов и сериалов доступен только в официальных приложения Wink и на территории России"</span>
</h2>
<p>Кто-то воткнул платный канал в плейлист и распространил его как бесплатный.</p>
<p>Попробуй использовать плеер, который позволяет указать User-Agent, и указать User-Agent:</p>
<pre class="fw-bold">Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer</pre>
<p>Или подключи Wink. Или забудь про этот плейлист и ищи другой.</p>
<p>Нет, я не буду это исправлять.</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-api">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#api" aria-expanded="false" aria-controls="api">
Есть ли API? Как им пользоваться?
</button>
</h2>
<div id="api" class="accordion-collapse collapse" aria-labelledby="h-api" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Есть, подробности <a href="https://github.com/anthonyaxenov/iptv2#api">здесь</a>.
</p>
</div>
</div>
<!-- Добавь канал! -->
<div class="alert my-5 bg-dark text-light border-secondary" id="add-chan">
<h2 class="text-danger">Добавь канал!</h2>
<p class="h1 my-5">Нет.</p>
</div>
<div class="accordion-item bg-dark text-light">
<h2 class="accordion-header bg-dark" id="h-howtoadd">
<button class="accordion-button text-light bg-dark" type="button" data-bs-toggle="collapse" data-bs-target="#howtoadd" aria-expanded="false" aria-controls="howtoadd">
Как пополнить этот список?
</button>
</h2>
<div id="howtoadd" class="accordion-collapse collapse" aria-labelledby="h-howtoadd" data-bs-parent="#faq-accordion">
<p class="accordion-body">
Сделать pull-request в <a href="https://github.com/anthonyaxenov/iptv">репозиторий</a>.
Я проверю плейлист и добавлю его в общий список, если всё ок.
</p>
</div>
</div>
<!-- Добавь плейлист! -->
<div class="alert my-5 bg-dark text-light border-secondary" id="create-list">
<h2 class="text-danger">Сделай плейлист!</h2>
<p class="h1 my-5">Нет.</p>
</div>
<!-- Откуда берутся логотипы каналов и программы передач? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="logos">
<h2>Откуда берутся логотипы каналов и программы передач?</h2>
<p>
Всё это (не) указывается внутри плейлиста его авторами.
Но в некоторых плеерах можно вручную указывать программу передач (см. ниже).
</p>
</div>
<!-- Нет лого канала! -->
<div class="alert my-5 bg-dark text-light border-secondary" id="channel-no-logo">
<h2>Нет лого канала!</h2>
<p>Грустно ¯\_(ツ)_/¯</p>
</div>
<!-- Где спортивные каналы? Почему они не работают? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="sport">
<h2 class="text-primary">Где спортивные каналы? Почему они не работают?</h2>
<p>
Спортивные телеканалы очень пристально следят за тем, куда текут их трансляции. Они зарабатывают
на спорте и активно защищают свои права на трансляцию каких-то уникальных спортивных состязаний и
событий. Они активно рубят все левые источники, приходят к авторам плейлистов и любезно
просят удалить любые упоминания, ссылки и трансляции их каналов из паблика. Поэтому некоторые
авторы сразу предупреждают, что в плейлистах таких каналов нет. Судиться потом, вот это всё...
нафиг надо.
</p>
<p>
Нет, я не буду добавлять каналы в плейлисты.
Если будет спортивный рабочий плейлист -- добавлю на сайт.
</p>
</div>
<!-- Какова гарантия, что я добавлю себе плейлист отсюда и он будет работать? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="guarantee">
<h2>Какова гарантия, что я добавлю себе плейлист отсюда и он будет работать?</h2>
<p>Никакова.</p>
<p>Мёртвые плейлисты я периодически вычищаю, реже -- добавляю новые.
ID плейлистов могут меняться, поэтому вполне может произойти внезапная подмена одного другим, однако
это происходит редко.</p>
<p>Если один плейлист переезжает на новый адрес, то я ставлю временное перенаправление со старого ID на
новый.</p>
<p>Плюс читай выше про доверие результатам проверки (проблема может быть не стороне сервиса).</p>
</div>
<!-- У меня перестал работать/исчез любимый канал/плейлист! -->
<div class="alert my-5 bg-dark text-light border-secondary" id="down">
<h2 class="text-danger">У меня перестал работать/исчез любимый канал/плейлист!</h2>
<p>Ну штош ¯\_(ツ)_/¯</p>
</div>
<!-- Где взять программу передач (EPG)? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="epg">
<h2>Где взять программу передач (EPG)?</h2>
<ul>
<li><b>https://iptvx.one/viewtopic.php?f=12&t=4</b></li>
<li>https://iptvmaster.ru/epg-for-iptv</li>
<li>https://google.com</li>
</ul>
</div>
<!-- В плейлистах одна порнуха! -->
<div class="alert my-5 bg-dark text-light border-secondary" id="adult">
<h2 class="text-danger">В плейлистах одна порнуха!</h2>
<p>Ну, бывает, да. Смотри сколько хочешь. Или не смотри. Или не хоти.</p>
<h2 class="text-danger">Но у меня же дети! Яжмать! Яжотец!</h2>
<p>Я вот детям порнуху не показываю. Ты тоже не показывай.</p>
</div>
<!-- Есть ли API? Как им пользоваться? -->
{# <div class="alert my-5 bg-dark text-light border-secondary">#}
{# <h2 id="api">Есть ли API? Как им пользоваться?</h2>#}
{# <p>Есть, подробности <a href="https://github.com/anthonyaxenov/iptv2#api">здесь</a>.</p>#}
{# </div>#}
<!-- Как добавить плейлист в список? -->
<div class="alert my-5 bg-dark text-light border-secondary" id="pr">
<h2>Как добавить плейлист в список?</h2>
<p>
Сделать pull-request в <a href="https://git.axenov.dev/IPTV/playlists">репозиторий</a>.
Я проверю плейлист и добавлю его в общий список, если всё ок.
</p>
</div>
</div>
</div>