import requests
import re
import os
from concurrent.futures import ThreadPoolExecutor
from Crypto.Cipher import AES
from bs4 import BeautifulSoup
"""
专门下载 《极速资源》 的电影
1.首先进入要下载的某个电影的主页,将网址输入程序
2.运行get_name方法,获取电影播放地址(非m3u8地址),key播放地址,以及电影名字
3.运行get_m3u8,最终获取到的是一个装有ts地址的列表
4.运行thread_download,开始多线程下载ts文件,在调用download方法时,可能会得到一个空文件
5.运行thread_decode,开始多线程解码ts文件,如果ts文件本身是空,那么解码会失败,但不会报错
6.运行check_ts,检查是不是全部解码完成,通过os.path.isfile('文件路径')反馈会一个新的列表self.new_lst,
接收的是解码未成功的ts文件名称是self.lst列表中的索引,如果服务器断限制了你的访问,这地方会很有意思,
总之,只要服务器端不是完全切断网络连接,就一定能全部解码完成。
7.运行marge,大功告成.
后记:
class实在是太好玩了,比函数好用多了
如果电脑性能好的话,可以修改ThreadPoolExecutor(50)里面的数值,数值越大,速度越快
"""
class Application:
def __init__(self, url):
self.url = url
self.new_lst = [] # 接收解码失败的文件
self.i = 0 # 统计download函数被重复调用的次数
self.j = 0 # 统计经过多少级解码才完成全部解码
self.IV = b'0000000000000000' # 源文件32位,更改成16位
self.headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0'
}
def get_name(self):
resp = requests.get(self.url, headers=self.headers)
resp.close()
# print(resp.text)
bs = BeautifulSoup(resp.text, 'html.parser')
self.url = bs.find('span', id='1_1t').text.split('$')[-1].strip() # 这个地方必须要加strip()
self.movie_name = bs.find('div', class_='vod-img').find('img').get('alt') # 太好玩了,可以连续用find
self.key_url = self.url + '/enc.key'
# print(self.url)
# print(self.key_url)
def get_m3u8(self
python递归下载极速资源的电影
于 2025-01-28 00:33:41 首次发布