Initial commit
57
src/assets/css/custom.css
Normal file
@@ -0,0 +1,57 @@
|
||||
.chapter li.part-title {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
main ol li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
border-bottom-left-radius: 6px;
|
||||
border-bottom-right-radius: 6px;
|
||||
border-top-left-radius: 6px;
|
||||
border-top-right-radius: 6px;
|
||||
box-sizing: border-box;
|
||||
color: rgb(33, 37, 41);
|
||||
display: inline-block;
|
||||
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 10.5px;
|
||||
font-weight: 700;
|
||||
height: 17.8438px;
|
||||
line-height: 10.5px;
|
||||
margin-right: 4px;
|
||||
padding-bottom: 3.675px;
|
||||
padding-left: 6.825px;
|
||||
padding-right: 6.825px;
|
||||
padding-top: 3.675px;
|
||||
text-align: center;
|
||||
text-size-adjust: 100%;
|
||||
text-wrap-mode: nowrap;
|
||||
vertical-align: baseline;
|
||||
white-space-collapse: collapse;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.badge.online {
|
||||
background-color: rgb(25, 135, 84);
|
||||
}
|
||||
|
||||
.badge.offline {
|
||||
background-color: rgb(220, 53, 69);
|
||||
}
|
||||
|
||||
.badge.unknown {
|
||||
background-color: rgb(108, 117, 125);
|
||||
}
|
||||
|
||||
.badge.adult {
|
||||
background-color: rgb(255, 193, 7)
|
||||
}
|
||||
|
||||
.icon.online {
|
||||
color: rgb(25, 135, 84);
|
||||
}
|
||||
|
||||
.icon.offline {
|
||||
color: rgb(220, 53, 69);
|
||||
}
|
||||
BIN
src/assets/img/favicon/logo.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/img/paywalls/1.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
src/assets/img/paywalls/2.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
src/assets/img/paywalls/3.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/img/paywalls/wink.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/img/players/iptvnator/add1.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/img/players/iptvnator/add2.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/assets/img/players/iptvnator/main.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
src/assets/img/players/m3u/add1.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
src/assets/img/players/m3u/add2.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
src/assets/img/players/m3u/main.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/img/players/m3u/ua1.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/assets/img/players/m3u/ua2.jpg
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
src/assets/img/players/vlc/add1-mob.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/img/players/vlc/add1.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
src/assets/img/players/vlc/add2-mob.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/img/players/vlc/add2.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
src/assets/img/players/vlc/main.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
src/assets/img/players/yuki-iptv/add.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
src/assets/img/players/yuki-iptv/main.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
src/assets/img/pls-details/ch-list.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
src/assets/img/pls-details/error.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
src/assets/img/pls-details/filter.jpg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
src/assets/img/pls-details/hint.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/assets/img/pls-details/tab1.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
src/assets/img/pls-details/tab2.jpg
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
src/assets/img/pls-list/mobile.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
src/assets/img/pls-list/pc.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
92
src/common/checks.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
icon: material/file-refresh-outline
|
||||
tags: ["статусы", "плейлисты", "каналы", "iptvc"]
|
||||
---
|
||||
|
||||
# :material-file-refresh-outline: Как проверяются плейлисты
|
||||
|
||||
Плейлисты проверяются автоматически с некоей периодичностью при помощи [iptvc](../iptvc/how-it-works.md).
|
||||
Она может настраиваться мной в разное время, чтобы сбалансировать нагрузку на сервер.
|
||||
|
||||
!!! danger "Я не гарантирую корректность и актуальность плейлистов, которые ты увидишь на сайте, как и корректность результатов их проверки."
|
||||
После прочтения этой страницы ты поймёшь почему.
|
||||
|
||||
Хотя я и стараюсь улучшать качество проверок, но всё же рекомендую проверять желаемые плейлисты самостоятельно вручную, ибо нет никаких гарантий:
|
||||
|
||||
* что плейлист (не) работоспособен
|
||||
* он может быть и рабочий, но проверка может не сработать из-за таймаута запроса;
|
||||
* он уже может быть и нерабочим, но результаты последней проверки показывают обратное;
|
||||
* что плейлист корректно обработается (будут правильно определён список каналов, их названия, атрибуты и пр.);
|
||||
* что транслируемый контент соответствует названиям каналов;
|
||||
* что сейчас или через X времени там не окажется [заглушка](../faq.md#заглушка).
|
||||
|
||||
<a id="плейлисты"></a>
|
||||
## Плейлисты
|
||||
|
||||
Каждый плейлист может быть в одном из трёх статусов:
|
||||
|
||||
* <span class="badge unknown">unknown</span> -- Плейлист в очереди на проверку
|
||||
Он сменит свой статус в ближайшие минуты.
|
||||
|
||||
* <span class="badge online">online</span> -- Плейлист активен
|
||||
Это не значит, что он работает.
|
||||
Это значит, что адрес плейлиста корректен и там, *вероятно*, *что-то* транслируется.
|
||||
В нём может быть 0 каналов -- значит, содержимое потёрли.
|
||||
|
||||
* <span class="badge offline">offline</span> -- Плейлист недоступен
|
||||
Если этот статус висит постоянно, значит это главный кандидат на удаление из проекта.
|
||||
Но это может быть просто разовый сбой (например, таймаут проверки), и, *возможно*, скоро он станет доступен.
|
||||
|
||||
!!! info "Обрати внимание"
|
||||
Независимо от статуса плейлиста на сайте, его можно добавить в свой плеер по "Ссылке для ТВ" и проверить самостоятельно.
|
||||
Проверка плейлиста не влияет на его работоспособность.
|
||||
|
||||
<a id="каналы"></a>
|
||||
## Каналы
|
||||
|
||||
Каждый канал в любом плейлисте может быть в одном из трёх статусов:
|
||||
|
||||
* <span class="icon online"><ion-icon name="radio-button-on-outline"></ion-icon></span> -- *Возможно*, канал работает
|
||||
Но там может транслироваться какая-нибудь [заглушка](../faq.md#заглушка) (например, от [Wink](../faq.md#wink)).
|
||||
|
||||
* <span class="icon offline"><ion-icon name="radio-button-on-outline"></ion-icon></span> -- *Возможно*, канал не работает
|
||||
Чем больше таких каналов в плейлисте, тем сложнее будет листать плейлист в плеере или на ТВ.
|
||||
Но, *возможно*, *когда-нибудь* плейлист обновят и канал будет работать исправно.
|
||||
Также и здесь может быть просто разовый сбой (например, таймаут проверки), и (возможно) скоро он станет доступен.
|
||||
|
||||
!!! info "Обрати внимание"
|
||||
Пропорции рабочих и нерабочих каналов в плейлистах может и будет меняться от проверки к проверке.
|
||||
Это нормально, таковы технические особенности проверки.
|
||||
|
||||
<a id="возможности"></a>
|
||||
## Возможности
|
||||
|
||||
В описаниях плейлистов, которые находятся в статусе <span class="badge online">online</span>, можно встретить следующие иконки:
|
||||
|
||||
* <ion-icon name="folder-open-outline"></ion-icon> -- каналы плейлиста разбиты на группы (например, музыкальные каналы и региональные);
|
||||
* <ion-icon name="newspaper-outline"></ion-icon> -- плейлист предоставляет программу передач для каналов;
|
||||
* <ion-icon name="play-back"></ion-icon> -- плейлист предоставляет возможность перемотки передач.
|
||||
|
||||
Если плейлист недоступен или непроверен, этих иконок не будет.
|
||||
|
||||
<a id="для-взрослых"></a>
|
||||
## Контент для взрослых
|
||||
|
||||
Это откровенно порнографический, эротический или другой контент, неприемлемый для детской психики (например, жанровые каналы с фильмами ужасов).
|
||||
|
||||
Если при проверке плейлиста обнаружен хотя бы один канал для взрослых, то сам канал и весь плейлист помечается значком <span class="badge adult">18+</span>
|
||||
|
||||
Такие каналы определяются благодаря правилам, описанным в файле [channels.json](../formats/channels.md).
|
||||
Они применяются к названиям каналов и их атрибутам (`tvg-id`, `tvg-name`), которые описывают канал в плейлисте.
|
||||
|
||||
Для каналов со взрослым контентом применяется тег `adult`.
|
||||
|
||||
!!! warning "Обрати внимание"
|
||||
Далеко не все каналы могут быть помечены таким тегом.
|
||||
Хотя набор правил для тегов очень богат, но невозможно угадать все каналы с приемлемой точностью.
|
||||
Почему -- читай [здесь](../formats/channels.md#warnings).
|
||||
|
||||
!!! info "Примечание"
|
||||
Теперь должно стать понятно, почему я не даю и не могу дать никаких гарантий относительно результатов проверок и тегов.
|
||||
Каждый раз это просто непредсказуемый процесс.
|
||||
|
||||
14
src/common/connect.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
icon: material/television-play
|
||||
tags: ["плееры", "плейлисты"]
|
||||
---
|
||||
|
||||
# :material-television-play: Как подключить плейлист
|
||||
|
||||
1. Найти какой-нибудь [плеер](./players.md)
|
||||
2. Узнать как в него добавить плейлист по ссылке
|
||||
3. Найти желаемый плелист из [списка](./list.md)
|
||||
4. Найти на странице ["Ссылку для ТВ"](details.md#ссылка-для-тв) и ввести (скопировать) её в поле ввода адреса в плеере
|
||||
|
||||
Для некоторых [плееров](./players.md) уже есть информация как добавить плейлист.
|
||||
|
||||
156
src/common/details.md
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
icon: material/table-eye
|
||||
tags: ["сайт", "статусы", "каналы"]
|
||||
---
|
||||
|
||||
# :material-table-eye: Страница плейлиста
|
||||
|
||||
Страница содержит подробности об одном конкретном плейлисте.
|
||||
|
||||
В её заголовке указано [название плейлиста](../formats/playlists.md#name).
|
||||
|
||||
Ниже страница разделена на две части: слева две вкладки с информацией и список каналов справа.
|
||||
|
||||
Рассмотрим всё это подробнее.
|
||||
|
||||
## Вкладка "Основная информация"
|
||||
|
||||

|
||||
|
||||
На этой вкладке выводится таблица со следующими строками:
|
||||
|
||||
* **Код** -- короткий уникальный [код плейлиста](../formats/playlists.md#code);
|
||||
* **Описание** -- [описание плейлиста](../formats/playlists.md#desc) (при наличии);
|
||||
* **Ccылка для ТВ** -- короткая ссылка, которую можно использовать для [подключения плейлиста](../common/connect.md), подробнее о ней см. ниже;
|
||||
* **Источник** -- [ссылка на ресурс](../formats/playlists.md#src), где была найдена ссылка на плейлист (при наличии);
|
||||
* **Наполнение**:
|
||||
* группы -- количество групп, на которые поделены каналы;
|
||||
* каналы -- количества каналов общее, онлайн и оффлайн;
|
||||
(всё по нулям, если плейлист <span class="badge offline">offline</span>)
|
||||
* **Возможности** -- наличие программы передач и перемотки каналов;
|
||||
* **M3U** -- [прямая ссылка](../formats/playlists.md#pls) на плейлист;
|
||||
* **Проверка плейлиста** -- дата и время последней [проверки](../common/checks.md) плейлиста с помощью [iptvc](../iptvc/how-it-works.md);
|
||||
* **Ошибка проверки** -- текст ошибки, которая возникла при проверке
|
||||
(только если плейлист <span class="badge offline">offline</span>)
|
||||
|
||||
Если при проверке плейлиста возникла ошибка, то она будет отображена красным цветом сразу под заголовком:
|
||||
|
||||
??? quote "Скриншот страницы с ошибкой"
|
||||

|
||||
|
||||
!!! info
|
||||
Если в тексте ошибки фигурирует слово `Timeout` и плейлист <span class="badge offline">offline</span> -- это ерунда.
|
||||
Скорее всего, при следующей проверке статус позеленеет.
|
||||
Просто в момент проверки сервер не получил файл плейлиста вовремя, а т. к. долго ждать он не может, поэтому плюнул и пошёл проверять другие.
|
||||
|
||||
!!! info "Обрати внимание"
|
||||
Независимо от статуса плейлиста на сайте, его можно добавить в свой плеер по "Ссылке для ТВ" и проверить самостоятельно.
|
||||
Проверка плейлиста не влияет на его работоспособность.
|
||||
|
||||
## Вкладка "Исходный текст"
|
||||
|
||||

|
||||
|
||||
Здесь выводится плейлист как он есть.
|
||||
Над этим текстом -- две кнопки:
|
||||
|
||||
* зелёная с кодом плейлиста для скачивания файла;
|
||||
* нажатие на **QR-код** покажет, внезапно, QR-код, в который закодирована "Ссылка для ТВ".
|
||||
|
||||
## Список каналов
|
||||
|
||||

|
||||
|
||||
В заголовке пишется их общее количество.
|
||||
|
||||
Если общее количество каналов 500 и более, то под заголовком отобразится подсказка, чтобы ты не убегал раньше времени.
|
||||
Надо просто подождать несколько секунд, список догрузится и подсказка исчезнет.
|
||||
|
||||
??? quote "Скриншот подсказки"
|
||||
!!! success "Да, это недоработка, подпёртая костылём, но это беспокоит меня меньше всего."
|
||||
Может быть когда-нибудь сделаю лучше. Или нет.
|
||||

|
||||
|
||||
### Поиск каналов
|
||||
|
||||
Количество плейлистов в заголовке над списком учитывает найденные с помощью фильтров каналы.
|
||||
|
||||
Под заголовком есть **выпадающий список групп**.
|
||||
Он отображается только если плейлист поделён на группы.
|
||||
Справа -- **кнопка сброса** для отображения всех каналов.
|
||||
|
||||
Под списком групп расположилась **строка поиска**.
|
||||
Она есть вообще всегда.
|
||||
Туда можно начать вводить название канала, и по мере ввода список будет сужаться.
|
||||
|
||||
Справа от строки поиска есть **кнопки фильтрации каналов по их статусу**.
|
||||
Справа -- **кнопка сброса** для отображения всех каналов.
|
||||
|
||||
Под строкой поиска есть [**облако тегов**](../formats/channels.md#доступные-теги).
|
||||
|
||||
!!! question inline end "Про теги"
|
||||
Откуда они там появляются, можешь прочесть [здесь](../common/how-it-works.md) и [здесь](../iptvc/how-it-works.md).
|
||||
|
||||
На любой из них можно нажать, и тогда в списке останутся каналы только с выбранными тегами.
|
||||
Выбранные теги подсвечиваются серым.
|
||||
**Сбросить** выбор можно повторным нажатием на каждый, либо кнопкой сброса у строки поиска.
|
||||
|
||||
??? quote "Пример фильтрации"
|
||||

|
||||
|
||||
<a id="ссылка-для-тв"></a>
|
||||
## Ссылка для ТВ
|
||||
|
||||
Она может быть задана в нескольких форматах.
|
||||
Поясню базовые принципы формирования адреса:
|
||||
|
||||
1. необязателен префикс протокола `http://` или `https://` перед доменом
|
||||
2. обязателен домен `iptv.axenov.dev` или `m3u.su`
|
||||
3. обязателен `/код` плейлиста после домена
|
||||
4. необязателен постфикс расширения после кода `.m3u` или `.m3u8`
|
||||
|
||||
На примере ниже я наглядно покажу все возможные ссылки на один и тот же плейлист с кодом `ru`:
|
||||
|
||||
```
|
||||
https://iptv.axenov.dev/ru.m3u8
|
||||
https://iptv.axenov.dev/ru.m3u
|
||||
https://iptv.axenov.dev/ru
|
||||
http://iptv.axenov.dev/ru.m3u8
|
||||
http://iptv.axenov.dev/ru.m3u
|
||||
http://iptv.axenov.dev/ru
|
||||
iptv.axenov.dev/ru.m3u8
|
||||
iptv.axenov.dev/ru.m3u
|
||||
iptv.axenov.dev/ru
|
||||
iptv.axenov.dev/ru.m3u8
|
||||
iptv.axenov.dev/ru.m3u
|
||||
iptv.axenov.dev/ru
|
||||
https://m3u.su/ru.m3u8
|
||||
https://m3u.su/ru.m3u
|
||||
https://m3u.su/ru
|
||||
http://m3u.su/ru.m3u8
|
||||
http://m3u.su/ru.m3u
|
||||
http://m3u.su/ru
|
||||
m3u.su/ru.m3u8
|
||||
m3u.su/ru.m3u
|
||||
m3u.su/ru
|
||||
m3u.su/ru.m3u8
|
||||
m3u.su/ru.m3u
|
||||
m3u.su/ru
|
||||
```
|
||||
|
||||
!!! info ""
|
||||
Запоминать их не надо.
|
||||
Главное помнить как они формируются.
|
||||
|
||||
По идее, можешь использовать любую сылку из подобных, т. к. технически они отработают одинаково.
|
||||
|
||||
А вот твой [плеер](players.md) может не принять какую-то из них.
|
||||
Так что, если не подойдёт один формат, используй другой -- добавь префикс или суффикс.
|
||||
|
||||
Префикс плееру требуется чаще всего, потому что он при добавлении плейлиста проверяет -- а ссылку ли мне вообще предоставил пользователь?
|
||||
|
||||
По наличию суффикса плеер может определить -- а прямая ли это ссылка на файл плейлиста?
|
||||
Технически -- нет, непрямая, потому что файла плейлиста у меня на сервере нет физически и сервер должен сделать редирект уже на сам плейлист.
|
||||
Но благодаря такой обманке плеер его наверняка подгрузит.
|
||||
|
||||
Или нет.
|
||||
16
src/common/how-it-works.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
icon: material/cogs
|
||||
tags: ["плейлисты", "каналы", "теги", "iptvc", "плееры", "сайт"]
|
||||
---
|
||||
|
||||
# :material-cogs: Как работает сервис
|
||||
|
||||
1. В специальном файле [playlists.ini](../formats/playlists.md) описываются плейлисты, которые кем-то опубликованы в интернете.
|
||||
Каждому плейлисту присваивается свой уникальный **короткий код**.
|
||||
2. В специальном файле [channels.json](../formats/channels.md) описываются **ключевые слова** (метки, теги), которые характеризуют каналы.
|
||||
3. В фоновом режиме [работает ПО](../iptvc/how-it-works.md), которое периодически [проверяет все плейлисты](checks.md) из п. 1 и **присваивает теги** каналам из п. 2.
|
||||
4. На главной странице сайта выводится [весь список плейлистов](list.md), которые описаны в п. 1: с тегами, описаниями и короткими кодами.
|
||||
5. Каждому плейлисту на сайте посвящена [своя страничка](details.md), где отображаются результаты его проверки, проверки его каналов (с присвоенными тегами) и пр.
|
||||
6. Когда пользователь [обращается к плейлисту](connect.md) по короткому коду (например, `https://m3u.su/xyz`), то происходит **переадресация** на исходный плейлист.
|
||||
|
||||
Более подробную информацию ты можешь прочесть в соответствующих разделах документации.
|
||||
17
src/common/index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
icon: material/file-document
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# Общая информация
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- [:material-cogs: Как работает сервис](how-it-works.md)
|
||||
- [:material-file-eye-outline: Как отбираются плейлисты](selection.md)
|
||||
- [:material-file-refresh-outline: Как проверяются плейлисты](checks.md)
|
||||
- [:fontawesome-solid-list-check: Список плейлистов](list.md)
|
||||
- [:material-table-eye: Страница плейлиста](details.md)
|
||||
- [:material-television-play: Как подключить плейлист](connect.md)
|
||||
- [:material-multimedia: IPTV плееры](players.md)
|
||||
</div>
|
||||
36
src/common/list.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
icon: fontawesome/solid/list-check
|
||||
tags: ["сайт", "плейлисты"]
|
||||
---
|
||||
|
||||
# :fontawesome-solid-list-check: Список плейлистов
|
||||
|
||||
Это главная страница сайта.
|
||||
|
||||

|
||||
|
||||
Наверху отображаются:
|
||||
|
||||
* дата последнего изменения файла [playlists.ini](../formats/playlists.md)
|
||||
* общее количество плейлистов и с разделением по статусам.
|
||||
|
||||
Ниже -- спиcок плейлистов.
|
||||
|
||||
## Из чего состоит список
|
||||
|
||||
* **Код** -- короткий уникальный [код плейлиста](../formats/playlists.md#code)
|
||||
* **Информация о плейлисте**
|
||||
* [статус плейлиста](../common/checks.md#плейлисты)
|
||||
* может быть [значок 18+](../common/checks.md#для-взрослых)
|
||||
* [название плейлиста](../formats/playlists.md#name) -- ссылка на [страницу плейлиста](../common/details.md)
|
||||
под ним:
|
||||
* [иконки возможностей плейлиста](../common/checks.md#возможности) (только при статусе <span class="badge online">online</span>)
|
||||
* [описание плейлиста](../formats/playlists.md#desc) (при наличии)
|
||||
* [список тегов](../formats/channels.md#доступные-теги), собранный со всех каналов после их проверки (только при статусе <span class="badge online">online</span>)
|
||||
* ещё одна ссылка на [страницу плейлиста](../common/details.md)
|
||||
* **Каналов** -- фактическое количество каналов в плейлисте (только при статусе <span class="badge online">online</span>) или 0 (при других статусах)
|
||||
* **Ссылка для ТВ** -- [короткая ссылка](details.md#ссылка-для-тв), которую можно использовать для [подключения плейлиста](../common/connect.md).
|
||||
|
||||
В зависимости от ширины экрана, для экономии места может быть скрыто описание с иконками возможностей и короткая ссылка.
|
||||
|
||||

|
||||
251
src/common/players.md
Normal file
@@ -0,0 +1,251 @@
|
||||
---
|
||||
icon: material/multimedia
|
||||
tags: ["плееры"]
|
||||
---
|
||||
|
||||
# :material-multimedia: IPTV плееры
|
||||
|
||||
Здесь указаны **не все** плееры, существующие на этой планете, и такой цели нет.
|
||||
|
||||
В списке ниже только те плееры, которые широко известны и популярны у зрителей IPTV, а также рекомендуются специализированными сайтами.
|
||||
|
||||
Список для удобства разбит по платформам и ОС.
|
||||
Обращайся к содержанию справа для быстрой навигации.
|
||||
|
||||
!!! info "Здесь не хватает очень много подробностей"
|
||||
Если ты имел дело с каким-то плеером, знаешь как его настроить или какие-то другие детали, я прошу тебя помочь [актуализировать эту страницу](../support.md#participate), чтобы через это помочь другим пользователям с выбором и настройкой плеера под свои цели.
|
||||
|
||||
## Кроссплатформенные
|
||||
|
||||
!!! info
|
||||
Эти плееры разрабатываются для множества платформ одновременно и/или существуют в виде веб-приложения.
|
||||
Их можно устанавливать и открывать почти на любом подходящем устройстве.
|
||||
|
||||
!!! warning "Веб-приложения могут не работать со сторонними плейлистами из-за ошибок CORS"
|
||||
Исправить эту ошибку может выдача разрешения на загрузку небезопасного контента в настройках сайта в браузере, но гарантий нет.
|
||||
|
||||
### VLC Media Player
|
||||
|
||||
* Скачать: <https://www.videolan.org/vlc/>
|
||||
|
||||
Универсальный плеер практически для любого мультимедиа-контента.
|
||||
|
||||
??? quote "[Скриншот] Главное окно"
|
||||

|
||||
|
||||
??? quote "[Скриншот] Добавление плейлиста на десктопе"
|
||||
!!! warning
|
||||
Указание протокола `https://` обязательно!
|
||||

|
||||

|
||||
|
||||
??? quote "[Скриншот] Добавление плейлиста на андроиде"
|
||||
!!! warning
|
||||
Указание протокола `https://` обязательно!
|
||||

|
||||

|
||||
|
||||
### Kodi
|
||||
|
||||
* Скачать: <https://kodi.tv>
|
||||
* [Простая настройка IPTV на Kodi за 5 минут](https://prodigtv.ru/iptv/software/nastrojka-na-kodi)
|
||||
|
||||
Полноценный медиацентр.
|
||||
Ориентирован на большие экраны и ТВ с пультами.
|
||||
Имеет богатый функционал, который наращивается дополнениями, не выходя из приложения.
|
||||
|
||||
### IPTVnator
|
||||
|
||||
* Веб-версия: <https://iptvnator.vercel.app>
|
||||
* Скачать: <https://github.com/4gray/iptvnator/releases/latest>
|
||||
|
||||
Простой рабочий плеер, который можно открыть в браузере.
|
||||
|
||||
Поддерживает подгрузку множества плейлистов по ссылкам, субтитры, группировку каналов, избранное.
|
||||
Имеет тёмную и светлую темы.
|
||||
|
||||
Если использовать веб-версию, то настройки сохраняются в браузере.
|
||||
|
||||
??? quote "[Скриншот] Главное окно"
|
||||

|
||||
|
||||
??? quote "[Скриншот] Добавление плейлиста"
|
||||
!!! warning
|
||||
Указание протокола `https://` обязательно!
|
||||

|
||||

|
||||
|
||||
### KMPlayer
|
||||
|
||||
* Скачать: <https://www.kmplayer.com/home>
|
||||
|
||||
### OttPlayer
|
||||
|
||||
* Веб-версия: <http://widget.ottplayer.tv>
|
||||
* Скачать: <https://ottplayer.tv/soft>
|
||||
|
||||
!!! warning "Требует учётную запись сервиса ottplayer.tv"
|
||||
|
||||
### Ott-Play
|
||||
|
||||
* Веб-версия: <https://ottp.eu.org/f/pc/>
|
||||
* Скачать: <https://ottp.eu.org/www/install/>
|
||||
|
||||
!!! warning "Ошибка CORS"
|
||||
Она может не уйти даже если менять [плеер в настройках](https://ottp.eu.org/www/faq/#q4003).
|
||||
|
||||
---
|
||||
|
||||
!!! info "Ниже перечислено ПО, специфичное только для конкретных платформ"
|
||||
|
||||
## Десктопные
|
||||
|
||||
### Windows
|
||||
|
||||
#### IP-TV Player
|
||||
|
||||
* Скачать: <https://borpas.info/iptvplayer>
|
||||
|
||||
---
|
||||
|
||||
### Linux
|
||||
|
||||
#### yuki-iptv
|
||||
|
||||
* Скачать: <https://codeberg.org/liya/yuki-iptv/releases/latest>
|
||||
|
||||
Продолжение развития Astroncia IPTV.
|
||||
|
||||
Визуально очень похож на IP-TV Player для Windows.
|
||||
|
||||
Поддерживает плейлисты по ссылкам, сторонние телепрограммы, группировку каналов, изменение плейлистов и многое другое.
|
||||
|
||||
??? quote "[Скриншот] Главное окно"
|
||||

|
||||
|
||||
??? quote "[Скриншот] Добавление плейлиста"
|
||||
!!! warning
|
||||
Указание протокола `https://` обязательно!
|
||||

|
||||
|
||||
---
|
||||
|
||||
## SmartTV
|
||||
|
||||
### SS IPTV
|
||||
|
||||
* Сайт: <https://ss-iptv.com/ru/>
|
||||
* Веб-версия: <https://app.ss-iptv.com> (скорее всего, не заработает)
|
||||
* Редактор плейлистов: <https://ss-iptv.com/ru/users/playlist>
|
||||
* Установить: <https://ss-iptv.com/ru/users/documents/installing>
|
||||
|
||||
Плеер, который предустанавливается в ПО некоторых телевизоров и некоторых приставок.
|
||||
|
||||
### Forkplayer
|
||||
|
||||
---
|
||||
|
||||
## Мобильные
|
||||
|
||||
### Кроссплатформенные
|
||||
|
||||
#### GSE SMART IPTV
|
||||
|
||||
---
|
||||
|
||||
### Android
|
||||
|
||||
#### M3U
|
||||
|
||||
* Скачать: <https://f-droid.org/ru/packages/com.m3u.androidApp>
|
||||
|
||||
Умеет показывать картинку-в-картинке, отображать группы и сортировать каналы.
|
||||
|
||||
Программу передач нужно [подключать отдельной ссылкой](../faq.md#epg), из плейлиста не тянет.
|
||||
|
||||
??? quote "[Скриншот] Главный экран"
|
||||

|
||||
|
||||
??? quote "[Скриншот] Добавление плейлиста"
|
||||
!!! warning
|
||||
Указание протокола `https://` обязательно!
|
||||

|
||||

|
||||
|
||||
??? quote "[Скриншот] Установка User-Agent"
|
||||

|
||||

|
||||
|
||||
#### Lazy IPTV
|
||||
|
||||
#### Perfect Player
|
||||
|
||||
#### Televizo IPTV Player
|
||||
|
||||
#### TiviMate
|
||||
|
||||
#### Lazy IPTV Deluxe
|
||||
|
||||
#### OTT Navigator
|
||||
|
||||
#### IPTV Player Live
|
||||
|
||||
---
|
||||
|
||||
### macOS, iOS, AppleTV
|
||||
|
||||
#### GoodPlayer
|
||||
|
||||
#### ProgTV
|
||||
|
||||
#### microiptv
|
||||
|
||||
#### Xtream IPTV
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/xtream-iptv-tv-player-ip-pro/id1583776992)
|
||||
|
||||
#### Nplayer
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/nplayer/id1116905928)
|
||||
|
||||
#### Nplayer Lite
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/nplayer-lite/id1078835991)
|
||||
|
||||
#### IPTV плеер
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/iptv/id1598794264)
|
||||
|
||||
#### Peers.TV
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/peers-tv/id540754699)
|
||||
|
||||
#### SPB TV Россия
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/spb-tv/id1056140537)
|
||||
|
||||
#### Русское TV
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B5-%D1%82%D0%B2-hd-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D1%82%D0%B2/id594760614)
|
||||
|
||||
#### Tviz
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/%D1%82%D0%B5%D0%BB%D0%B5%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-tviz-%D1%82%D0%B2-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD/id816291886)
|
||||
|
||||
#### Лайм HD TV
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/%D0%BB%D0%B0%D0%B9%D0%BC-hd-tv-%D1%82%D0%B2-%D0%BA%D0%B8%D0%BD%D0%BE-%D0%B8-%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B/id998832333)
|
||||
|
||||
#### TV+
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/tv-%D0%BF%D0%BB%D1%8E%D1%81-hd-%D1%82%D0%B5%D0%BB%D0%B5%D0%B2%D0%B8%D0%B7%D0%BE%D1%80-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD/id1141924092?l=en)
|
||||
|
||||
#### UniPlayer
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/uniplayer-iptv-ott-solution/id1208562731)
|
||||
|
||||
#### ProgTV
|
||||
|
||||
* Скачать: [apps.apple.com](https://apps.apple.com/ru/app/progtv/id1447796133)
|
||||
|
||||
---
|
||||
15
src/common/selection.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
icon: material/file-eye-outline
|
||||
tags: ["статусы", "плейлисты"]
|
||||
---
|
||||
|
||||
# :material-file-eye-outline: Как отбираются плейлисты
|
||||
|
||||
Есть некоторые критерии, по которым плейлисты отбираются в проект:
|
||||
|
||||
* Прежде всего -- каналы РФ и бывшего СНГ, но не только они
|
||||
* Открытый источник
|
||||
* Прямая ссылка на плейлист
|
||||
* Автообновление плейлиста
|
||||
|
||||
В основном, в плейлистах именно трансляции телеканалов, но может быть и просто список каких-то (мульт)фильмов и записи телепередач, находящихся на чужих дисках (как если бы вы сами составили плейлист, например, с музыкой).
|
||||
9
src/dev/deploy.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
icon: material/upload-network
|
||||
---
|
||||
|
||||
# :material-upload-network: Развёртывание и доставка обновлений
|
||||
|
||||
!!! info "TODO"
|
||||
Скоро здесь появится полезная информация.
|
||||
Следи за обновлениями в канале [@iptv_aggregator](https://t.me/iptv_aggregator) или в [репозитории](https://git.axenov.dev/IPTV/docs).
|
||||
97
src/dev/docs.md
Normal file
@@ -0,0 +1,97 @@
|
||||
---
|
||||
icon: material/book-cog-outline
|
||||
---
|
||||
|
||||
# :material-book-cog-outline: Сборка документации
|
||||
|
||||
## Стилистика и правила оформления
|
||||
|
||||
Все исходники хранятся в директории `src/` в формате **Markdown** (формат файлов `.md`).
|
||||
|
||||
Структура проекта и его конфигурация описываются в файле `mkdocs.yml` в корне репозитория.
|
||||
|
||||
Структура исходных файлов документации и содержание должны быть согласованными.
|
||||
|
||||
Все ссылки на соседние страницы и изображения должны быть относительными.
|
||||
|
||||
**Каждое предложение должно быть на одной строке.**
|
||||
Это даёт более наглядную разницу (diff) в тексте при работе с git.
|
||||
|
||||
Абзацы и списки должны отделяться 1 пустой строкой сверху и снизу.
|
||||
|
||||
Допустимо использовать любые стилистические возможности темы **Material for MkDocs** и самого **mkdocs**, но не следует визуально перегружать текст.
|
||||
Документацию по ним см. по ссылкам ниже.
|
||||
|
||||
## Добавление изображений
|
||||
|
||||
**Все изображения хранятся только в директории `src/assets/img/` и вложенных в неё.**
|
||||
|
||||
Общая суть такова:
|
||||
|
||||
* чем больше размеры, тем хуже должно быть качество;
|
||||
* чем меньше размеры, тем чётче должен быть текст.
|
||||
|
||||
Каждое изображение должно:
|
||||
|
||||
* быть сохранено в формате jpg;
|
||||
* иметь размер неболее 150 Кб;
|
||||
* быть сжатым с качеством 65-80% от исходного;
|
||||
* быть размером до 1500 px по наибольшей стороне.
|
||||
|
||||
Если на изображении есть текст, он должен оставаться различимым и читаемым.
|
||||
|
||||
Но если на изображении есть любые конфиденциальные данные и его невозможно кадрировать без потери смысла, то их необходимо скрыть.
|
||||
|
||||
Хорошей практикой будет использовать спойлеры для скрытия больших и/или идущих подряд нескольких изображений, например:
|
||||
|
||||
```
|
||||
Совершенно любой текст, lorem ipsum dolor sit amet.
|
||||
Совершенно любой текст, lorem ipsum dolor sit amet.
|
||||
|
||||
??? quote "В этом спойлере несколько больших картинок"
|
||||

|
||||

|
||||
|
||||
Продолжение текста, lorem ipsum dolor sit amet.
|
||||
Продолжение текста, lorem ipsum dolor sit amet.
|
||||
```
|
||||
|
||||
Эти простые правила позволят поддерживать репозиторий достаточно компактным, а страницы делать комфортными для чтения, экономя трафик для мобильных устройств.
|
||||
|
||||
## Стек
|
||||
|
||||
* make
|
||||
* [docker](https://docker.com)
|
||||
* [mkdocs](https://www.mkdocs.org/)
|
||||
* [squidfunk/mkdocs-material](https://hub.docker.com/r/squidfunk/mkdocs-material)
|
||||
* <https://squidfunk.github.io/mkdocs-material>
|
||||
* <https://squidfunk.github.io/mkdocs-material/reference/admonitions/>
|
||||
* <https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/>
|
||||
|
||||
## Запуск mkdocs в контейнере
|
||||
|
||||
```
|
||||
make live
|
||||
```
|
||||
|
||||
Перегенерирует документацию на лету сразу после изменения файлов.
|
||||
|
||||
Открывает [localhost:3000](https://localhost:3000) для просмотра изменений в реальном времени.
|
||||
|
||||
## Генерация статических файлов
|
||||
|
||||
```
|
||||
make build
|
||||
```
|
||||
|
||||
Генерирует статические файлы, которую можно версионировать и хранить/деплоить отдельно.
|
||||
|
||||
Открывает [localhost:8080/docs](https://localhost:8080/docs) для просмотра сгенерированной документации.
|
||||
|
||||
Готовый скомпилированный статический сайт с документацией находится в директории `site/`.
|
||||
Он же хранится в репозитории вместе с исходными файлами, потому что:
|
||||
|
||||
* я посчитал это **более удобным для деплоя**: ради редких обновлений нет смысла тратить ресурсы серверов на ci/cd, actions по хукам и перманентную работу `mkdocs` в режиме `build`;
|
||||
* я посчитал это **более удобным для использования**: можно в любой момент открыть актуальную документацию в браузере через `site/index.html` без необходимости `make` и `docker`.
|
||||
|
||||
Пересборка должна происходить перед каждым коммитом.
|
||||
29
src/dev/index.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
icon: simple/devbox
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# :simple-devbox: Для разработчиков
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- [:material-application-brackets-outline: Среда разработки](local-dev.md)
|
||||
|
||||
---
|
||||
Настройка ПО для работы с кодом проекта
|
||||
|
||||
- [:material-robot-outline: Telegram-бот](tgbot.md)
|
||||
|
||||
---
|
||||
Специфика разработки и отладки Telegram-бота проекта
|
||||
|
||||
- [:material-book-cog-outline: Сборка документации](docs.md)
|
||||
|
||||
---
|
||||
Как скорректировать, проверить и скомплировать эту документацию
|
||||
|
||||
- [:material-upload-network: Развёртывание и доставка обновлений](deploy.md)
|
||||
|
||||
---
|
||||
О том, как опубликовать изменения на сервере
|
||||
</div>
|
||||
9
src/dev/local-dev.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
icon: material/application-brackets-outline
|
||||
---
|
||||
|
||||
# :material-application-brackets-outline: Среда разработки
|
||||
|
||||
!!! info "TODO"
|
||||
Скоро здесь появится полезная информация.
|
||||
Следи за обновлениями в канале [@iptv_aggregator](https://t.me/iptv_aggregator) или в [репозитории](https://git.axenov.dev/IPTV/docs).
|
||||
80
src/dev/tgbot.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
icon: material/robot-outline
|
||||
---
|
||||
|
||||
# :material-robot-outline: Telegram-бот
|
||||
|
||||
!!! info "Обрати внимание"
|
||||
Локальная среда разработки должна быть [настроена и запущена](local-dev.md).
|
||||
|
||||
## Подготовка бота на стороне Telegram
|
||||
|
||||
1. Написать [@botfather](https://t.me/botfather), создать бота
|
||||
2. Полученный токен установить значением переменной `TG_BOT_TOKEN` в файле `.env` репозитория `web`
|
||||
3. Командой `/mybots` в [@botfather](https://t.me/botfather) выбрать свежесозданного бота, далее `Edit Bot` > `Edit Commands` и отправить текст:
|
||||
```
|
||||
list - Список плейлистов
|
||||
info - Подробности о плейлисте по его коду
|
||||
help - Помощь по командам бота
|
||||
links - Ссылки на все страницы проекта
|
||||
stats - Статистика по плейлистам и каналам
|
||||
```
|
||||
|
||||
## Проброс внешних запросов на локальную машину
|
||||
|
||||
1. Установить [telebit](https://telebit.cloud) и пройти примитивную регистрацию.
|
||||
В результате будет выдан уникальный адрес в формате `https://foo-bar-99.telebit.io`.
|
||||
На email, указанный при регистрации, будет оформлен бесплатный SSL-серификат Let's Encrypt для этого домена.
|
||||
Если адрес не используется месяц+, то сертификат протухнет, но он автоматически восстановится, если адрес начнёт использоваться вновь.
|
||||
|
||||
2. В терминале выполнить:
|
||||
```
|
||||
telebit http 8080
|
||||
```
|
||||
где 8080 -- порт локальной машины, на который проброшен порт 80 из контейнера `iptv-nginx`.
|
||||
Для выключения выполнить:
|
||||
```
|
||||
telebit http
|
||||
```
|
||||
|
||||
3. Проверить работу адреса, перейдя по нему браузером.
|
||||
Должен открыться твой локальный проект.
|
||||
|
||||
4. Полученный адрес установить значением переменной `APP_URL` в файле `.env` репозитория `web`
|
||||
|
||||
5. Установить веб-хук, отправив запрос браузером или любым HTTP-клиентом на адрес:
|
||||
```
|
||||
https://api.telegram.org/bot$BOT_TOKEN/setWebhook?url=$TELEBIT_URL/bot/webhook&secret_token=$SECRET_TOKEN
|
||||
```
|
||||
где:
|
||||
* `$BOT_TOKEN` - авторизационный токен, который @botfather выдал твоему боту;
|
||||
* `$TELEBIT_URL` - адрес, который telebit выдал тебе;
|
||||
* `$SECRET_TOKEN` - секретный токен, опционален, см. ниже.
|
||||
|
||||
6. Проверить веб-хук, отправив запрос браузером или любым HTTP-клиентом на адрес:
|
||||
```
|
||||
https://api.telegram.org/bot$BOT_TOKEN/getWebhookInfo
|
||||
```
|
||||
где:
|
||||
* `$BOT_TOKEN` - авторизационный токен, который @botfather выдал твоему боту.
|
||||
|
||||
7. После разработки нужно установить "боевой" адрес веб-хука аналогично п4.
|
||||
|
||||
## Что за секретный токен?
|
||||
|
||||
Telegram авторизует твоего бота по токену, который выдал ему сам.
|
||||
|
||||
Ты тоже можешь (не) авторизовать Telegram по токену, который ты выдашь ему.
|
||||
|
||||
Для этого нужно в значением переменной `TG_BOT_SECRET` в файле `.env` репозитория `web` установить любую строку.
|
||||
Если ты это сделаешь, тогда ту же строку ты должен передать в параметре `secret_token` метода `setWebhook`.
|
||||
|
||||
В этом случае, все HTTP-запросы, которые приходят от Telegram, будут содержать заголовок `X-Telegram-Bot-Api-Secret-Token` со этой строкой в качестве значения.
|
||||
Эта строка сверяется с той, что указана в `.env` проекта.
|
||||
Если такого заголовка нет или его значение некорректно, входящий запрос отклоняется.
|
||||
|
||||
Если переменная `TG_BOT_SECRET` не задана, то заголовок проверяться не будет.
|
||||
|
||||
См. подробности в документации: [setWebhook](https://core.telegram.org/bots/api#setwebhook)
|
||||
|
||||
|
||||
36
src/docs.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
icon: material/book-open-page-variant-outline
|
||||
---
|
||||
|
||||
# :material-book-open-page-variant-outline: Работа с документацией
|
||||
|
||||
!!! warning "Актуальность"
|
||||
Она может отставать от актуальной версии сервиса, его исходных кодов и инфраструктуры.
|
||||
Поддерживать документацию в актуальном состоянии -- тоже труд.
|
||||
Прошу отнестись с пониманием, а лучше -- [помочь делом](support.md#participate).
|
||||
|
||||
!!! danger "Тем не менее, прошу прочесть её!"
|
||||
Потому что очень часто и мне, и в общий чат поступают одинаковые вопросы, на которые уже просто нет сил отвечать персонально.
|
||||
|
||||
Если у тебя возникает вопрос, на который уже есть ответ на одной из этих страниц, то ты рискуешь
|
||||
|
||||
* либо быть посланным сюда;
|
||||
* либо быть посланным далеко не сюда;
|
||||
* либо остаться в игноре.
|
||||
|
||||
## Навигация
|
||||
|
||||
К твоим услугам:
|
||||
|
||||
1. в заголовке сайта -- глобальный поиск;
|
||||
2. слева -- общее содержание;
|
||||
3. справа -- содержание конкретной страницы;
|
||||
4. над заголовком страницы -- метки страницы (полный список ниже).
|
||||
|
||||
## Связанные статьи
|
||||
|
||||
Эти статьи пролинкованы между собой и сгруппированы про темам (меткам).
|
||||
|
||||
---
|
||||
|
||||
<!-- material/tags -->
|
||||
333
src/faq.md
Normal file
@@ -0,0 +1,333 @@
|
||||
---
|
||||
icon: material/frequently-asked-questions
|
||||
tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", "user-agent", "wink", "подписка"]
|
||||
---
|
||||
|
||||
# :material-frequently-asked-questions: FAQ (ЧАстые ВОпросы)
|
||||
|
||||
## Не работает канал!
|
||||
|
||||
Ну штош ¯\\\_(ツ)\_/¯
|
||||
|
||||
## Добавь каналы!
|
||||
|
||||
Нет.
|
||||
|
||||
## Удали каналы!
|
||||
|
||||
Нет.
|
||||
|
||||
## Но мне нужны конкретные каналы!
|
||||
|
||||
Ищи.
|
||||
|
||||
## Сделай мне плейлист!
|
||||
|
||||
Нет.
|
||||
|
||||
## Исправь плейлист!
|
||||
|
||||
Нет.
|
||||
|
||||
## А за деньги?
|
||||
|
||||
[Пожертвованиям](support.md) я только рад.
|
||||
|
||||
Но нет.
|
||||
|
||||
## У канала нет логотипа!
|
||||
|
||||
Вспоминай.
|
||||
|
||||
## Нет программы передач (EPG) у канала, что делать?
|
||||
|
||||
Фига в том, что EPG может быть и [указан](formats/m3u.md#url-tvg) в плейлисте, но у конкретного канала могут быть указаны некорректные [`tvg-id`](formats/m3u.md#tvg-id) или [`tvg-name`](formats/m3u.md#tvg-name).
|
||||
Может, его дёрнули из другого листа и не подогнали под другую EPG.
|
||||
|
||||
Так, что вариантов масса:
|
||||
|
||||
* смотреть как есть;
|
||||
* найти другой плейлист, где этот канал есть не только сам по себе, но и с телепрограммой;
|
||||
* скачать плейлист себе файлом, исправить атрибуты канала и добавить в плеер уже этот лист, но забыть о его автообновлении;
|
||||
* настроить другую программу передач (см. ниже).
|
||||
|
||||
Также, помни, что не все плееры вообще поддерживают работу с телепрограммой.
|
||||
|
||||
## Нет программы передач (EPG) у плейлиста, что делать?
|
||||
|
||||
Помни:
|
||||
|
||||
* не все плееры вообще поддерживают работу с телепрограммой;
|
||||
* в плейлисте она просто может быть не указана.
|
||||
|
||||
Но если [плеер](common/players.md) позволяет, можно указать ссылку на сторонную телепрограмму.
|
||||
|
||||
И это целое дело.
|
||||
Надо чтобы совпадали [`tvg-id`](formats/m3u.md#tvg-id) или [`tvg-name`](formats/m3u.md#tvg-name) каналов с теми, которые указываются в EPG.
|
||||
Так что не всякая телепрограмма подойдёт, не ко всякому плейлисту и не ко всем каналам.
|
||||
Надо подбирать и то, и то.
|
||||
|
||||
<a id="epg"></a>
|
||||
## А где взять программу передач (EPG)?
|
||||
|
||||
1. Из самого плейлиста.
|
||||
Часто в атрибут [`url-tvg`](formats/m3u.md#url-tvg) тега `#EXTM3U` указывают одну или две ссылки на EPG, разделяя их `;`.
|
||||
Их можно использовать отдельно, например, если плеер не может корректно обработать такое значение.
|
||||
2. Взять одну из этих ссылок:
|
||||
* `http://epg.it999.ru/edem.xml.gz`
|
||||
* `http://iptv-content.webhop.net/guide.xml`
|
||||
* `http://www.teleguide.info/download/new3/xmltv.xml.gz`
|
||||
* `https://ottepg.ru/ottepg.xml.gz`
|
||||
* `http://stb.shara-tv.org/epg/epgtv.xml.gz`
|
||||
* `http://st.kineskop.tv/epg.xml.gz`
|
||||
* `https://iptvx.one/epg/epg_lite.xml.gz`
|
||||
* `https://iptvx.one/epg/epg.xml.gz`
|
||||
3. Найти другие здесь:
|
||||
* `https://iptvx.one/viewtopic.php?f=12&t=4`
|
||||
* `https://iptvmaster.ru/epg-for-iptv`
|
||||
* [https://google.com](https://google.com)
|
||||
|
||||
## Эти плейлисты бесплатны?
|
||||
|
||||
Возможно.
|
||||
По крайней мере, так утверждают источники, которые их распространяют.
|
||||
Но гарантий никаких никто не даёт.
|
||||
|
||||
Любой плейлист и любой канал в любом плейлисте может сдохнуть навсегда в любой момент.
|
||||
Или показывать [заглушку](#заглушка).
|
||||
|
||||
И претензии на этот счёт я не принимаю.
|
||||
|
||||
## Почему на сайте плейлист онлайн, но в нём 0 каналов?
|
||||
|
||||
[Тебе сюда](common/checks.md#плейлисты).
|
||||
|
||||
## Почему на сайте плейлист онлайн, но у меня он не работает?
|
||||
|
||||
Что значит "не работает"?
|
||||
|
||||
* Ты уверен, что ссылка в [правильном формате](common/details.md#ссылка-для-тв)?
|
||||
* Ты уверен, что у тебя нормальное интернет-соединение?
|
||||
* Плеер показывает какую-то ошибку при добавлении плейлиста?
|
||||
* Плейлист добавляется по ссылке, но каналы не загружаются или плеер зависает?
|
||||
* Плейлист добавляется в плеер, каналы загружаются полностью, но не каналы показывают?
|
||||
* А есть скриншоты? Логи? Тексты ошибок?
|
||||
|
||||
Попробуй погуглить проблему с конкретным плеером, может ты не один с такой проблемой.
|
||||
Или [узнать в чате](tg/chat.md).
|
||||
|
||||
Но вообще, это зависит от:
|
||||
|
||||
* автора плейлиста (дохлые каналы почти всегда есть даже в свежайших листах, но если лист не обновлялся год, что ты вряд-ли узнаешь, то рабочих каналов там не ищи);
|
||||
* твоего [плеера](common/players.md) (видеотрансляции могут использовать кодек, который просто не поддерживается плеером);
|
||||
* ширины твоего интернет-канала (не надо пытаться врубать FHD/4K трансляции с мобильного интернета на самом дешёвом тарифе в лесу);
|
||||
* ретроградности Меркурия и магнитных бурь (а вдруг);
|
||||
* настроек твоей сети, твоего интернет-провайдера, VPN (подумай хорошенько, хочешь ли ты смотреть российские каналы из РФ через Уганду или США);
|
||||
* степени цензурирования интернета в твоём государстве (некоторые хосты официально блочатся на уровне провайдеров);
|
||||
* чёрта лысого.
|
||||
|
||||
Я не знаю.
|
||||
Вряд-ли знает хоть кто-то.
|
||||
|
||||
## А если я добавлю себе плейлист отсюда, он будет работать? Долго?
|
||||
|
||||
Наверное, будет.
|
||||
|
||||
Наверное, даже долго.
|
||||
|
||||
Мёртвые плейлисты я периодически вычищаю, реже -- добавляю новые.
|
||||
|
||||
Короткие коды плейлистов могут меняться, поэтому вполне может произойти внезапная подмена одного другим, однако это происходит крайне редко.
|
||||
|
||||
Плюс читай выше про доверие результатам проверки (проблема может быть не стороне сервиса).
|
||||
|
||||
## В плейлистах порнуха!
|
||||
|
||||
Да, в плейлистах порнуха.
|
||||
|
||||
Это [явно помечается](common/checks.md#для-взрослых) везде, где это технически возможно.
|
||||
Смотри с удовольствием сколько хочешь, всё для тебя.
|
||||
|
||||
Или без удовольствия.
|
||||
|
||||
Или не смотри.
|
||||
|
||||
Или не хоти.
|
||||
|
||||
### Но у меня же дети! Яжмать! Яжотец!
|
||||
|
||||
Я вот детям порнуху не показываю.
|
||||
|
||||
Ты тоже не показывай.
|
||||
|
||||
Это твоя проблема.
|
||||
|
||||
## Как часто изменяется список плейлистов?
|
||||
|
||||
Время от времени.
|
||||
Периодически я наблюдаю за ними и удаляю нерабочие.
|
||||
|
||||
Иногда я гуляю по интернету и ищу другие плейлисты, которых в проекте ещё нет.
|
||||
|
||||
Если есть кандидаты на добавление, то читай ниже.
|
||||
|
||||
## Что значит автообновляемый плейлист?
|
||||
|
||||
Например, ты на своём компе:
|
||||
|
||||
* открываешь любой текстовый редактор;
|
||||
* оформляешь текст в формате [m3u](formats/m3u.md);
|
||||
* сохраняешь в файл `pls.m3u`.
|
||||
|
||||
Получился плейлист `pls.m3u`.
|
||||
Открываешь его в проигрывателе (плеере) **вручную** и наслаждаешься.
|
||||
|
||||
Спустя время, ты хочешь его изменить:
|
||||
|
||||
* открываешь файл `pls.m3u` в любом текстовом редакторе;
|
||||
* изменяешь текст (добавляешь или удаляешь записи);
|
||||
* сохраняешь в файл `pls.m3u`.
|
||||
|
||||
Плейлист `pls.m3u` обновлён на диске **вручную**.
|
||||
Открываешь его в плеере **вручную** и наслаждаешься.
|
||||
|
||||
Но править его ручками неудобно, нужно что-то попроще:
|
||||
|
||||
* запускаешь свой плеер;
|
||||
* открываешь в нём окно плейлиста (он же "список воспроизведения");
|
||||
* накидываешь туда файлов из какой-нибудь папки;
|
||||
* сохраняешь в файл `pls.m3u`.
|
||||
|
||||
Надо изменить?
|
||||
Тоже легко:
|
||||
|
||||
* открываешь файл `pls.m3u` в плеере;
|
||||
* накидываешь туда ещё файлов из какой-нибудь папки;
|
||||
* сохраняешь в файл `pls.m3u`.
|
||||
|
||||
Плейлист `pls.m3u` обновлён на диске.
|
||||
Но всё ещё **вручную**, просто немного поудобнее.
|
||||
|
||||
Открываешь его в плеере, тоже **вручную** (потому что, скорее всего, он просто у тебя под курсором и проще дважды кликнуть по нему, а без этого плеер не сам может и не перечитать плейлист с диска), и наслаждаешься.
|
||||
|
||||
Теперь представь, что кто-то сделал всё то же самое, но открыл доступ к своему файлу плейлиста по ссылке.
|
||||
Ты добавляешь плейлист в плеер по этой ссылке и сразу наслаждаешься.
|
||||
|
||||
В чём плюсы:
|
||||
|
||||
* ты сам не изменяешь этот *чей-то* файл и не паришься;
|
||||
* возможно, кто-то за ним следит и периодически обновляет самостоятельно (вручную или как-то автоматически -- это не твоя проблема);
|
||||
* возможно, твой плеер сам подтянет плейлист после запуска (чаще всего так и происходит) или по твоей команде (если такая кнопка в нём есть) -- **это и есть автообновление**.
|
||||
|
||||
В чём минус: этот *кто-то* по своим причинам может удалить твой любимый канал.
|
||||
|
||||
Чаще всего это происходитвпо двум причинам:
|
||||
|
||||
* *указанный в этом плейлисте* канал перестал вещать;
|
||||
* к автору обратились правообладатели *указанный в этом плейлисте* канала и велели убрать нелегальщину.
|
||||
|
||||
Таким образом, при следующем открытии плеера, у тебя будет **автоматически обновлённый** твоим плеером на твоём устройстве плейлист.
|
||||
|
||||
## Как часто обновляется содержимое плейлистов?
|
||||
|
||||
Зависит от источника.
|
||||
Я этим не занимаюсь.
|
||||
|
||||
## Есть приложение?
|
||||
|
||||
Нет, и не планируется.
|
||||
|
||||
Ищи [плеер](common/players.md) и добавляй плейлист туда по ссылке.
|
||||
|
||||
<a id="заглушка"></a>
|
||||
## На канале отображается заглушка
|
||||
|
||||
<a id="заглушка1"></a>
|
||||
### Просят денег и/или подписку
|
||||
|
||||
??? quote "[Скриншот] Уважаемый клиент! Для возобновления просмотра Вам необходимо использовать не более 2 устройств"
|
||||

|
||||
> Уважаемый клиент! Для возобновления просмотра Вам необходимо использовать не более 2 устройств.
|
||||
> Обратитесь к поставщику контента для уточнения.
|
||||
|
||||
??? quote "[Скриншот] Ваша подписка не активна"
|
||||

|
||||
> Ваша подписка не активна
|
||||
> Your subscription is not active
|
||||
|
||||
??? quote "[Скриншот] Мы обнаружили систематическое нарушение правил использования нашего сервиса"
|
||||

|
||||
> Мы обнаружили систематическое нарушение правил использования нашего сервиса и заблокировали возможность просмотра контента.
|
||||
> Для возобновления просмотра необходимо сменить OTTID в личном кабинете, и обновить плейлисты на ваших устройствах.
|
||||
> Если вы считаете, что произошла какая-то ошибка - пожалуйста, обратитесь в техподдержку.
|
||||
|
||||
Кто-то взял платный (или временный демонстрационный) плейлист и распространил его как бесплатный.
|
||||
|
||||
Такие бесплатно работать не будут, а если и работают, то недолго и не у всех.
|
||||
|
||||
Забудь про этот плейлист.
|
||||
Ищи другой.
|
||||
Без вариантов.
|
||||
Такова цена халявы.
|
||||
|
||||
Этот плейлист -- главный кандидат на удаление с сайта.
|
||||
|
||||
<a id="wink"></a>
|
||||
### Wink
|
||||
|
||||
??? quote "[Скриншот] Просмотр ТВ-каналов, фильмов и сериалов доступен только в официальных приложениях Wink и на территории России"
|
||||

|
||||
> Просмотр ТВ-каналов, фильмов и сериалов доступен только в официальных приложениях Wink и на территории России
|
||||
|
||||
Кто-то воткнул платный канал в плейлист и распространил его как бесплатный.
|
||||
|
||||
Если ты не сидишь под российским IP, то можешь сразу искать другой плейлист.
|
||||
|
||||
Если ты в РФ, то попробуй использовать [плеер](common/players.md), который позволяет указать **User-Agent**, и вставить туда какой-нибудь из этих:
|
||||
|
||||
```
|
||||
Mozilla/5.0 WINK/1.28.2 (AndroidTV/9) HlsWinkPlayer
|
||||
Mozilla/5.0 WINK/1.30.1 (AndroidTV/9) HlsWinkPlayer
|
||||
Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
|
||||
Mozilla/5.0 WINK/1.42.1 (AndroidTV/12) HlsWinkPlayer
|
||||
Mozilla/5.0 WINK/1.31.1 (AndroidTV/7.1.1) HlsWinkPlayer
|
||||
Mozilla/5.0 (Linux; arm; Android 9; WinkBox 2)
|
||||
Mozilla/5.0 (Linux; Android 9; SWITRON-i12A Build/PSV1.210329.021; wv)
|
||||
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
|
||||
```
|
||||
|
||||
Гарантий никаких, но кому-то помогает.
|
||||
|
||||
Можно попробовать прописать без `Mozilla/5.0` в начале, но это не должно быть критично.
|
||||
|
||||
Или подключи подписку Wink.
|
||||
Или забудь про этот плейлист и ищи другой.
|
||||
|
||||
## Откуда берутся логотипы каналов и программы передач?
|
||||
|
||||
Всё это (не) [указывается](formats/m3u.md#tvg-logo) внутри плейлиста его авторами.
|
||||
Но в некоторых [плеерах](common/players.md) можно вручную указывать программу передач (см. ниже).
|
||||
|
||||
## Где спортивные каналы? Почему они не работают?
|
||||
|
||||
Спортивные телеканалы очень пристально следят за тем, куда текут их трансляции.
|
||||
|
||||
Они зарабатывают на спорте и активно защищают свои права на трансляцию каких-то уникальных спортивных состязаний и событий.
|
||||
|
||||
Они активно рубят все левые источники, приходят к авторам плейлистов и любезно просят удалить любые упоминания, ссылки и трансляции их каналов из паблика.
|
||||
|
||||
Винить в этом кого-то и бороться с этим бессмысленно.
|
||||
Это большой бизнес, и он будет вне зависимости от нашего желания.
|
||||
|
||||
Поэтому некоторые авторы сразу предупреждают, что в плейлистах таких каналов нет.
|
||||
Судиться потом, вот это всё... нафиг надо.
|
||||
|
||||
Нет, я не буду добавлять каналы в плейлисты.
|
||||
|
||||
Если будет спортивный рабочий плейлист -- добавлю на сайт.
|
||||
|
||||
## Как добавить плейлист в общий список?
|
||||
|
||||
Сделать pull-request в [репозиторий](https://git.axenov.dev/IPTV/playlists).
|
||||
|
||||
Я проверю плейлист и добавлю его, если всё ок.
|
||||
112
src/formats/channels.md
Normal file
@@ -0,0 +1,112 @@
|
||||
---
|
||||
icon: material/code-json
|
||||
tags: ["iptvc", "теги", "каналы"]
|
||||
---
|
||||
|
||||
# :material-code-json: Формат файла `channels.json`
|
||||
|
||||
Категории каналов указываются в файле `channels.json` в следующем формате:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"tvg-id": "регулярное выражение для значения атрибута tvg-id",
|
||||
"tvg-name": "регулярное выражение для значения атрибута tvg-name",
|
||||
"title": "регулярное выражение для названия канала",
|
||||
"tags": [
|
||||
"список",
|
||||
"тегов",
|
||||
"(см. ниже)"
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Приоритет параметров:
|
||||
|
||||
* `tvg-id`
|
||||
* `tvg-name`
|
||||
* `title`
|
||||
|
||||
Если указаны все или несколько, то применится только тот один, который по приоритету выше.
|
||||
|
||||
Параметр `tags` обязателен, список может быть (не)пустым.
|
||||
Категории в списке указываются в двойных кавычках.
|
||||
После каждой категории, кроме последней, ставится запятая.
|
||||
|
||||
Регулярные выражения должны быть PCRE-совместимыми.
|
||||
|
||||
Каналы сопоставляются в нижнем регистре.
|
||||
|
||||
<a id="warnings"></a>
|
||||
## Рекомендации и предостережения
|
||||
|
||||
1. Если хочешь написать новое правило, будь осторожен с регулярками.
|
||||
Старайся не охватывать несколько каналов сразу.
|
||||
Если канал попадёт в несколько регулярок, то его **теги могут оказаться неожиданными** и найти проблему может быть сложно.
|
||||
2. Указывай внутри `{}` только `tags` и один из параметров `tvg-id`, `tvg-name` или `title`.
|
||||
Множество параметров на точность не влияет, зато будет проще уместить всё правило в одну строку и grep-ать файл.
|
||||
3. Не забывай, что название на кириллице не всегда означает, что это российский канал или вещание на русском языке.
|
||||
4. Разные каналы могут быть названы одинаково или похоже.
|
||||
Например, `Первый канал`, `Первый Тульский`, `Первый городской`.
|
||||
5. Один канал может быть назван по-разному.
|
||||
Например, `Ю` или `Ю!`, `Россия 1 +5` или `Россия-1`.
|
||||
6. Важно учитывать холдинги.
|
||||
Например, российские Матч, ТНТ и НТВ имеют множество разных каналов, и тупо искать `^нтв$` -- тупо.
|
||||
7. У всех каналов есть `title`.
|
||||
Не все каналы имеют `tvg-id`.
|
||||
Некоторые каналы имеют `tvg-name`.
|
||||
Все три параметра могут оказаться на кириллице.
|
||||
|
||||
<a id="доступные-теги">
|
||||
## Доступные теги
|
||||
|
||||
| Ключевое слово | Описание |
|
||||
| -------------- | ----------------------------------------------------------- |
|
||||
| `untagged` | Неизвестно (ставится по умолчанию, если нет иных) |
|
||||
| `unstable` | Нестабильные каналы |
|
||||
| `hd` | Каналы в высоком качестве |
|
||||
| `4k` | Каналы в супервысоком качестве |
|
||||
| `8k` | Каналы в гигавысоком качестве (а вдруг?) |
|
||||
| `adult` | Контент для взрослых 18+ |
|
||||
| `army` | Каналы военные, об оружии, технике, армии, боевых действиях |
|
||||
| `central` | Центральное ТВ (гос. каналы, федеральные) |
|
||||
| `child` | Детские и подростковые каналы |
|
||||
| `culture` | Каналы о культуре, театре |
|
||||
| `crime` | Каналы с детективами и о преступлениях (true-crime) |
|
||||
| `cyber` | Киберспортивные |
|
||||
| `docs` | Каналы с документальными фильмами |
|
||||
| `fashion` | Мода и стиль |
|
||||
| `film` | Каналы с фильмами |
|
||||
| `finance` | Бизнес, финансы, капитал |
|
||||
| `food` | Кулинарные каналы |
|
||||
| `fun` | Развлекательные каналы и шоу |
|
||||
| `garden` | Сад, огород, фермерство, домашнее хозяйство |
|
||||
| `health` | Каналы о здоровье |
|
||||
| `history` | Исторические каналы |
|
||||
| `house` | О строительстве, ремонте, интерьере и жилье |
|
||||
| `humor` | Юмористические каналы, комедии |
|
||||
| `hunt-fish` | Охота и рыбалка |
|
||||
| `local` | Местные региональные каналы |
|
||||
| `music` | Музыкальные |
|
||||
| `mystic` | Каналы о мистике, потустороннем, НЛО и прочей пиздаболии |
|
||||
| `nature` | Каналы о природе, животных |
|
||||
| `news` | Новостные каналы |
|
||||
| `politic` | Каналы политические, партийные, правительстенные |
|
||||
| `radio` | Радиоканалы (радиостанции, подкасты, аудиоспектакли...) |
|
||||
| `religion` | Религиозные каналы |
|
||||
| `retro` | Ностальгия и ретро, музыка, старые передачи |
|
||||
| `sci` | Научные и познавательные |
|
||||
| `series` | Каналы с сериалами |
|
||||
| `shopping` | Телемагазины |
|
||||
| `sport` | Спортивные |
|
||||
| `tech` | Каналы о технологиях |
|
||||
| `transport` | Каналы о транспорте (авто, мото, ЖД...) |
|
||||
| `travel` | Каналы о путешествиях |
|
||||
| `webcam` | Уличные веб-камеры |
|
||||
|
||||
Также в категориях можно указывать страну вещания.
|
||||
Это должен быть буквенный код АЛЬФА-2 из общероссийского классификатора стран мира (ОКСМ):
|
||||
|
||||
* [normativ.kontur.ru](https://normativ.kontur.ru/document?moduleId=1&documentId=22668#h1296)
|
||||
* [classifikators.ru](https://classifikators.ru/oksm)
|
||||
24
src/formats/index.md
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
icon: material/file-code-outline
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# :material-file-code-outline: Форматы файлов
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- [:material-code-brackets: Формат файла `playlists.ini`](playlists.md)
|
||||
|
||||
---
|
||||
Список плейлистов, которые отображаются на сайте и периодически проверяются
|
||||
|
||||
- [:material-code-json: Формат файла `channels.json`](channels.md)
|
||||
|
||||
---
|
||||
Список правил для применения тегов к разным каналам
|
||||
|
||||
- [:material-playlist-play: Формат файлов `*.m3u` (`*.m3u8`)](m3u.md)
|
||||
|
||||
---
|
||||
Плейлист -- это вообще что?
|
||||
</div>
|
||||
148
src/formats/m3u.md
Normal file
@@ -0,0 +1,148 @@
|
||||
---
|
||||
icon: material/playlist-play
|
||||
tags: ["плейлисты", "каналы"]
|
||||
---
|
||||
|
||||
# :material-playlist-play: Формат файлов `*.m3u` (`*.m3u8`)
|
||||
|
||||
Формат применяется для составления мультимедиа плейлистов, как оффлайн, так и онлайн.
|
||||
|
||||
Разница между m3u и m3u8 уже давно отсутствует, но исторически так сложилось, то m3u8 должен был быть только в формате UTF-8.
|
||||
|
||||
Директивы начинаются с новой строки и символа `#`.
|
||||
У каждой директивы могут (не) быть атрибуты, которые следуют в одну строку.
|
||||
|
||||
После директив с новой строки указывается ссылка на канал (или путь к файлу).
|
||||
|
||||
В свою чередь, по этой ссылке может быть:
|
||||
* либо текстовое представление контента в формате m3u/m3u8/XMLTV/MPD с описанием непосредственно участки трансляции;
|
||||
* либо непосредственно сама потоковая трансляция mp4 или т. п.
|
||||
|
||||
Рассмотрим на выдуманном примере плейлиста IPTV:
|
||||
|
||||
```m3u
|
||||
#EXTM3U url-tvg="https://iptvx.one/EPG" catchup="append" catchup-days="3" catchup-source="?offset=-${offset}&utcstart=${timestamp}"
|
||||
|
||||
#EXTINF:-1 tvg-id="ntv" tvg-logo="http://epg.it999.ru/img2/2001.png",НТВ HD
|
||||
#EXTGRP:🇷🇺 Эфирные
|
||||
http://example.com/play-ntv.m3u
|
||||
|
||||
#EXTINF:-1 tvg-logo="http://tvoetv.space/tvoetv.png" tvg-id="tvoetv",Твоё ТВ HD v8 с VPN
|
||||
http://example.com/play-tvoetv.m3u
|
||||
|
||||
#EXTINF:0 tvg-name="BBC" audio-track="eng" tvg-logo="http://mylogos.domain/BBC.png", BBC World
|
||||
http://example.com/play-bbc.m3u
|
||||
|
||||
#EXTINF:-1 tvg-id="5TV.am" tvg-country="AM" tvg-language="Armenian" tvg-logo="https://i.imgur.com/yigw9dr.png" user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148" group-title="General",5-րդ ալիք (480p)
|
||||
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
|
||||
#EXTVLCOPT:http-caching=1200
|
||||
http://example.com/play-am.m3u8
|
||||
```
|
||||
|
||||
<a id="EXTM3U"></a>
|
||||
### Директива `#EXTM3U`
|
||||
|
||||
Заголовок файла (обязателен).
|
||||
|
||||
<a id="url-tvg"></a>
|
||||
#### Атрибут `url-tvg` (он же `x-tvg-url`)
|
||||
|
||||
Ссылка программу передач в формате `*.xml` или `*.xml.gz`.
|
||||
|
||||
<a id="catchup"></a>
|
||||
#### Атрибуты `catchup*`
|
||||
|
||||
Читай здесь: [Архив телепрограмм (SS IPTV)](https://ss-iptv.com/ru/operators/catchup)
|
||||
|
||||
<a id="EXTGRP"></a>
|
||||
### Директива `#EXTGRP`
|
||||
|
||||
Название группы, к которой относится контент (звуковая дорожка или канал).
|
||||
|
||||
Указывается в формате `#EXTGRP:XXX`, где: `XXX` -- название группы.
|
||||
|
||||
<a id="EXTINF"></a>
|
||||
### Директива `#EXTINF`
|
||||
|
||||
Описывает контент (звуковую дорожку или канал).
|
||||
|
||||
Указывается в формате `#EXTINF:XXX YYY,ZZZ`, где:
|
||||
* `XXX` -- длительность в секундах (обязательно, но может быть `-1` или `0`);
|
||||
* `YYY` -- атрибуты (см. ниже);
|
||||
* `ZZZ` -- название контента;
|
||||
|
||||
<a id="tvg-shift"></a>
|
||||
#### Атрибут `tvg-shift`
|
||||
|
||||
Cмещение телепрограммы в часах относительно указанного в программе.
|
||||
|
||||
<a id="tvg-id"></a>
|
||||
<a id="tvg-name"></a>
|
||||
#### Атрибуты `tvg-id` и `tvg-name`
|
||||
|
||||
Идентификатор телепрограммы канала.
|
||||
По нему телепрограмма привязывается к трансляции с учётом смещения времени.
|
||||
|
||||
<a id="tvg-logo"></a>
|
||||
#### Атрибут `tvg-logo`
|
||||
|
||||
Ссылка на логотип канала.
|
||||
|
||||
<a id="tvg-country"></a>
|
||||
#### Атрибут `tvg-country`
|
||||
|
||||
Код Alpha-2 страны вещания согласно ISO 3166-1 или ОКСМ.
|
||||
|
||||
<a id="tvg-language"></a>
|
||||
#### Атрибут `tvg-language`
|
||||
|
||||
Название языка телепередачи согласно ISO 639-2.
|
||||
|
||||
<a id="group-title"></a>
|
||||
#### Атрибут `group-title`
|
||||
|
||||
Название группы.
|
||||
По функционалу идентичен директиве `#EXTGRP`.
|
||||
|
||||
<a id="user-agent"></a>
|
||||
#### Атрибут `user-agent`
|
||||
|
||||
Значение заголовка `User-Agent` для обращения к контенту по http.
|
||||
|
||||
<a id="audio-track"></a>
|
||||
#### Атрибут `audio-track`
|
||||
|
||||
Языковой код (ISO 639-2) аудио дорожки канала, например: "eng,rus".
|
||||
|
||||
Допускается указание нескольких аудио дорожек через запятую: "rus,ukr,eng".
|
||||
|
||||
Дорожкой по умолчанию устанавливается первая указанная в списке.
|
||||
|
||||
<a id="aspect-ratio"></a>
|
||||
#### Атрибут `aspect-ratio`
|
||||
|
||||
Определяет пропорции экрана (может быть недоступно для некоторых моделей телевизоров).
|
||||
|
||||
Допустимые значения: 16:9, 3:2, 4:3, 1,85:1, 2,39:1 (наиболее распространенное значение для фильмов)
|
||||
|
||||
<a id="EXTVLCOPT"></a>
|
||||
### Директива `#EXTVLCOPT`
|
||||
|
||||
Специфична для VLC Player.
|
||||
Директив может быть множество для одной дорожки (канала).
|
||||
|
||||
Указывается в формате `#EXTVLCOPT:XXX` или `#EXTVLCOPT--XXX=YYY`, где:
|
||||
* `XXX` -- параметр командной строки VLC Player ([полный список](https://wiki.videolan.org/VLC_command-line_help/));
|
||||
* `YYY` -- значения параметра.
|
||||
|
||||
## Дополнительные материалы
|
||||
|
||||
* [Инструкция по формату M3U (SS IPTV)](https://ss-iptv.com/ru/users/documents/m3u)
|
||||
* [Архив телепрограмм (SS IPTV)](https://ss-iptv.com/ru/operators/catchup)
|
||||
* [VLC command-line help](https://wiki.videolan.org/VLC_command-line_help/)
|
||||
* [ISO 639-2 Codes for the Representation of Names of Languages](https://www.loc.gov/standards/iso639-2/php/code_list.php)
|
||||
* [ISO 3166-1 Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1)
|
||||
* ОКСМ:
|
||||
* [normativ.kontur.ru](https://normativ.kontur.ru/document?moduleId=1&documentId=22668#h1296)
|
||||
* [classifikators.ru](https://classifikators.ru/oksm)
|
||||
|
||||
59
src/formats/playlists.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
icon: material/code-brackets
|
||||
tags: ["плейлисты"]
|
||||
---
|
||||
|
||||
# :material-code-brackets: Формат файла `playlists.ini`
|
||||
|
||||
Рассмотрим на примере:
|
||||
|
||||
```ini
|
||||
[code]
|
||||
name = Рабочий автообновляемый IPTV плейлист M3U
|
||||
desc = "В этом IPTV плейлисте есть каналы в высоком качестве"
|
||||
pls = 'https://example.com/pls.m3u'
|
||||
src = 'https://example.com/super-duper-playlist'
|
||||
# комментарий 1
|
||||
; ещё один комментарий
|
||||
```
|
||||
|
||||
Перенос строк невозможен.
|
||||
Комментарии игнорируются.
|
||||
|
||||
Для значений можно (не) использовать 'одинарные' или "двойные" кавычки.
|
||||
Ради единообразия рекомендуется использовать 'одинарные'.
|
||||
|
||||
## `code`
|
||||
|
||||
Код плейлиста в рамках этого конфига (**обязательно**).
|
||||
|
||||
Должен быть коротким и уникальным.
|
||||
|
||||
Подставляется в короткую ссылку, по которой произойдёт переадресация на прямой адрес `pls`.
|
||||
|
||||
!!! note
|
||||
Для удобства ввода с пульта, код рекомендуется задавать числом или короткой строкой без пробелов и др. спецсимволов.
|
||||
Чем короче, тем лучше.
|
||||
|
||||
## `name`
|
||||
|
||||
Название плейлиста (необязательно).
|
||||
|
||||
По умолчанию: `Playlist #<code>`.
|
||||
|
||||
## `desc`
|
||||
|
||||
Краткое описание из источника или от себя (необязательно).
|
||||
|
||||
По умолчанию: пусто.
|
||||
|
||||
## `pls`
|
||||
|
||||
Прямая ссылка на m3u/m3u8 плейлист (**обязательно**).
|
||||
|
||||
## `src`
|
||||
|
||||
Ссылка на источник (страницу сайта), откуда был взят плейлист (необязательно).
|
||||
|
||||
По умолчанию: пусто.
|
||||
|
||||
69
src/index.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
icon: material/home
|
||||
---
|
||||
|
||||
# :material-home: Введение
|
||||
|
||||
Сервис предназначен для централизованного сбора ссылок на публичные IPTV-плейлисты, которые находятся в открытом доступе.
|
||||
Они отбираются вручную и периодически проверяются автоматически.
|
||||
|
||||
!!! info "Все необходимые адреса"
|
||||
**Веб-сайт:** [iptv.axenov.dev](https://iptv.axenov.dev)
|
||||
**Зеркало:** [m3u.su](https://m3u.su)
|
||||
Исходный код: [git.axenov.dev/IPTV](https://git.axenov.dev/IPTV)
|
||||
Новостной канал: [@iptv_aggregator](https://t.me/iptv_aggregator)
|
||||
Обсуждение: [@iptv_aggregator_chat](tg/chat.md)
|
||||
Бот: [@iptv_aggregator_bot](tg/bot.md)
|
||||
|
||||
Далеко не все пользователи, желающие использовать цифровое ТВ, могут позволить себе подключение IPTV у своего провайдера или поставщиков контента.
|
||||
|
||||
И проблема не только в деньгах и подписках: граждане, живущие зарубежом, испытывают недостаток информации на родных языках, поскольку местные власти цензурируют и блокируют местные и зарубежные СМИ.
|
||||
Так, например, давно происходит в европейских странах.
|
||||
|
||||
В интернете очень много энтузиастов, которые составляют, поддерживают в рабочем состоянии и публикуют бесплатные плейлисты IPTV.
|
||||
В таких плейлистах есть самый разный набор теле- и радиоканалов.
|
||||
|
||||
Сервис предоставляет возможность:
|
||||
|
||||
* обращаться к этим плейлистам по коротким ссылкам вместо длинных,
|
||||
* увидеть какие из них действительно работают, какие в них каналы и работают ли они;
|
||||
* найти плейлист на любой вкус.
|
||||
|
||||
## Основные принципы проекта
|
||||
|
||||
1. Проект должен быть публичен и бесплатен для всех
|
||||
2. Проект не должен нарушать права третьих лиц
|
||||
3. Весь исходный код проекта должен быть открыт и распространяться под MIT-лицензией
|
||||
|
||||
## Для чего предназначен сервис
|
||||
|
||||
1. Для хранения ссылок на сторонние плейлисты
|
||||
2. Для периодической проверки доступности плейлистов и их каналов
|
||||
3. Для кратковременного хранения результатов проверок и их публикации (в человекочитаемом и машиночитаемом виде)
|
||||
4. Для категоризации плейлистов и их каналов с помощью тегов
|
||||
5. Для предоставления коротких ссылок на плейлисты (для удобства ввода с пульта)
|
||||
6. Для переадресации с короткого адреса плейлиста на исходный
|
||||
7. Для публикации общей информации о каналах (название, логотип)
|
||||
|
||||
## Для чего НЕ предназначен сервис
|
||||
|
||||
1. Для создания плейлистов, их хранения или модификации
|
||||
2. Для записи, хранения или ретрансляции каналов
|
||||
3. Для бесплатного доступа к платным каналам
|
||||
4. Для сбора платежей за доступ к каким-либо каналам
|
||||
|
||||
Автор проекта не занимается созданием, изменением, размещением и хранением плейлистов.
|
||||
Ни бесплатно, ни за деньги, ни бартером, ни за спасибо.
|
||||
Все плейлисты, которые отображаются на сайте, созданы, размещены и поддерживаются третьими лицами на чужих серверах.
|
||||
|
||||
Автор проекта не взимает плату за размещение ссылок на сторонние плейлисты и ресурсы.
|
||||
За содержимое плейлистов и их качество отвечают авторы плейлистов.
|
||||
|
||||
Автор не зарабатывает на проекте и не собирается.
|
||||
Всё, что отображается на сайте, сделано бесплатно и на энтузиазме.
|
||||
|
||||
Но ты можешь сделать [добровольное пожертвование](support.md), которое поможет мне компенсировать затраты на поддержку и техническое развитие проекта.
|
||||
|
||||
## Условия, гарантии, обязательства и последствия
|
||||
|
||||
См. текст [лицензии MIT](https://opensource.org/license/mit).
|
||||
9
src/iptvc/cli/check.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
tags: ["iptvc"]
|
||||
---
|
||||
|
||||
# Команда `check`
|
||||
|
||||
!!! info "TODO"
|
||||
Скоро здесь появится полезная информация.
|
||||
Следи за обновлениями в канале [@iptv_aggregator](https://t.me/iptv_aggregator) или в [репозитории](https://git.axenov.dev/IPTV/docs).
|
||||
48
src/iptvc/cli/help.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
tags: ["iptvc"]
|
||||
---
|
||||
|
||||
# Команда `help`
|
||||
|
||||
Для получения помощи о программе, нужно вызвать команду `help` или передать аргумент `-h` или `--help`.
|
||||
|
||||
Равнозначные команды:
|
||||
|
||||
```
|
||||
./iptvc help
|
||||
./iptvc --help
|
||||
./iptvc -h
|
||||
```
|
||||
|
||||
Вывод (может незначительно отличаться в разных версиях):
|
||||
|
||||
```
|
||||
Simple utility to check iptv playlists. Part of iptv.axenov.dev project.
|
||||
Copyright (c) 2025, Антон Аксенов, MIT license.
|
||||
|
||||
Usage:
|
||||
iptvc [command]
|
||||
|
||||
Available Commands:
|
||||
check Check playlists
|
||||
completion Generate the autocompletion script for the specified shell
|
||||
help Help about any command
|
||||
version Show version
|
||||
|
||||
Flags:
|
||||
-h, --help help for iptvc
|
||||
-v, --verbose enable additional output
|
||||
|
||||
Use "iptvc [command] --help" for more information about a command.
|
||||
```
|
||||
|
||||
Чтобы получить справку о конкретной команде, можно вызвать программу одним из способов:
|
||||
|
||||
```
|
||||
./iptvc help <КОМАНДА>
|
||||
./iptvc <КОМАНДА> --help
|
||||
./iptvc <КОМАНДА> -h
|
||||
```
|
||||
|
||||
Список команд указан в этом разделе.
|
||||
|
||||
7
src/iptvc/cli/index.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
icon: octicons/terminal-24
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# :octicons-terminal-24: Работа в терминале
|
||||
9
src/iptvc/cli/version.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
tags: ["iptvc"]
|
||||
---
|
||||
|
||||
# Команда `version`
|
||||
|
||||
!!! info "TODO"
|
||||
Скоро здесь появится полезная информация.
|
||||
Следи за обновлениями в канале [@iptv_aggregator](https://t.me/iptv_aggregator) или в [репозитории](https://git.axenov.dev/IPTV/docs).
|
||||
10
src/iptvc/env.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
icon: simple/dotenv
|
||||
tags: ["iptvc", "переменные окружения"]
|
||||
---
|
||||
|
||||
# :simple-dotenv: Настройки окружения (файл .env)
|
||||
|
||||
!!! info "TODO"
|
||||
Скоро здесь появится полезная информация.
|
||||
Следи за обновлениями в канале [@iptv_aggregator](https://t.me/iptv_aggregator) или в [репозитории](https://git.axenov.dev/IPTV/docs).
|
||||
26
src/iptvc/how-it-works.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
icon: material/cog-sync-outline
|
||||
tags: ["iptvc", "теги"]
|
||||
---
|
||||
|
||||
# :material-cog-sync-outline: Как работает iptvc
|
||||
|
||||
Это консольная программа, которая проверяет плейлисты и присваивает каналам [теги](../formats/channels.md).
|
||||
|
||||
У неё нет графического интерфейса.
|
||||
|
||||
Принцип её работы очень простой:
|
||||
|
||||
1. Получить плейлист по ссылке.
|
||||
2. Полученный плейлист распарсить:
|
||||
обрабатывается полученный текст в формате [m3u](../formats/m3u.md), из него вычленется информация о каналах и их группировке.
|
||||
3. Каждый найденный канал проверить:
|
||||
получить информацию по ссылке (первый 1 КБ данных) и принять решение -- работает ли канал технически или нет.
|
||||
4. Каждому каналу [присвоить теги](../formats/channels.md#доступные-теги).
|
||||
|
||||
Во время работы программа пишет лог проверки плейлиста и каналов в достаточно компактном человекочитаемом виде, а в конце пишет результаты проверок.
|
||||
|
||||
При желании, можно включить более подробный вывод, чтобы тщательно следить за ходом проверки в реальном времени, а также вывод результатов в машиночитаемом виде (в формате json).
|
||||
|
||||
Подробности см. в разделе [Команда `check`](../iptvc/cli/check.md).
|
||||
|
||||
29
src/iptvc/index.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
icon: material/check-network
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# :material-check-network: IPTV Checker (iptvc)
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- [:material-flag-checkered: Быстрый старт](quickstart.md)
|
||||
|
||||
---
|
||||
Коротко о главном, если не терпится
|
||||
|
||||
- [:material-cog-sync-outline: Как работает iptvc](how-it-works.md)
|
||||
|
||||
---
|
||||
Механика работы программы
|
||||
|
||||
- [:simple-dotenv: Настройки окружения (файл .env)](env.md)
|
||||
|
||||
---
|
||||
Параметры конфигурации программы
|
||||
|
||||
- [:octicons-terminal-24: Работа в терминале](cli/index.md)
|
||||
|
||||
---
|
||||
Доступные команды и их аргументы
|
||||
</div>
|
||||
79
src/iptvc/quickstart.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
icon: material/flag-checkered
|
||||
tags: ["iptvc"]
|
||||
---
|
||||
|
||||
# :material-flag-checkered: Быстрый старт
|
||||
|
||||
## Проверить плейлист по прямой ссылке
|
||||
|
||||
```
|
||||
./iptvc check --url https://example.com/pls.m3u
|
||||
```
|
||||
|
||||
## Проверить файл плейлист с диска
|
||||
|
||||
```
|
||||
./iptvc check --file /home/user/pls.m3u
|
||||
```
|
||||
|
||||
## Проверить плейлист по короткому коду из [`playlists.ini`](../formats/playlists.md)
|
||||
|
||||
```
|
||||
./iptvc check --code X
|
||||
```
|
||||
|
||||
Файл `playlists.ini` должен лежать рядом с `iptvc`.
|
||||
|
||||
Если файл лежит в другой директории, то можно явно указать путь к нему:
|
||||
|
||||
```
|
||||
./iptvc check --code X --ini /home/user/playlists.ini
|
||||
```
|
||||
|
||||
Если ini-файл не будет найден, программа предупредит об этом.
|
||||
|
||||
## Присвоить каналам тематические теги
|
||||
|
||||
Чтобы это произошло, рядом с `iptvc` должен лежать файл [channels.json](../formats/channels.md).
|
||||
|
||||
Если файл лежит в другой директории, то можно указать её явно:
|
||||
|
||||
```
|
||||
./iptvc check --tags /home/user/channels.json <...другие аргументы...>
|
||||
```
|
||||
|
||||
Если json-файл не будет найден, то программа предупредит о том, что теги не будут присвоены, и продолжит работу.
|
||||
|
||||
## Проверить несколько плейлистов одновременно
|
||||
|
||||
Для этого можно комбинировать все аргументы, пречисленные выше, с учётом особенностей их работы:
|
||||
|
||||
```
|
||||
./iptvc check \
|
||||
--ini /home/user/p.ini \
|
||||
--tags /home/user/c.json \
|
||||
--code Y \
|
||||
--file /home/user/tv.m3u \
|
||||
--url https://example.com/pls1.m3u \
|
||||
--url https://example.com/pls2.m3u
|
||||
```
|
||||
|
||||
В этом примере (построчно):
|
||||
|
||||
* вызывать команду проверки;
|
||||
* взять список плейлистов из файла `/home/user/p.ini`;
|
||||
* применить правила присвоения тегов из файла `/home/user/c.json`;
|
||||
* проверить плейлист с кодом `Y` из ini-файла;
|
||||
* проверить плейлист из файла `/home/user/tv.m3u`;
|
||||
* проверить плейлист по ссылке `https://example.com/pls1.m3u`;
|
||||
* проверить плейлист по ссылке `https://example.com/pls2.m3u`.
|
||||
|
||||
Символ `\` нужен только для наглядного разделения аргументов на несколько строк.
|
||||
|
||||
Переданные плейлисты будут обработаны в следующем порядке:
|
||||
|
||||
1. локальные файлы плейлистов;
|
||||
2. плейлисты по ссылкам;
|
||||
3. плейлисты по кодам из ini-файла.
|
||||
|
||||
68
src/support.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
icon: material/hand-heart-outline
|
||||
---
|
||||
|
||||
# :material-hand-heart-outline: Поддержка проекта
|
||||
|
||||
Проект держится только на сугубо техническом интересе одного разработчика в свободное от работы время.
|
||||
|
||||
При этом, проект не планировался как монетизируемый и до сих пор не принёс ни рубля прибыли.
|
||||
|
||||
Если у вас есть желание помочь проекту, ниже перечислены минимально доступные тебе способы -- от самых простых способов к более сложным.
|
||||
|
||||
## Рассказать публично
|
||||
|
||||
Друзьям, коллегам, на своей страничке, в своих каналах и социальных сетях.
|
||||
|
||||
Вокруг проекта должно быть какое-то сообщество неравнодушных энтузиастов.
|
||||
Только такие люди обеспечивают прогресс.
|
||||
|
||||
## Подписаться в Telegram
|
||||
|
||||
У проекта есть два публичных ресурса для прямой связи с пользователями.
|
||||
Там можно ставить **платные реакции** к постам и/или **дарить голоса** (бусты):
|
||||
|
||||
* канал: [@iptv_aggregator](https://t.me/iptv_aggregator) ([boost](https://t.me/iptv_aggregator?boost)) -- в нём новости о проекте (общие объявления и проведённые доработки);
|
||||
* чат: [@iptv_aggregator_chat](https://t.me/iptv_aggregator_chat) ([boost](https://t.me/iptv_aggregator_chat?boost)) -- комментарии к каналу, общение по теме проекта и IPTV.
|
||||
|
||||
Голоса открывают новые возможности для каналов и групп.
|
||||
|
||||
## Внести пожертвование
|
||||
|
||||
Вы можете внести прямое денежное **пожертвование** с банковской карты на виртуальный кошелёк ЮMoney.
|
||||
Разовый платёж, без подписок, на любую сумму.
|
||||
|
||||
<center><a href="https://yoomoney.ru/to/41001685237530">yoomoney.ru/to/41001685237530</a></center>
|
||||
|
||||
Также вы можете оформить подписку на Boosty:
|
||||
|
||||
<center><a href="https://boosty.to/anthonyaxenov">boosty.to/anthonyaxenov</a></center>
|
||||
|
||||
Финансовая поддержка проекта со стороны пользователей добровольна, она не рассматривается как способ обогащения или способ для эксклюзивного доступа к чему-либо.
|
||||
|
||||
Пожертвования являются лишь компенсацией трудозатрат и мотивацией к его технической поддержке и развитию.
|
||||
|
||||
На пожертвования [был приобретён](https://t.me/iptv_aggregator/30) домен m3u.su, который сейчас используется в качестве короткого зеркала.
|
||||
|
||||
<a id="participate"></a>
|
||||
## Принять участие в разработке
|
||||
|
||||
Весь исходный код проекта хранится в репозиториях организации: [git.axenov.dev/IPTV](https://git.axenov.dev/IPTV)
|
||||
|
||||
Чтобы принять участие в разработке, необходимо [зарегистрироваться на сайте git.axenov.dev](https://git.axenov.dev/user/sign_up) и **активировать** учётную запись по e-mail.
|
||||
|
||||
!!! info "Это бесплатно, но неактивированные учётки периодически удаляются."
|
||||
|
||||
### Создать задачу
|
||||
|
||||
Любое ПО неидеально, как и документация к нему.
|
||||
|
||||
Если вы нашли ошибку, опечатку, неожиданное поведение ПО или есть предложение по улучшению -- можете создать задачу в соответствующем репозитории организации.
|
||||
|
||||
### Прислать изменения
|
||||
|
||||
Вы можете внести исправления в код самостоятельно и прислать pull-request для принятия в основную ветку.
|
||||
|
||||
Это может быть новый функционал, исправления ошибок или опечаток.
|
||||
|
||||
Если есть идеи и желание для расширения функционала проекта, можем обсудить создание нового репозитория с выдачей необходимых прав.
|
||||
49
src/tg/bot.md
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
icon: material/robot-outline
|
||||
tags: ["telegram"]
|
||||
---
|
||||
|
||||
# :material-robot-outline: Telegram-бот
|
||||
|
||||
Позволяет получать информацию с сайта, не выходя из Telegram.
|
||||
Функционал тот же, что у сайта, но информацию выдаёт компактнее, чтобы умещаться в лимиты мессенджера и не перегружать чат.
|
||||
|
||||
> Открыть: [@iptv_aggregator_bot](https://t.me/iptv_aggregator_bot)
|
||||
|
||||
## Команды
|
||||
|
||||
### `/start`
|
||||
|
||||
Стандартное начало работы.
|
||||
|
||||
Позволяет отправлять другие команды.
|
||||
|
||||
### `/help`
|
||||
|
||||
Помощь по использованию бота.
|
||||
|
||||
!!! warning "Запомни эту команду!"
|
||||
В любой непонятной ситуации обращайся к ней.
|
||||
|
||||
### `/links`
|
||||
|
||||
Список ссылок на все ресурсы, связанные с проектом, для быстрого перехода.
|
||||
|
||||
### `/list`
|
||||
|
||||
Список всех кодов плейлистов и их статусов.
|
||||
|
||||
### `/info <XYZ>`
|
||||
|
||||
Информация о плейлисте c кодом `XYZ`:
|
||||
|
||||
* статус и название плейлиста (ссылкой на сайт);
|
||||
* время и результат последней проверки;
|
||||
* количество каналов (всех/онлайн/оффлайн)
|
||||
* возможности плейлиста (перемотка, телепрограмма);
|
||||
* список групп и тегов (при наличии);
|
||||
* ссылки для ТВ.
|
||||
|
||||
### `/stats`
|
||||
|
||||
Небольшая статистика на текущий момент по всем плейлистам, которые доступны в сервисе.
|
||||
44
src/tg/chat.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
icon: material/message-check
|
||||
tags: ["telegram"]
|
||||
---
|
||||
|
||||
# :material-message-check: Telegram-чат
|
||||
|
||||
## Правила
|
||||
|
||||
* 🇷🇺 Говорим по-русски (Russian lang only)
|
||||
* ✅ Уважаем друг друга
|
||||
* ✅ Ведём себя культурно
|
||||
* ✅ Говорим по делу и по теме
|
||||
* ✅ [neprivet.com](https://neprivet.com)
|
||||
* ✅ [nometa.xyz](https://nometa.xyz)
|
||||
* ✅ [novoice.me](https://novoice.me)
|
||||
* ❌ Не спамим, не флудим
|
||||
* ❌ Не нарушаем законов РФ и здравого смысла
|
||||
* ❌ Ботов не тащим
|
||||
|
||||
## Я только спросить!
|
||||
|
||||
Держи чеклист:
|
||||
|
||||
1. **Найди ответ в [FAQ](../faq.md)**
|
||||
2. Если не нашёл ответ -- прочти остальное
|
||||
3. Если не нашёл ответ и это проблема:
|
||||
* опиши всю ситуацию -- сухо и по существу, в чём проблема, чего хочешь и ожидаешь;
|
||||
* если вопрос связан с плейлистом из сервиса -- приложи его код и ссылку, которую указываешь в плеере;
|
||||
* если вопрос связан с другим плейлистом -- приложи его ссылку;
|
||||
* если вопрос связан с плеером -- укажи хотя бы его название;
|
||||
* если есть возможность, приложи скриншот или чёткое фото -- чтобы можно было разглядеть проблему и подсказать решение.
|
||||
|
||||
!!! info "Скорее всего, это надо только тебе"
|
||||
Чем больше полезной информации, тем лучше.
|
||||
Не заставляй выдирать её из тебя клещами.
|
||||
|
||||
И помни, что тебе не обязаны отвечать.
|
||||
Ну, потому что.
|
||||
|
||||
В группе работает бот-модератор и админ.
|
||||
При вступлении в группу нужно явно подтвердить согласие с правилами.
|
||||
|
||||
> Открыть чат: [@iptv_aggregator_chat](https://t.me/iptv_aggregator_chat)
|
||||
19
src/tg/index.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
icon: simple/telegram
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
# :simple-telegram: Ресурсы в Telegram
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- [:material-robot-outline: Бот](bot.md)
|
||||
|
||||
---
|
||||
Получай доступ к плейлистам и делись ими с друзьями, не выходя из мессенджера
|
||||
|
||||
- [:material-message-check: Чат](chat.md)
|
||||
|
||||
---
|
||||
Попроси о помощи у других пользователей или сообщи разработчику о проблеме
|
||||
</div>
|
||||