zikwall/m3uparse

此包最新版本(dev-master)没有可用的许可证信息。

PHP版本解析不同的m3u播放列表和EPG

dev-master 2020-01-07 17:14 UTC

This package is auto-updated.

Last update: 2024-09-08 04:57:17 UTC


README

该库是一个开放播放列表扫描器,用于创建一个统一的播放列表数据库。它将所有内容汇总在一起,进行筛选和排序。

来源

您可以自己定义自己的解析器。

电视节目指南来源

路线图

  • 自动目录生成器与下载器
  • 通用聚合接口
    • 自动链接本地解析器频道并分组
    • 在目标播放列表中过滤可用频道
    • 默认解析器
    • 链接到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。

例如

  1. RootDirectory = /public
  2. UploadFolder = /uploads(默认)
  3. 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
]

此列表被添加到通用列表中的频道,作为可能的频道名称。