main200 发表于 2024-6-16 22:18

逍遥大神M3U8批量下载器 V1.4.8 http方式调用之Python的实现

不知道是不是我对m3u8理解不够,某些网站爬取的m3u8长期有效,某些网站只有一两个小时有效期,针对这种有效期短的网站,又想爬取它全部视频
逍遥大神的软件说明
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1631141&highlight=m3u8%C5%FA%C1%BF%CF%C2%D4%D8
python调用
https://www.52pojie.cn/thread-1216587-1-1.html

import base64
import requests
import time


def postToCuteM3U8(title, m3u8Url, HEAD='', OUT='', NFAIL=0, CLOSE=0, CHECK=0, KEY='', CACHE=0, NKEY=0, NETCHECK=0, NTSCHECK=0, IDOWN=0, NCONCAT=0, AGENT='', FORMAT='mp4', DECMETHOD='cbc', **kwargs):
    print('调用下载器')
    data = {
      '#HEAD': HEAD,
      '#OUT': OUT,
      '#NFAIL': NFAIL,
      '#CLOSE': CLOSE,
      '#CHECK': CHECK,
      '#KEY': KEY,
      '#CACHE': CACHE,
      '#NKEY': NKEY,
      '#NETCHECK': NETCHECK,
      '#NTSCHECK': NTSCHECK,
      '#IDOWN': IDOWN,
      '#NCONCAT': NCONCAT,
      '#AGENT': AGENT
    }
    datastr = ''
    for key in data.keys():
      # print(key,data)
      if (data):
            datastr = datastr + str(key) + ',' + str(data) + '\r\n'
    datastr = datastr + title + ',' + m3u8Url# datastr是配置内容
    postdata = {
      "data": datastr,
      "type": '2'# 模式2
    }
    try:
      rr = requests.post('http://127.0.0.1:8787/info')
      if (rr.json()['failTotal'] > 20):
            print("超过20条异常数据时终止运行")
            return 0
      elif (rr.json()['queueTotalReal'] < 70):
            r = requests.post('http://127.0.0.1:8787/', data=postdata)
            if (r.json()['message'] == 'success'):
                print('推送成功')
            else:
                print('推送失败')
            return 1
      else:
            print("已有70条数据执行休息半小时")
            time.sleep(30 * 60)
            r = requests.post('http://127.0.0.1:8787/', data=postdata)
            if (r.json()['message'] == 'success'):
                print('推送成功')
            else:
                print('推送失败')
            return 2
    except:
      print('没有打开M3U8下载器吧?')
      return 0


水平差大家凑合着用,根据返回状态码再做处理
对于这种有效期短的m3u8,有大神指点下更好的解决方法吗

逍遥一仙 发表于 2024-6-17 07:36

有效期短的建议写个服务器,把必要参数放到链接里,下载器请求你的服务器后,根据参数实时解析,重定向到实际链接

逍遥一仙 发表于 2024-6-17 10:49

main200 发表于 2024-6-17 10:19
大佬,这种短效m3u8链接是我没获取到它真实的m3u8地址,还是说它本来就是这样的,是否和key解密有关系

本身就是这样的,分片和m3u8索引都可以设置时效(时效的参数可能在链接的参数里,也可能是链接本身,主要看服务端对链接的处理逻辑)。如果分片会超时失效且可以接受丢弃这个分片时,可以勾选忽略失败

wkfy 发表于 2024-6-17 06:05

以前一直用逍遥大佬的下载器,直到遇到和楼主一样的情况,短效m3u8而且集数很多,又是国外的,只要一片TS卡住就得等很久。然后一直下不完,要反复重新获取链接。论坛另一个大佬写的批量下载器适合这种短期的。因为多线程多任务。速度提升N倍。也支持批量提交,再无此困扰,只是需要加工一下源码,因为不支持多目录。https://www.52pojie.cn/forum.php?mod=viewthread&tid=1817980&highlight=m3u8

yb66vs 发表于 2024-6-17 07:11

神操作,,厉害!

angelabebe 发表于 2024-6-17 09:08

谢谢分享

流浪情人 发表于 2024-6-17 09:30

就说有时候有的M3U8下着下着没有断了

sunhai1979 发表于 2024-6-17 09:33

好代码。辛苦!!

main200 发表于 2024-6-17 09:35

流浪情人 发表于 2024-6-17 09:30
就说有时候有的M3U8下着下着没有断了

对,这是什么情况,没有key解密吗

360204878 发表于 2024-6-17 09:37

感谢分享

流浪情人 发表于 2024-6-17 09:40

main200 发表于 2024-6-17 09:35
对,这是什么情况,没有key解密吗

我是小白也不知道{:1_937:}
页: [1] 2 3
查看完整版本: 逍遥大神M3U8批量下载器 V1.4.8 http方式调用之Python的实现