吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5019|回复: 23
收起左侧

[Python 转载] 可批量爬取某影视工厂 m3u8 文件

[复制链接]
szsnk144864 发表于 2022-8-24 12:37
本帖最后由 szsnk144864 于 2022-8-25 20:45 编辑

昨天在52里寻求了一下了各位大佬的帮助,终于解决了问题(帖子地址:https://www.52pojie.cn/thread-1679009-1-1.html),十分感谢各位大佬的帮助。

虽然各位大佬给了我很多帮助,让我把代码弄出来了,有些视频可以下载,有些不行,但是我的理解能力有限,写的不怎么很好,还请各位大佬勿喷,,

此代码只获取m3u8地址,并不下载视频,因为多线程和合并我不会写,,,我的思路是把m3u8文件弄下来,然后根据通过N_m3u8DL下载器批量下载。

但是在下载的过程中发现,不知道是不是下载器线程太多,导致下载几集之后,下载器就显示m3u8文件失效了,下载失败,只有重新获取m3u8文件才行,也挺麻烦的,,,,,,



[Python] 纯文本查看 复制代码
import requests
import re
import json
import base64

headers = {
    # 'Referer': 'https://www.ysgc.vip/vodplay/17287-2-1.html',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}


# 获取视频的名称和视频的 m3u8 文件
def get_m3u8():
    # 用来存储 m3u8 地址
    video_path = 'd://desktop/数码宝贝' + '.txt'
    with open(video_path, 'w', encoding='utf-8') as fp:
        fp.write(' ')
    fp.close()
    qq = open(video_path, 'w', encoding='utf-8')

    # 用来存储所有集数的播放链接
    play_url = []

    session = requests.Session()
    # 通过循环来获取每个播放页面,55 指的是播放集数 ,vodplay  后面的 17287-2 是播放的位置,修改也就是修改这里
    for s in range(31, 40):
        lang_url = 'https://www.ysgc.vip' + f'/vodplay/17287-2-{s}.html'
        play_url.append(lang_url)

    # 通过循环来获取每一集的 m3u8 文件
    for i in play_url:
        # 获取视频名称
        video_name = (re.findall(r'<title>(.*?)免.*?</title>', (session.get(i).text))[0])
        # 获取 var play = {} 数据
        get_var_play = json.loads(re.findall(r'<script type="text/javascript">var player_aaaa=(.*?)</script>', (session.get(i).text))[0])
        # 获取视频真实播放链接,并直接获取该地址的源代码,这里的dplay ,要根据解析平台需要自己修改,例如某讯视频就得用qq
        video_url = session.get(f'https://www.ysgc.vip/static/player/dplayer.php?url={get_var_play["url"]}').text
        # 获取m3u8的加密地址
        m3u8_url = re.findall(r"var.*?urls.*?=.*?'(.*?)';", video_url)[0]
        # 解密地址,并通过切割获取到m3u8链接,最后删除后面的9位数,得到最终的结果
        m3u8_true_url = ('http:' + (((str(base64.b64decode(m3u8_url.encode()))).split(' ')[0]).split('https:')[1]))[:-9]

        # 写入文件
        qq.write(str(video_name) + ',' + str(m3u8_true_url) + '\n')
        print(str(video_name) + '   >>>>>>>>>>> 写入完成')

    session.close()
    qq.close()


get_m3u8()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yjn866y + 1 + 1 热心回复!

查看全部评分

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

a434024 发表于 2022-8-25 14:37
szsnk144864 发表于 2022-8-24 16:46
这个还真没遇到过,会不会是音频跟视频是分开的,只下载了音频?

这个就不清楚了 因为是同一个网站 用同一样的代码下载下来的  有些没问题 有些就会出现这样的情况
 楼主| szsnk144864 发表于 2022-8-24 16:46
a434024 发表于 2022-8-24 16:44
不知道楼主有没有遇到过下载的m3u8合并mp4后只有声音 没有画面的情况

这个还真没遇到过,会不会是音频跟视频是分开的,只下载了音频?
怜渠客 发表于 2022-8-24 12:48
m3u8失效,有一种可能是m3u8是短时播放链接,往往是实时更新的
 楼主| szsnk144864 发表于 2022-8-24 12:56
lianquke 发表于 2022-8-24 12:48
m3u8失效,有一种可能是m3u8是短时播放链接,往往是实时更新的

原来如此
windsecret 发表于 2022-8-24 13:29
牛啊大佬
 楼主| szsnk144864 发表于 2022-8-24 13:36

还有bug,有一些视频解密之后的m3u8文件不能用,,,,
HLT 发表于 2022-8-24 14:39
他们设置m3u8缓存有时效的,拿到也没多大用处
feichu 发表于 2022-8-24 15:48
有没有一种可能 网站限制了。一个ip只可以获取多少 或者规定时间内获的多久封ip?  多搜集一点cookie 估计能改善。
a434024 发表于 2022-8-24 16:44
不知道楼主有没有遇到过下载的m3u8合并mp4后只有声音 没有画面的情况
 楼主| szsnk144864 发表于 2022-8-24 16:47
feichu 发表于 2022-8-24 15:48
有没有一种可能 网站限制了。一个ip只可以获取多少 或者规定时间内获的多久封ip?  多搜集一点cookie 估计 ...

有可能,试试看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 03:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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