Name | m3u8 JSON |
Version |
6.0.0
JSON |
| download |
home_page | https://github.com/globocom/m3u8 |
Summary | Python m3u8 parser |
upload_time | 2024-08-07 11:20:06 |
maintainer | None |
docs_url | None |
author | Globo.com |
requires_python | >=3.7 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
![image](https://github.com/globocom/m3u8/actions/workflows/main.yml/badge.svg) [![image](https://badge.fury.io/py/m3u8.svg)](https://badge.fury.io/py/m3u8)
# m3u8
Python [m3u8](https://tools.ietf.org/html/rfc8216) parser.
# Documentation
## Loading a playlist
To load a playlist into an object from uri, file path or directly from
string, use the `load/loads` functions:
```python
import m3u8
playlist = m3u8.load('http://videoserver.com/playlist.m3u8') # this could also be an absolute filename
print(playlist.segments)
print(playlist.target_duration)
# if you already have the content as string, use
playlist = m3u8.loads('#EXTM3U8 ... etc ... ')
```
## Dumping a playlist
To dump a playlist from an object to the console or a file, use the
`dump/dumps` functions:
``` python
import m3u8
playlist = m3u8.load('http://videoserver.com/playlist.m3u8')
print(playlist.dumps())
# if you want to write a file from its content
playlist.dump('playlist.m3u8')
```
# Supported tags
- [\#EXT-X-TARGETDURATION](https://tools.ietf.org/html/rfc8216#section-4.3.3.1)
- [\#EXT-X-MEDIA-SEQUENCE](https://tools.ietf.org/html/rfc8216#section-4.3.3.2)
- [\#EXT-X-DISCONTINUITY-SEQUENCE](https://tools.ietf.org/html/rfc8216#section-4.3.3.3)
- [\#EXT-X-PROGRAM-DATE-TIME](https://tools.ietf.org/html/rfc8216#section-4.3.2.6)
- [\#EXT-X-MEDIA](https://tools.ietf.org/html/rfc8216#section-4.3.4.1)
- [\#EXT-X-PLAYLIST-TYPE](https://tools.ietf.org/html/rfc8216#section-4.3.3.5)
- [\#EXT-X-KEY](https://tools.ietf.org/html/rfc8216#section-4.3.2.4)
- [\#EXT-X-STREAM-INF](https://tools.ietf.org/html/rfc8216#section-4.3.4.2)
- [\#EXT-X-VERSION](https://tools.ietf.org/html/rfc8216#section-4.3.1.2)
- [\#EXT-X-ALLOW-CACHE](https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-07#section-3.3.6)
- [\#EXT-X-ENDLIST](https://tools.ietf.org/html/rfc8216#section-4.3.3.4)
- [\#EXTINF](https://tools.ietf.org/html/rfc8216#section-4.3.2.1)
- [\#EXT-X-I-FRAMES-ONLY](https://tools.ietf.org/html/rfc8216#section-4.3.3.6)
- [\#EXT-X-BITRATE](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.4.8)
- [\#EXT-X-BYTERANGE](https://tools.ietf.org/html/rfc8216#section-4.3.2.2)
- [\#EXT-X-I-FRAME-STREAM-INF](https://tools.ietf.org/html/rfc8216#section-4.3.4.3)
- [\#EXT-X-IMAGES-ONLY](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)
- [\#EXT-X-IMAGE-STREAM-INF](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)
- [\#EXT-X-TILES](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)
- [\#EXT-X-DISCONTINUITY](https://tools.ietf.org/html/rfc8216#section-4.3.2.3)
- \#EXT-X-CUE-OUT
- \#EXT-X-CUE-OUT-CONT
- \#EXT-X-CUE-IN
- \#EXT-X-CUE-SPAN
- \#EXT-OATCLS-SCTE35
- [\#EXT-X-INDEPENDENT-SEGMENTS](https://tools.ietf.org/html/rfc8216#section-4.3.5.1)
- [\#EXT-X-MAP](https://tools.ietf.org/html/rfc8216#section-4.3.2.5)
- [\#EXT-X-START](https://tools.ietf.org/html/rfc8216#section-4.3.5.2)
- [\#EXT-X-SERVER-CONTROL](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.3.8)
- [\#EXT-X-PART-INF](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.3.7)
- [\#EXT-X-PART](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.4.9)
- [\#EXT-X-RENDITION-REPORT](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.5.4)
- [\#EXT-X-SKIP](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.5.2)
- [\#EXT-X-SESSION-DATA](https://tools.ietf.org/html/rfc8216#section-4.3.4.4)
- [\#EXT-X-PRELOAD-HINT](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.5.3)
- [\#EXT-X-SESSION-KEY](https://tools.ietf.org/html/rfc8216#section-4.3.4.5)
- [\#EXT-X-DATERANGE](https://tools.ietf.org/html/rfc8216#section-4.3.2.7)
- [\#EXT-X-GAP](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-05#section-4.4.2.7)
- [\#EXT-X-CONTENT-STEERING](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-10#section-4.4.6.64)
# Frequently Asked Questions
- [FAQ](https://github.com/globocom/m3u8/wiki/FAQ)
# Running Tests
``` bash
$ ./runtests
```
# Contributing
All contributions are welcome, but we will merge a pull request if, and
only if, it
- Has tests
- Follows the code conventions
If you plan to implement a new feature or something that will take more
than a few minutes, please open an issue to make sure we don't work on
the same thing.
Raw data
{
"_id": null,
"home_page": "https://github.com/globocom/m3u8",
"name": "m3u8",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": "Globo.com",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/9b/a5/73697aaa99bb32b610adc1f11d46a0c0c370351292e9b271755084a145e6/m3u8-6.0.0.tar.gz",
"platform": null,
"description": "![image](https://github.com/globocom/m3u8/actions/workflows/main.yml/badge.svg) [![image](https://badge.fury.io/py/m3u8.svg)](https://badge.fury.io/py/m3u8)\n\n# m3u8\n\nPython [m3u8](https://tools.ietf.org/html/rfc8216) parser.\n\n# Documentation\n\n## Loading a playlist\n\nTo load a playlist into an object from uri, file path or directly from\nstring, use the `load/loads` functions:\n\n```python\nimport m3u8\n\nplaylist = m3u8.load('http://videoserver.com/playlist.m3u8') # this could also be an absolute filename\nprint(playlist.segments)\nprint(playlist.target_duration)\n\n# if you already have the content as string, use\n\nplaylist = m3u8.loads('#EXTM3U8 ... etc ... ')\n```\n\n## Dumping a playlist\n\nTo dump a playlist from an object to the console or a file, use the\n`dump/dumps` functions:\n\n``` python\nimport m3u8\n\nplaylist = m3u8.load('http://videoserver.com/playlist.m3u8')\nprint(playlist.dumps())\n\n# if you want to write a file from its content\n\nplaylist.dump('playlist.m3u8')\n```\n\n# Supported tags\n\n- [\\#EXT-X-TARGETDURATION](https://tools.ietf.org/html/rfc8216#section-4.3.3.1)\n- [\\#EXT-X-MEDIA-SEQUENCE](https://tools.ietf.org/html/rfc8216#section-4.3.3.2)\n- [\\#EXT-X-DISCONTINUITY-SEQUENCE](https://tools.ietf.org/html/rfc8216#section-4.3.3.3)\n- [\\#EXT-X-PROGRAM-DATE-TIME](https://tools.ietf.org/html/rfc8216#section-4.3.2.6)\n- [\\#EXT-X-MEDIA](https://tools.ietf.org/html/rfc8216#section-4.3.4.1)\n- [\\#EXT-X-PLAYLIST-TYPE](https://tools.ietf.org/html/rfc8216#section-4.3.3.5)\n- [\\#EXT-X-KEY](https://tools.ietf.org/html/rfc8216#section-4.3.2.4)\n- [\\#EXT-X-STREAM-INF](https://tools.ietf.org/html/rfc8216#section-4.3.4.2)\n- [\\#EXT-X-VERSION](https://tools.ietf.org/html/rfc8216#section-4.3.1.2)\n- [\\#EXT-X-ALLOW-CACHE](https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-07#section-3.3.6)\n- [\\#EXT-X-ENDLIST](https://tools.ietf.org/html/rfc8216#section-4.3.3.4)\n- [\\#EXTINF](https://tools.ietf.org/html/rfc8216#section-4.3.2.1)\n- [\\#EXT-X-I-FRAMES-ONLY](https://tools.ietf.org/html/rfc8216#section-4.3.3.6)\n- [\\#EXT-X-BITRATE](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.4.8)\n- [\\#EXT-X-BYTERANGE](https://tools.ietf.org/html/rfc8216#section-4.3.2.2)\n- [\\#EXT-X-I-FRAME-STREAM-INF](https://tools.ietf.org/html/rfc8216#section-4.3.4.3)\n- [\\#EXT-X-IMAGES-ONLY](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)\n- [\\#EXT-X-IMAGE-STREAM-INF](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)\n- [\\#EXT-X-TILES](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)\n- [\\#EXT-X-DISCONTINUITY](https://tools.ietf.org/html/rfc8216#section-4.3.2.3)\n- \\#EXT-X-CUE-OUT\n- \\#EXT-X-CUE-OUT-CONT\n- \\#EXT-X-CUE-IN\n- \\#EXT-X-CUE-SPAN\n- \\#EXT-OATCLS-SCTE35\n- [\\#EXT-X-INDEPENDENT-SEGMENTS](https://tools.ietf.org/html/rfc8216#section-4.3.5.1)\n- [\\#EXT-X-MAP](https://tools.ietf.org/html/rfc8216#section-4.3.2.5)\n- [\\#EXT-X-START](https://tools.ietf.org/html/rfc8216#section-4.3.5.2)\n- [\\#EXT-X-SERVER-CONTROL](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.3.8)\n- [\\#EXT-X-PART-INF](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.3.7)\n- [\\#EXT-X-PART](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.4.9)\n- [\\#EXT-X-RENDITION-REPORT](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.5.4)\n- [\\#EXT-X-SKIP](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.5.2)\n- [\\#EXT-X-SESSION-DATA](https://tools.ietf.org/html/rfc8216#section-4.3.4.4)\n- [\\#EXT-X-PRELOAD-HINT](https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.5.3)\n- [\\#EXT-X-SESSION-KEY](https://tools.ietf.org/html/rfc8216#section-4.3.4.5)\n- [\\#EXT-X-DATERANGE](https://tools.ietf.org/html/rfc8216#section-4.3.2.7)\n- [\\#EXT-X-GAP](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-05#section-4.4.2.7)\n- [\\#EXT-X-CONTENT-STEERING](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-10#section-4.4.6.64)\n\n# Frequently Asked Questions\n\n- [FAQ](https://github.com/globocom/m3u8/wiki/FAQ)\n\n# Running Tests\n\n``` bash\n$ ./runtests\n```\n\n# Contributing\n\nAll contributions are welcome, but we will merge a pull request if, and\nonly if, it\n\n- Has tests\n- Follows the code conventions\n\nIf you plan to implement a new feature or something that will take more\nthan a few minutes, please open an issue to make sure we don't work on\nthe same thing.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python m3u8 parser",
"version": "6.0.0",
"project_urls": {
"Homepage": "https://github.com/globocom/m3u8"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f83150f3c38b38ff28635ff9c4a4afefddccc5f1b57457b539bdbdf75ce18669",
"md5": "52e59184a825de8e24abcc03f63f90d6",
"sha256": "566d0748739c552dad10f8c87150078de6a0ec25071fa48e6968e96fc6dcba5d"
},
"downloads": -1,
"filename": "m3u8-6.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "52e59184a825de8e24abcc03f63f90d6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 24133,
"upload_time": "2024-08-07T11:20:03",
"upload_time_iso_8601": "2024-08-07T11:20:03.960501Z",
"url": "https://files.pythonhosted.org/packages/f8/31/50f3c38b38ff28635ff9c4a4afefddccc5f1b57457b539bdbdf75ce18669/m3u8-6.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9ba573697aaa99bb32b610adc1f11d46a0c0c370351292e9b271755084a145e6",
"md5": "af97e769de7d9b128f214d190c084b54",
"sha256": "7ade990a1667d7a653bcaf9413b16c3eb5cd618982ff46aaff57fe6d9fa9c0fd"
},
"downloads": -1,
"filename": "m3u8-6.0.0.tar.gz",
"has_sig": false,
"md5_digest": "af97e769de7d9b128f214d190c084b54",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 42720,
"upload_time": "2024-08-07T11:20:06",
"upload_time_iso_8601": "2024-08-07T11:20:06.606945Z",
"url": "https://files.pythonhosted.org/packages/9b/a5/73697aaa99bb32b610adc1f11d46a0c0c370351292e9b271755084a145e6/m3u8-6.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-07 11:20:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "globocom",
"github_project": "m3u8",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "m3u8"
}