zikwall / m3uparse
此包最新版本(dev-master)没有可用的许可证信息。
PHP版本解析不同的m3u播放列表和EPG
dev-master
2020-01-07 17:14 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-08 04:57:17 UTC
README
该库是一个开放播放列表扫描器,用于创建一个统一的播放列表数据库。它将所有内容汇总在一起,进行筛选和排序。
来源
您可以自己定义自己的解析器。
电视节目指南来源
- 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(无描述)
路线图
- 自动目录生成器与下载器
- 通用聚合接口
- 自动链接本地解析器频道并分组
- 在目标播放列表中过滤可用频道
- 默认解析器
- 链接到EPG服务
- 解析器返回对象接口而不是数组
- 分类
- 额外选项(适用于应用程序)
- 使用原始流
- 图片
- 使用或不使用
- 禁止
- WebView URL
- 通用EPG聚合接口
- Go3uparse
PHP Packgist 安装
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
(默认) - PlaylistsFolder =
/playlists
(默认)
输出: /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()
方法实现。它应该返回一个数组,格式为:频道名称 -> 其EPG标识符
[ "Odessa Int2." => 7, "Синергия ТВ2" => 286 ]
此列表被添加到通用列表中的频道,作为可能的频道名称。