Данная библиотека - это сканер открытых плейлистов для создания едной базы плейлистов. Он собирает все в одну кучу, фильтрует и сортирует.
- Forever (Common playlist)
- vasiliy78L/myIPTV
- Бесплатный обновляемый плейлист от Great Crabs IPTV
- Free Best TV
- Огромный сборник по всему миру iptv-org/iptv
Вы сами можете определить свой парсер.
- http://www.teleguide.info/download/new3/xmltv.xml.gz
- http://www.teleguide.info/download/new3/jtv.zip
- http://programtv.ru/jtv.zip
- http://api.torrent-tv.ru/ttv.xmltv.xml.gz
- http://programtv.ru/xmltv.xml.gz
- http://epg.it999.ru/edem.xml.gz
- https://iptvx.one/epg/epg.xml.gz (полный)
- https://iptvx.one/EPG_LITE (без описаний)
- Auto directory generator & downloader
- Common Aggregation Interface
- Autolink local parser channels with grouping
- Filter available channels in target playlist
- Default parsers
- Link to EPG services
- Parser return Object Interface instead of array
- Categories
- Extra Options (for apps):
- Use origin stream
- Image
- Use or not
- Blocked
- WebView URL
- Common EPG Aggregation Interface
- Go3uparse
composer require zikwall/m3uparse
{
"minimum-stability": "dev",
"repositories": [
{
"type": "git",
"url": "https://github.com/zikwall/m3uparse.git",
}
],
"require": {
"zikwall/m3uparse": "dev-develop"
}
}
<?php
require_once './vendor/autoload.php';
use zikwall\m3uparse\Aggregation;
// u can use default playlist sources
use zikwall\m3uparse\parsers\{
free\Free,
freebesttv\FreeBestTv,
vasiliy78L\Base
};
$agg = new Aggregation(new \zikwall\m3uparse\Configuration());
// порядок имеет значение!
// первые более приоритетнее чем последующие
print_r(
$agg->merge(new Base(), new Free(), new FreeBestTv())
);
По умолчанию плейлисты скачиваются и сканируются из директории: RootDirectory + UploadFolder + PlaylistsFolder.
Например:
- RootDirectory =
/public
- UploadFolder =
/uploads
(default) - PlaylistsFolder =
/playlists
(default)
Вывод: /public/uploads/playlists
<?php
// set current dir is a root
$agg = new Aggregation(new \zikwall\m3uparse\Configuration(__DIR__));
Каждый парсер должен следовать интерфейсу IParse
<?php
interface IParse
{
public function parse(Aggregation $aggregation);
public function channels();
}
В методе IParse::parse()
Вы можете реализовать любую логику парсинга, примеры можете посмотреть в парсерах по умолчанию.
Но любой парсер должен возвращать структуру типа:
[
...
[
'name' => 'Channel Name',
'url' => 'Channel url to m3u',
'from' => 'From playlist', // optional
'ssl' => $this->isSSL($url) ? 1 : 0
]
...
]
У парсера может быть файл со списком каналов, которые нужно инициализировать, реализует данный функционал метод IParse::channels()
.
Он должен возвращать массив, формата: Название канала -> Его ЕПГ идентификатор
[
"Odessa Int2." => 7,
"Синергия ТВ2" => 286
]
Данный список добавляется к каналу из общего списка, как возможное наименование канала.