← Back to Skills Marketplace
jyt2018

m3u8 video downloader

by unixsam · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
98
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install jyt-m3u8-downloader
Description
This skill should be used when the user wants to download videos from M3U8 streaming URLs. It handles parsing M3U8 playlists (including nested multi-bitrate...
README (SKILL.md)

\r \r

M3U8 Video Downloader\r

\r

Overview\r

\r Download videos from M3U8/HLS streaming URLs by parsing playlists, downloading TS segments with multi-threading,\r handling encrypted streams (AES-128), and merging all segments into a single MP4 file using ffmpeg.\r \r

Prerequisites\r

\r Before executing, ensure the following are available:\r \r

  1. Python 3 with requests library installed: pip install requests\r
  2. ffmpeg installed and added to system PATH (required for merging TS segments into MP4)\r
  3. Network access to the M3U8 URL\r \r

Workflow\r

\r

1. Understand the User's Request\r

\r Extract from the user:\r

  • M3U8 URL: The streaming playlist URL (required)\r
  • Output filename: Name for the saved MP4 file (required, without extension)\r
  • Base64 key (optional): For encrypted streams that require a manually provided AES-128 decryption key\r \r

2. Prepare the Environment\r

\r

  • Copy scripts/M3u8Download.py to the working directory\r
  • Ensure requests is installed in the Python environment\r
  • Verify ffmpeg is accessible from the command line: ffmpeg -version\r \r

3. Execute the Download\r

\r Use the M3u8Download class from scripts/M3u8Download.py:\r \r

from M3u8Download import M3u8Download\r
\r
M3u8Download(\r
    m3u8_url="\x3Cuser_provided_url>",\r
    file_path="\x3Coutput_name>",        # Without extension; TS temp dir and final MP4 use this name\r
    max_workers=64,                   # Concurrent download threads\r
    num_retries=10,                   # Retry count on download failure\r
    base64_key=None                   # Optional: base64-encoded AES-128 key for encrypted streams\r
)\r
```\r
\r
#### Key Parameters\r
\r
| Parameter | Description |\r
|-----------|-------------|\r
| `m3u8_url` | M3U8 playlist URL or local file path |\r
| `file_path` | Base name for temp folder and output MP4 file |\r
| `max_workers` | Max concurrent download threads (default: 64) |\r
| `num_retries` | Download retry count on failure (default: 10) |\r
| `base64_key` | Optional base64-encoded decryption key for AES-128 encrypted streams |\r
\r
### 4. What Happens During Download\r
\r
1. **Parse M3U8**: Fetches and parses the M3U8 playlist. If it is a master playlist (contains `EXT-X-STREAM-INF`), automatically follows the redirect to the media playlist.\r
2. **Download key**: If the playlist specifies `EXT-X-KEY`, the encryption key is downloaded (or uses the provided `base64_key`).\r
3. **Download segments**: All TS segments are downloaded concurrently with progress bar display.\r
4. **Merge**: ffmpeg merges all TS segments into a single MP4 file.\r
5. **Cleanup**: After verifying the MP4 file size matches the total TS size (within 10% tolerance), temporary TS files, key file, and M3U8 file are deleted automatically.\r
\r
### 5. Handle Errors\r
\r
- If ffmpeg is not found, inform the user to install it and add to PATH.\r
- If download fails due to network issues, the retry mechanism will attempt `num_retries` times.\r
- If the MP4 output size does not match the TS total size, temporary files are preserved for manual inspection.\r
- For encrypted streams without a provided key, the script attempts auto-download; if that fails, ask the user for the `base64_key`.\r
\r
## Scripts\r
\r
### `scripts/M3u8Download.py`\r
\r
Main download script containing the `M3u8Download` class. This is the primary script to use for all M3U8 download operations.\r
\r
## Notes\r
\r
- The script supports both URL-based and local file-based M3U8 inputs.\r
- Chinese filenames and paths are supported.\r
- On Windows, `os.startfile()` is used to open the output directory after download completes.\r
- Do NOT modify the source code in `scripts/` - use it as-is.\r
Usage Guidance
This skill appears to do what it claims: download M3U8 playlists, fetch TS segments and keys, and merge them with ffmpeg. Before installing/run: 1) Review and run the script in an isolated environment (virtualenv or container) since it will download and write arbitrary remote content to disk. 2) Note the script disables TLS verification (requests verify=False) and suppresses warnings — this accepts invalid certs and could allow man-in-the-middle interceptions of downloads; only use with trusted sources or modify to enable verification. 3) The default max_workers is high (64) and could stress CPU/network; reduce if needed. 4) Ensure ffmpeg is installed and you comply with copyright/terms when downloading content. 5) The requirements.txt includes pyav and m3u8 even though SKILL.md doesn't mention them — install only the packages you need. If you need higher assurance, request the full untruncated script for a line-by-line audit and run it in a sandbox before use.
Capability Analysis
Type: OpenClaw Skill Name: jyt-m3u8-downloader Version: 1.0.0 The skill bundle provides a functional M3U8 video downloader but contains security vulnerabilities and risky behaviors. Specifically, `scripts/M3u8Download.py` explicitly disables SSL certificate verification (`verify=False`) for all network requests and suppresses security warnings, exposing the agent to Man-in-the-Middle (MitM) attacks. The script also performs high-risk operations including executing external commands via `subprocess.run` (to call ffmpeg) and deleting files/directories based on user-provided input. Additionally, the use of `os.startfile` at the end of the script may cause unexpected GUI behavior on the host system.
Capability Assessment
Purpose & Capability
The name/description match the included Python script and workflow. The requirements.txt lists pyav and m3u8 even though the SKILL.md only mentions requests and ffmpeg; this is a minor mismatch but not evidence of malicious intent. Overall the requested actions (HTTP fetches of m3u8/TS/key files and ffmpeg merging) are coherent with the stated purpose.
Instruction Scope
SKILL.md instructs copying/running the provided script, providing an M3U8 URL and optional decryption key, and ensuring ffmpeg and requests are available. The runtime instructions and the script confine themselves to downloading playlist/segments/keys, writing local temporary files, and calling ffmpeg to merge — they do not instruct reading unrelated system files or sending data to third-party endpoints beyond the media URLs.
Install Mechanism
There is no automated install step; this is effectively an instruction-plus-script bundle. No remote install URLs or archive extractions are present. The included requirements.txt refers to public Python packages (pyav, m3u8) which is reasonable for media handling.
Credentials
The skill does not request environment variables, credentials, or config paths. All network activity is limited to the user-supplied M3U8/TS/key URLs, which is proportional to a downloader's purpose.
Persistence & Privilege
The skill is not always-enabled and does not request elevated or persistent platform privileges. It writes temporary files only for the download/merge workflow and cleans them up according to the documented behavior.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install jyt-m3u8-downloader
  3. After installation, invoke the skill by name or use /jyt-m3u8-downloader
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
multi-thread download
Metadata
Slug jyt-m3u8-downloader
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is m3u8 video downloader?

This skill should be used when the user wants to download videos from M3U8 streaming URLs. It handles parsing M3U8 playlists (including nested multi-bitrate... It is an AI Agent Skill for Claude Code / OpenClaw, with 98 downloads so far.

How do I install m3u8 video downloader?

Run "/install jyt-m3u8-downloader" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is m3u8 video downloader free?

Yes, m3u8 video downloader is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does m3u8 video downloader support?

m3u8 video downloader is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created m3u8 video downloader?

It is built and maintained by unixsam (@jyt2018); the current version is v1.0.0.

💬 Comments