Skip to main content

phlsM3U8_downner

Async HLS/m3u8 downloader with AES-128 decryption and ffmpeg merging. 支持主播放列表自动选择清晰度、切片并发下载、AES-128 解密、ffmpeg 无损合并.

Install

pip install phlsM3U8_downner

Requires ffmpeg on system PATH: Windows winget install ffmpeg · macOS brew install ffmpeg · Linux sudo apt install ffmpeg

Usage

from phlsm3u8down import DownAndMerge

results = DownAndMerge(UrlAndName={"https://example.com/v.m3u8" : "1.mp4"})
r = results["1.mp4"]
print(r.segments_succeeded, "/", r.segments_total)
print(r.output_path, r.file_size_bytes)

More Usage

- Config:
    in config_set 它含有很多配置项,见下:
————————————————                    ————————————————————————————
concurrency: int = 20               # 同时下载几个切片
limit : int = 20                    #最大请求数量
timeout: float = 30.0               # 单个切片的超时秒数
retries: int = 3                    # 单个切片失败重试次数
retry_backoff: float = 1.5          # 重试间隔倍数:1s → 1.5s → 2.25s(指数退避)
stop_after_delay : float | int =15  #设置整个重试过程的最大耗时
verify_ssl: bool = False            # 是否校验 SSL(下载站证书经常有问题,默认关)
keep_segments: bool = False         # 合并成功后是否保留 ts 文件(False=清理)
breakpoint_request : bool =False    #加载上次下载未完成的文件重下(True为重下)
quiet : bool=False                  #安静模式
method : str = 'get'                #请求方式
key_method : str = 'get'           #请求方式
data_path : str|Path = str(Path.cwd() /'hls_downloads') #user_data的位置(存放ts/m4s/mp4媒体文件和data.json)
Wait_Merge : bool =True          #等下载全部成功再合并(false是不等)
Rich : bool =True                   #显示进度条(默认是)
——————————————————                      ————————————————————————
    -config_set注意事项:
        -如果你想使用breakpoint_request,这需要data,json中失败的片段(failed_segments/key_errors)不为[],否则什么都不会发生
        -等你下载了一个文件后会自动刷新,需要注意的是,**phlsM3U8_downner会覆盖原有内容**
        -quiet 这个设置如果为True,那么将会少很多打印,甚至连进度条都不会输出
        -key_method method,method是为普通切片(segment)文件请求的模式,而key_method是专门为key请求的模式,在某一些场景中他很有用,你可以使他们全部为**'get'**
        -Wait_Merge 如果你设置了True,那么他不会去管data.json中失败的片段反而会去将成功的片段合并,这可能会使合并后的视频缺斤少两

- resolver:
    -defined_decode中 **defined_method**是自定义加密模式但是可能phlsM3U8_downner不支持(目前只支持AES-128加密,但是这够了)

    -你可以使用**defined_func**参数来存放你的函数**{key_url:函数名称}**,phlsM3U8_downner会用你的函数来解密

    -如果获取的key有加密,你可以使用encrypto_key**{key_url:函数名称}**来解密你的key

    -如果phlsM3U8_downner获取不到key,例如DRM中,你可以使用**defined_key**来放你获取到的key(bytes),如果你放了**defined_key**,那请你务必需将**defined_iv**也补充上去**{key_url:函数名称}**,虽然phlsM3U8_downner内置了采用序列号的方式来替换iv但是这是一个保险

    (resolver.defined_method Method resolver.defined_func func resolver.encrypto_key encrypto_key resolver.defined_iv iv resolver.defined_key key)

Notes

  • 不要同时对多个下载使用同一个输出文件名(后者会覆盖前者)
  • 多个主播放列表同时下载时需手动选清晰度,建议逐个下载
  • 配置项见 config_set.config(IDE 悬浮即可查看全部字段)

0.1.0 first release

Metadata

Release files for phlsM3U8-downner 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for phlsM3U8-downner 0.1.0
File Size Uploaded
phlsm3u8_downner-0.1.0.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for phlsM3U8-downner 0.1.0
File Interpreter ABI Platform
phlsm3u8_downner-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 42.0 kB

Release files / phlsm3u8_downner-0.1.0.tar.gz

Download URL phlsm3u8_downner-0.1.0.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a223fccac7955de1155503241948be42679b6d72aeffd30e01b05a0015a3bc5e
BLAKE2b-256 checksum
How to use checksums
fe143f7a01c7e47f0689ad86d34979319b806876587453323110dcafe686c490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / phlsm3u8_downner-0.1.0-py3-none-any.whl

Download URL phlsm3u8_downner-0.1.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fa8cf61f40abf58e2bf6a9e47fb55e96cecea4d7a169f26c23d85aadf88d768
BLAKE2b-256 checksum
How to use checksums
8754e5b5b6ff5eb324de13ba4962868f91be6f9faa85616a271788b911dfee2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page