zikwall / m3uparse
Go and PHP version parser different m3u playlists and EPG
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-12-08 05:45:21 UTC
README
Данная библиотека - это сканер открытых плейлистов для создания едной базы плейлистов. Он собирает все в одну кучу, фильтрует и сортирует.
Источники
- 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 (без описаний)
Roadmap
- 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
Installation PHP Packgist
composer require zikwall/m3uparse
Develop mode
{ "minimum-stability": "dev", "repositories": [ { "type": "git", "url": "https://github.com/zikwall/m3uparse.git", } ], "require": { "zikwall/m3uparse": "dev-develop" } }
How to use?
<?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()) );
Configuration
По умолчанию плейлисты скачиваются и сканируются из директории: RootDirectory + UploadFolder + PlaylistsFolder.
Например:
- RootDirectory =
/public
- UploadFolder =
/uploads
(default) - PlaylistsFolder =
/playlists
(default)
Вывод: /public/uploads/playlists
Set root directory
<?php // set current dir is a root $agg = new Aggregation(new \zikwall\m3uparse\Configuration(__DIR__));
Add custom Parsers
Каждый парсер должен следовать интерфейсу 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 ]
Данный список добавляется к каналу из общего списка, как возможное наименование канала.