吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 741|回复: 8
收起左侧

[学习记录] 学习记录以免备忘

[复制链接]
liwj 发表于 2026-9-22 14:22
本帖最后由 cattie 于 2026-9-22 14:44 编辑
import re
import json
from pprint import pprint
from DrissionPage import ChromiumOptions,ChromiumPage
import subprocess
import time

def download_m3u8(url: str, output: str, concurrent: int = 32):
    cmd = [
        "yt-dlp",
        url,
        "--concurrent-fragments", str(concurrent),
        "-o", output,
        # 你原来能跑通的其他参数照抄就行
        # "--add-header", "Referer:xxx",
        # "--cookies", "cookies.txt",
    ]
    print("执行:", " ".join(cmd))

    result = subprocess.run(
        cmd,
        capture_output=False,   # 实时看进度,和终端一样
        text=True,
    )
    if result.returncode != 0:
        raise RuntimeError(f"yt-dlp 退出码 {result.returncode}")

def download():
    url = 'https://appn1j7j0hh4155.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_pro/course_31MGlJyQ3IftMumeGaJoGDGCUBA'
    dp = ChromiumPage()
    dp.listen.start('resource_catalog_list.get/1.0.0')
    dp.get(url)

    charpter_ids = []
    packets = []

    start = time.time()

    # 持续收集,直到超时或你觉得够了
    while time.time() - start < 15:
        try:
            resp = dp.listen.wait(timeout=2)
            if resp:
                packets.append(resp)
                print(f"捕获到第 {len(packets)} 个 1.0.0 请求")
        except:
            break

    # 取最后一个
    if packets:
        last_resp = packets[-1]
        print("最后一个 1.0.0 请求:")
        print(last_resp.url)
        print(last_resp.response.body)
        body = last_resp.response.body
        # 小鹅通常在这里
        for item in body.get('data', {}).get('list', []):
            cid = item.get('chapter_id')
            if cid:
                charpter_ids.append(cid)
    else:
        print("没有捕获到 1.0.0 请求")

    print(charpter_ids)
    v_ids = [x for x in charpter_ids if re.match(r'^v_', x)]
    # print(v_ids)
    url_s = []
    qian = "https://appn1j7j0hh4155.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/video/"
    for lhou in v_ids:
        quan = qian + lhou
        if quan:
            url_s.append(quan)
            print('opening:', quan)
            dp.listen.start('m3u8')
            dp.get(quan)

            try:
                pkt = dp.listen.wait(timeout=10)
                # header = pkt.response.headers
                m3u8_url = pkt.url
                print('m3u8 url =>', m3u8_url)

                #使用控制台命令下载
                download_m3u8(
                    m3u8_url,
                    lhou+".mp4",
                    concurrent=32,
                )
            except Exception as e:
                print('timeout or error:', e)
            dp.listen.stop()

if __name__ == '__main__':
    download()

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

萝卜就是甜 发表于 2026-9-22 14:33
学习了,学习了!!!!
 楼主| liwj 发表于 2026-9-22 14:41
本帖最后由 cattie 于 2026-9-22 14:45 编辑
import json
from pprint import pprint
from DrissionPage import ChromiumOptions,ChromiumPage
path = "/opt/browser360/browser360"
ChromiumOptions().set_browser_path(path).save()
dp = ChromiumPage() #实例化流浪器对象
dp.listen.start('m3u8')#监听数据接口 因为发现接口中有现成的m3u8地址
dp.get('')#访问回放网站
resp = dp.listen.wait(timeout=15)#等待数据包加载
dork 发表于 2026-9-22 14:49
楼主有没有测试代码的通用性?这标题和内容隐藏的也忒深了,好东西
慕禾Yeah~ 发表于 2026-9-22 15:34
虽然是看不懂的小白,但是也顶一下你
 楼主| liwj 发表于 2026-9-22 16:19
dork 发表于 2026-9-22 14:49
楼主有没有测试代码的通用性?这标题和内容隐藏的也忒深了,好东西

换了好几个账户,尝试通过
 楼主| liwj 发表于 2026-9-22 16:20
慕禾Yeah~ 发表于 2026-9-22 15:34
虽然是看不懂的小白,但是也顶一下你

其实就是下载自己的视频
loveyao6688 发表于 2026-9-22 20:50
可以可以
TWOTO 发表于 2026-9-22 21:00
不错不错,支持
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-11-11 09:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表