Skip to content

πŸ“Ί PHP version parser different m3u playlists and EPG

License

Notifications You must be signed in to change notification settings

zikwall/m3uparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0e5b6ef Β· Jan 7, 2020

History

67 Commits
Jan 7, 2020
Oct 25, 2019
Jan 4, 2020
Jan 5, 2020
Oct 27, 2019

Repository files navigation

ΠŸΠ°Ρ€ΡΠ΅Ρ€ плСйлистов | Playlists Parser

Данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° - это сканСр ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… плСйлистов для создания Π΅Π΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ плСйлистов. Он собираСт всС Π² ΠΎΠ΄Π½Ρƒ ΠΊΡƒΡ‡Ρƒ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ ΠΈ сортируСт.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π’Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свой парсСр.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ Ρ‚Π΅Π»Π΅ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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.

НапримСр:

  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
]

Π”Π°Π½Π½Ρ‹ΠΉ список добавляСтся ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ списка, ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Π°.

About

πŸ“Ί PHP version parser different m3u playlists and EPG

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages