Skip to main content

一个用于从各种来源获取流数据的Python库。

Project description

stream_fetch_dl

轻量、高效、稳定的 Python 流式下载库,专注普通文件与 M3U8 视频下载。

简介

stream_fetch_dl 是一个极简实用的文件下载工具包,提供两种核心下载能力:

  • 通用文件流式下载(支持所有直链格式)
  • M3U8/HLS 视频分片下载、并发限流与 AES-128 解密

API 简洁、资源占用低,可安全嵌入 GUI 或后台程序,不卡顿、易控制。

特性

  • 单文件流式下载
  • M3U8 多 TS 并发下载与合并
  • AES-128 解密支持
  • 并发限流(Semaphore)
  • 任务可停止、可控制
  • 轻量无依赖,结构干净

安装

pip install stream_fetch_dl

快速上手

请确保已安装 stream_fetch_dl 库 以下示例代码基于 Python 3.x 如需在 Qt 环境中使用,请参考 Qt 线程池下载示例 如需在命令行环境中使用,请参考命令行下载示例

同步调用

# coding: utf-8
from time import sleep

from stream_fetch_dl.task import StreamTask, TaskResult


def callback(result: TaskResult):
    print(result.message, end="\r\n", flush=True)


params = {
    # 测试URL,随时可能失效
    "url": 'https://v16.toutiao50.com/e8fb833110916841a0dd460146f80fc4/69e863a1/video/tos/alisg/tos-alisg-v-90231e-sg/oEXeKB2bEEQfq7QU3B1isqq48ED1gwiKpbBRkv/',
    "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    },
    "save_path": "./downloads",
    "timeout": 10,
    "callback": callback
}

task = StreamTask(params)
task.run()

sleep(10)
task.stop()

单线程调用

# coding: utf-8
from time import sleep

from stream_fetch_dl.task import TaskResult
from stream_fetch_dl.threads import StreamThread


def callback(result: TaskResult):
    print(result.message, end="\r\n", flush=True)


params = {
    # 测试URL,随时可能失效
    "url": 'https://v16.toutiao50.com/ca050714cd76ceb56f5718d376d99b27/69e98e29/video/tos/alisg/tos-alisg-v-90231e-sg/oQOBfGsfbUkpFBE4IwCI173DgEpUQzm7Zz1JIr/',
    "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    },
    "save_path": "./downloads",
    "timeout": 10,
    "callback": callback
}

task = StreamThread(params)
task.start()

sleep(10)
task.stop()

线程池下载

# coding: utf-8
from time import sleep

from stream_fetch_dl.threads import ThreadPoolManager
from stream_fetch_dl.task import TaskResult


def callback(result: TaskResult):
    print(result.message, end="\r\n", flush=True)


pool = ThreadPoolManager(5)

m3u8_params = {
    "id": "52091_553fc92e",
    "url": "https://vip.ffzy-plays.com/20260406/52091_553fc92e/index.m3u8",
    "name": "茉莉花酱的好感度正在崩坏-第1集",
    "suffix": ".mp4",
    "save_path": "./downloads",
    "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    },
    "callback": callback
}
pool.add_m3u8(m3u8_params, True)
sleep(10)
worker = pool.task(m3u8_params["id"])
if worker:
    worker.stop()

Qt线程池下载

# coding: utf-8
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QThreadPool, QTimer
import sys
from stream_fetch_dl.qt import QThreadPoolManager
from stream_fetch_dl.task import TaskResult


def callback(result: TaskResult):
    print(result.message, end="\r\n", flush=True)


app = QApplication(sys.argv)
pool = QThreadPoolManager()

m3u8_params = {
    "id": "52091_553fc92e",
    "url": "https://vip.ffzy-plays.com/20260406/52091_553fc92e/index.m3u8",
    "name": "茉莉花酱的好感度正在崩坏-第1集",
    "suffix": ".mp4",
    "save_path": "./downloads",
    "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    },
    "callback": callback
}
pool.add_m3u8(m3u8_params, True)


def stop_worker():
    worker = pool.task(m3u8_params["id"])
    worker.stop()


QTimer.singleShot(10000, stop_worker)
sys.exit(app.exec())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stream_fetch_dl-0.1.4.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stream_fetch_dl-0.1.4-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file stream_fetch_dl-0.1.4.tar.gz.

File metadata

  • Download URL: stream_fetch_dl-0.1.4.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for stream_fetch_dl-0.1.4.tar.gz
Algorithm Hash digest
SHA256 8d59ab833af638edecbeda0fc59c70d208838bbaac388beb345ca3bbd9f061cc
MD5 545b93ad7c76bdacd26468370fc00b10
BLAKE2b-256 2f8485f6995745b15c4e0abb7cf466bf073898a313a4ecebc32d525c0c50db62

See more details on using hashes here.

File details

Details for the file stream_fetch_dl-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for stream_fetch_dl-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 380e19fd89d53dbf0c328a3e726b3991ca7c8955951ae0ff7c437197cef21383
MD5 efc7fc813eb2e6dd792d89a09a140ab9
BLAKE2b-256 317da6cc1cd2f5afe556638988cb86fb50e90458e7dcb235a7e3c532db2d4ea1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page