A tool to download and merge M3U8 segments into an MP4 file.
Project description
m3loader
Overview
m3loader is a Python tool that downloads and merges M3U8 segments into a single MP4 file using asynchronous operations for fast downloads. It supports progress bars, retries, and unique segment directories for concurrent sessions.
Features
- Asynchronous downloading of M3U8 segments
- Merging segments into a single MP4 file
- Support for progress bars and retries
- Timeout support for downloads
- Unique segment directories for concurrent sessions
Installation
You can install m3loader via pip:
pip install m3loader
Usage
Command Line Interface (CLI)
To use m3loader from the command line, you can use the following command:
m3loader <M3U8_URL> -d <OUTPUT_DIR> -o <OUTPUT_FILE> -p -t <TIMEOUT> -r <RETRIES>
Options
<M3U8_URL>: The URL of the M3U8 file.-d <OUTPUT_DIR>: Output directory for the MP4 file. Default is the current directory.-o <OUTPUT_FILE>: Output file name (with or without .mp4 extension). If not provided, a default name is used.-p: Show progress bar and merging messages.-t <TIMEOUT>: Set timeout for downloading in seconds.-r <RETRIES>: Set maximum number of retries for downloading segments.
Example
m3loader "https://example.com/path/to/playlist.m3u8" -d workers -o video -p -t 300 -r 3
As a Function
You can also use m3loader as a function in your Python scripts. First, import the download function from the m3loader.dloader module:
from m3loader.dloader import download
m3u8_url = "https://example.com/path/to/playlist.m3u8"
output_path = "workers"
output_name = "video"
progress = True
timeout = 300
retries = 3
download(m3u8_url, output_path, output_name, progress, timeout, retries)
Function Parameters
m3u8_url (str): URL of the M3U8 file.output_path (str): Output path for the MP4 file. Default is the current directory.output_name (str): Output file name (with or without .mp4 extension). If not provided, a default name is used.progress (bool): Show progress bar and merging messages. Default isFalse.timeout (int): Set timeout for downloading in seconds. Default isNone.retries (int): Set maximum number of retries for downloading segments. Default isNone.
Example Script
Here’s a complete example script using the m3loader function:
example_script.py
from m3loader.dloader import download
m3u8_url = "https://example.com/path/to/playlist.m3u8"
output_path = "workers"
output_name = "video"
progress = True
timeout = 300
retries = 3
download(m3u8_url, output_path, output_name, progress, timeout, retries)
Project Structure
The m3loader project has the following structure:
m3loader/
├── LICENSE
├── README.md
├── requirements.txt
├── setup.py
├── m3loader/
│ ├── __init__.py
│ ├── dloader.py
└── example/
├── sample.m3u8
└── test_video.mp4
Contributing
If you would like to contribute to m3loader, please fork the repository and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file m3loader-0.2.5.tar.gz.
File metadata
- Download URL: m3loader-0.2.5.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f63eeac253b2cc099f1282f02e101cea91c20edbaddebea15b5f632c4eb4b0fe
|
|
| MD5 |
06d8c3d49d0367184ccff85a3643cc1c
|
|
| BLAKE2b-256 |
3e66be744442f5566bdae60ee2c1a59003ca009a4a93bdbd622670f0bb3d93b2
|
File details
Details for the file m3loader-0.2.5-py3-none-any.whl.
File metadata
- Download URL: m3loader-0.2.5-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83e3e5cace02a57b550fd726a52d3538b75381e08e20ca350beb293455e9e6e0
|
|
| MD5 |
33779a475be0f18ba68560a5ade26031
|
|
| BLAKE2b-256 |
be169da6b46a2adde8102131b4397f2f21f0f21058a7497b3428d2c2afa05bef
|