https://github.com/raiper34/m3u-parser-generator
Library to parse and generate m3u or m3u8 IPTV playlist files
https://github.com/raiper34/m3u-parser-generator
iptv iptv-m3u iptv-playlist m3u m3u-generator m3u-parser m3u-playlist m3u8
Last synced: 6 months ago
JSON representation
Library to parse and generate m3u or m3u8 IPTV playlist files
- Host: GitHub
- URL: https://github.com/raiper34/m3u-parser-generator
- Owner: Raiper34
- License: mit
- Created: 2022-01-18T12:50:30.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-08T20:02:25.000Z (8 months ago)
- Last Synced: 2025-04-01T12:52:28.879Z (6 months ago)
- Topics: iptv, iptv-m3u, iptv-playlist, m3u, m3u-generator, m3u-parser, m3u-playlist, m3u8
- Language: TypeScript
- Homepage: https://m3u-parser-generator.netlify.app
- Size: 3.3 MB
- Stars: 39
- Watchers: 1
- Forks: 10
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
[](https://badge.fury.io/js/m3u-parser-generator)
[](https://m3u-parser-generator.netlify.app)


[](https://circleci.com/gh/Raiper34/m3u-parser-generator)
[](https://coveralls.io/github/Raiper34/m3u-parser-generator?branch=main)
[](https://badge.fury.io/js/m3u-parser-generator)
[](https://badge.fury.io/js/m3u-parser-generator)
[](https://badge.fury.io/js/m3u-parser-generator)
[](https://www.jsdelivr.com/package/npm/m3u-parser-generator)
[](https://github.com/Raiper34/m3u-parser-generator)# M3U Parser Generator
Library to parse and generate [m3u or m3u8 IPTV playlist files](https://en.wikipedia.org/wiki/M3U).### Content
- [🚀 Installation](#-installation)
- [📚 Documentation](#-documentation)
- [💻 Usage](#-usage)
- [🌐 Browser](#-browser)
- [⚖️ License](#-license)# 🚀 Installation
Install **M3U Parser Generator** with npm
```sh
npm install m3u-parser-generator --save
```
or with jsdelivr
```html```
# 📚 Documentation
[Documentation](https://m3u-parser-generator.netlify.app/)# 💻 Usage
You can parse your loaded m3u string:
```javascript
import {M3uParser} from 'm3u-parser-generator';const parser = new M3uParser();
const playlist = parser.parse(m3uString);
playlist.medias.forEach(media => media.location);
```
and you get object with following structure
```json
{
"title": "Test TV",
"medias": [
{
"location": "http://iptv.test1.com/playlist.m3u8",
"duration": -1,
"attributes": {
"tvg-id": "Test tv 1",
"tvg-country": "CZ",
"tvg-language": "CS",
"tvg-logo": "logo1.png",
"group-title": "Test1",
"unknown": "0"
},
"name": "Test tv 1 [CZ]",
"group": "Test TV group 1"
},
{
"location": "http://iptv.test2.com/playlist.m3u8",
"duration": 100,
"attributes": {
"tvg-id": "Test tv 2",
"tvg-country": "SK",
"tvg-language": "SK",
"tvg-logo": "logo2.png",
"group-title": "Test2"
},
"name": "Test tv 2 [SK]",
"group": "Test TV group 2"
},
{
"location": "http://iptv.test3.com/playlist.m3u8",
"duration": 120,
"attributes": {
"tvg-id": "Test tv 3",
"tvg-country": "EN",
"tvg-language": "EN",
"tvg-logo": "logo3.png",
"group-title": "Test3"
},
"name": "Test tv 3 [EN]"
},
{
"location": "http://iptv.test4.com/playlist.m3u8",
"duration": -1,
"attributes": {}
}
]
}
```Or you can generate new playlist by your own:
```javascript
import {M3uPlaylist, M3uMedia} from 'm3u-parser-generator';const playlist = new M3uPlaylist();
playlist.title = 'Test playlist';const media1 = new M3uMedia('http://my-stream-ulr.com/playlist.m3u8');
media1.attributes = {'tvg-id': '5', 'tvg-language': 'EN', 'unknown': 'my custom attribute'};
media1.duration = 500;
media1.name = 'Test Channel';
media1.group = 'Test Group';playlist.medias.push(media1);
const m3uString = playlist.getM3uString();
```
you get
```
#EXTM3U
#PLAYLIST:Test playlist
#EXTINF:500 tvg-id="5" tvg-language="EN" unknown="my custom attribute",Test Channel
#EXTGRP:Test Group
http://my-stream-ulr.com/playlist.m3u8
```# 🌐 Browser
You can also use this library in the browser without compiling using jsDelivr.
Import script into HTML file, and you can access classes through the global `m3uParserGenerator` object.
```htmlconst playlist = new m3uParserGenerator.M3uPlaylist();
const media1 = new m3uParserGenerator.M3uMedia('http://my-stream-ulr.com/playlist.m3u8');
playlist.medias.push(media1);
const parser = new m3uParserGenerator.M3uParser();
const parsedPlaylist = parser.parse(m3uString);```
# ⚖️ License
[MIT](https://choosealicense.com/licenses/mit/)