Initial commit
This commit is contained in:
112
src/formats/channels.md
Normal file
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
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
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
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`
|
||||
|
||||
Ссылка на источник (страницу сайта), откуда был взят плейлист (необязательно).
|
||||
|
||||
По умолчанию: пусто.
|
||||
|
||||
Reference in New Issue
Block a user