SkillAgentSearch skills...

M3uparse

:tv: PHP version parser different m3u playlists and EPG

Install / Use

/learn @zikwall/M3uparse
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Парсер плейлистов | Playlists Parser

Данная библиотека - это сканер открытых плейлистов для создания едной базы плейлистов. Он собирает все в одну кучу, фильтрует и сортирует.

Источники

Вы сами можете определить свой парсер.

Источники телепрограммы

  • [x] 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

  • [x] Auto directory generator & downloader
  • [x] Common Aggregation Interface
    • [x] Autolink local parser channels with grouping
    • [ ] Filter available channels in target playlist
    • [x] Default parsers
    • [ ] Link to EPG services
    • [ ] Parser return Object Interface instead of array
    • [ ] Categories
    • [x] Extra Options (for apps):
      • [x] Use origin stream
      • [x] Image
      • [x] 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.

Например:

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

Данный список добавляется к каналу из общего списка, как возможное наименование канала.

View on GitHub
GitHub Stars7
CategoryDevelopment
Updated1y ago
Forks5

Languages

PHP

Security Score

75/100

Audited on Apr 16, 2024

No findings