python多线程爬取m3u8视频(包含AES解密)

python爬取m3u8视频(包含AES解密)

前情提要

部分代码摘录于某位大哥(写代码的时候收藏书签了的打算写博客的时候带上链接的,无奈手贱删除了chrome用户,所有的书签也没了,找到再补上),在此基础上添加了多线程,日志,以及防止重复下载文件的代码,弃用“copy \b”合并视频,发现新大陆“ffmpeg”
敲黑板一次:有时拿到的m3u8地址并不是真正的m3u8地址,它包含了真实的m3u8地址,如下图
在这里插入图片描述
敲黑板两次:m3u8中给出的ts文件有的是经过加密的,所以需要解密,如下图:
在这里插入图片描述
敲黑板三次对于最终下载下来的一堆ts文件,要合并,之前找了一堆合并软件发现都有各种各样的问题。其实系统自带的“copy \b”命令很好用,但是无奈这个命令对合并的文件命名要求有点麻烦。比如我有文件**000.ts,**001.ts,**002.ts,…,**999.ts,**1000.ts等,当文件合并到999的时候就停下了。当然自己下载文件的时候改一下文件的命名就可以了。但是自己后来发现另一个牛b的工具ffmepg。

贴代码

# -*- coding:utf-8 -*-
import os
import sys
import requests
import datetime
import threading
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
import logging

reload(sys)
sys.setdefaultencoding('utf-8')

logfile = 'trans.log'
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.DEBUG)

handler = logging.FileHandler(logfile, mode='a')
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
handler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)
logger.addHandler(handler)
logger.addHandler(console)


def download(url, num_thread=4):
    """
    :param url: m3u8文件url
    :param num_thread: 启动线程数
    :return:
    """
    download_path = os.getcwd() + "\\download"
    if not os.path.exists(download_path):
        os.mkdir
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值