ΠΠ°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° - ΡΡΠΎ ΡΠΊΠ°Π½Π΅Ρ ΠΎΡΠΊΡΡΡΡΡ ΠΏΠ»Π΅ΠΉΠ»ΠΈΡΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΅Π΄Π½ΠΎΠΉ Π±Π°Π·Ρ ΠΏΠ»Π΅ΠΉΠ»ΠΈΡΡΠΎΠ². ΠΠ½ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΊΡΡΡ, ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΈ ΡΠΎΡΡΠΈΡΡΠ΅Ρ.
- 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 (Π±Π΅Π· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ)
- 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
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
(default) - PlaylistsFolder =
/playlists
(default)
ΠΡΠ²ΠΎΠ΄: /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()
.
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΡΠΌΠ°ΡΠ°: ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Π° -> ΠΠ³ΠΎ ΠΠΠ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
[
"Odessa Int2." => 7,
"Π‘ΠΈΠ½Π΅ΡΠ³ΠΈΡ Π’Π2" => 286
]
ΠΠ°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΠΊΠ°Π½Π°Π»Ρ ΠΈΠ· ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Π°.