在线播放的电影大多数都是可以下载的,因为懒的找资源,写了一个下载TS文件的工具

可以用pyinstaller -F 文件名.py来生成可独立运行的文件。
代码如下:

import time,asyncio,aiohttp,re,os,requests,threading
from alive_progress import alive_barclass download_video():def __init__(self,dir_name):self.dir_name = dir_nameself.headers_list = []while True:self.headers = input('\n请输入headers的信息(输入“ok”结束输入):')self.headers_list.append(self.headers)if 'ok' == self.headers:breakself.url = input('\n请输入m3u8文件的地址(必须):')# self.ts_url = input('\n请输入ts文件的前半段(必须):')self.key_url = input('\n请输入key文件的地址(可选):')# 字符串转headersdef str_chans_headers(self):global headersheaders = {}header = self.headers_list# print(header)for i in header:if 'origin'in i:dict_h = {'origin':i.replace('origin:','').strip()}headers.update(dict_h)elif 'referer'in i:dict_h = {'referer':i.replace('referer:','').strip()}headers.update(dict_h)elif i =='ok':continueelif i.strip() == '':continue                elif ':'in i:dict_h = {i.split(':')[0]:i.split(':')[-1].strip()}headers.update(dict_h)else:continuereturn headers# print(headers)# 获取并保存ts文件列表def get_ts_list(self,url,dir_name):name = dir_name.split('\\')[-1]ts_list = []ts_html = requests.get(url=url,headers=headers)ts_html.encoding = ts_html.apparent_encodingts_all = re.findall(r'(.*?).ts',ts_html.text)for i in ts_all:if '/'in i:ts_list.append(i.strip().split('/')[-1])else:ts_list.append(i)# 保存一份顺序列表和一份m3u8源文件if not dir_name+'.txt' in os.listdir(dir_name):with open(dir_name+'\\'+name+'ts列表.txt','w')as f1,open(dir_name+'\\'+name+'.m3u8','wb')as f2:for i in ts_list:f1.write(i+'\n')f2.write(ts_html.content)return ts_list# 下载key文件def get_key_file(self,url,dir_name):a = requests.get(url=url,headers=headers)with open(dir_name+'\\'+'key.key','wb')as f:f.write(a.content)# 下载ts文件,创建一个异步async def get_ts_data(self,ts_url,dir_name):# 创建一个异步,意思是指定s变量是aiohttp.ClientSession(),客户端会话async with aiohttp.ClientSession()as s:# 创建一个异步async with await s.get(url=ts_url,headers=headers)as response:# response.read()获取的是二进制数据,await是指可等待的,也就是可以挂起的ts_data = await response.read()ts_name = ts_url.split('/')[-1]# 保存数据with open(dir_name+'\\'+ts_name,'wb')as f:f.write(ts_data)            # 开始任务函数def start_task(self):headers = self.str_chans_headers()print(headers)dir_name = self.dir_nameprint('下载的文件保存到',dir_name,'\n')# 文件夹是否存在,如果没有就创建一个if not os.path.exists(dir_name):os.mkdir(dir_name)passurl = self.urlkey_url = self.key_url# 判断有没有key文件的地址if 'http' in key_url:self.get_key_file(url=key_url,dir_name=dir_name)ts_url = key_url.replace('key.key','')else:ts_url = re.sub(r'/([0-9A-z]*?)\.m3u8,'',url')ts_list = self.get_ts_list(url=url,dir_name=dir_name)while True:tasks = []# 获取当前文件夹里分别有哪些文件current_file = os.listdir(dir_name)print('\n')# 这里应用了一个进度条模块,不是它鸡肋,是我还不懂怎么用,要涉及到多线程with alive_bar(len(ts_list))as bar:# 创建事件循环loop = asyncio.get_event_loop()for i in ts_list:# 判断这个文件是不是已经下载好了,如果下载好了就跳过,以免重复下载浪费时间if i+'.ts' in current_file:bar()continuec = self.get_ts_data(ts_url=ts_url+i+'.ts',dir_name=dir_name)task = asyncio.ensure_future(c)# 把所有任务集合起来tasks.append(task)try:# 把所有任务放进事件循环里,等到所有任务都运行完毕就退出loop.run_until_complete(asyncio.wait(tasks))except:print('10秒后继续下载\n如果下载已完成,请直接关闭dos窗口\n⚠请不要连续Ctrl+C,否则会直接退出⚠')time.sleep(10)if __name__ == '__main__':print('***********************************************.*** 电影下载器DOS版V1.2 ***.***********************************************\n','\n')while True:dir_name = os.getcwd()+'\\'+input('\n请输入电影名称(必须,否则文件会乱)\n如果不满意输入的内容,可以按ctrl+c退出,重新打开程序:')if dir_name.strip() == str(os.getcwd()+'\\'):print('请输入电影名称(文件夹的名称)')else:breakdownload_video(dir_name=dir_name).start_task()

当然,这个版本要求你至少会看浏览器的F12里的内容(过两天在更新更简单的)。
对了,下载下来还需要合并文件。
合并ts文件的工具

下载在线播放的电影,一个下载TS文件的工具,python小白。相关推荐

  1. Doxygen 一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C.C++.Java.Objective-C和IDL语言,部分支持PHP.C#.注释的语法与Qt-Doc.KDoc和J ...

  2. 一个批量转换文件编码的python脚本

    一个批量转换文件编码的python脚本 需要将工作目录下的文件进行转码,开始的编码是GBK的,需要将其转换为utf-8的.文件较多,手动转换肯定不行,用Python写个脚本来实现.找到一段代码参考: ...

  3. Doxygen一个程序的文件产生工具

    简介Doxygen 一.什么是Doxygen? Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件.通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索 ...

  4. (我决定发N个在线播放的电影出来,当然是免费以稳定,速度又快的)□ 影片名:《新片-无极》(70375)

    □ 影片名:<新片-无极>(70375)  在线播放 注意 1,2,3,4均为ftp下载 5,6,7,8为在线观看 -----如果开始在线播放时画面不正常,请缩小一下当前播放窗口网页浏览器 ...

  5. 多线程下载m3u8影视资源 通过ffmpeg合并ts文件为mp4

    需要用到的ffmpeg,下载地址:Download FFmpeg  下载以后的目录. 合并.转换.切片都用到了ffmpeg.exe,其它两个我暂时没用到. <dependency>< ...

  6. (我决定发N个在线播放的电影出来,当然是免费以稳定,速度又快的)□ 影片名:《艺妓回忆录-新片》(3099)

    □ 影片名:<艺妓回忆录-新片>(3099)  在线播放 注意 1,2,3,4,5均为ftp下载 6,7,8,9,10为在线观看 影片<艺妓回忆录>根据美国作家阿瑟-高顿的同名 ...

  7. (我决定发N个在线播放的电影出来,当然是免费以稳定,速度又快的)□ 影片名:《野兽刑警》(24794)

    □ 影片名:<野兽刑警>(24794)  在线播放 飞虎队督察Mike(王敏德)因为脾气火爆.嫉恶如仇被下放到红番区,带领一群散漫的便衣警察,最令他头痛的便是最乏纪律的烂鬼东(黄秋生)-他 ...

  8. Python爬取视频之爱情电影及解密TS文件和两种合并ts的方法

    俗话说,兴趣所在,方能大展拳脚.so结合兴趣的学习才能事半功倍,更加努力专心,apparently本次任务是在视频网站爬取一些好看的小电影,地址不放(狗头保命)只记录过程. 实现功能: 从网站上爬取采 ...

  9. Python爬取视频之爱情电影及解密TS文件和两种合并ts!

    俗话说,兴趣所在,方能大展拳脚.so结合兴趣的学习才能事半功倍,更加努力专心,apparently本次任务是在视频网站爬取一些好看的小电影,地址不放(狗头保命)只记录过程. 实现功能: 从网站上爬取采 ...

  10. 如何编写一个d.ts文件

    这篇文章主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名,比如xxx.d.ts). 2018.12.18更新说明: 1.增加了全局声明的原理说明. 2.增加了es6的import ...

最新文章

  1. iOS - Swift NSValue 值
  2. pods install 无法安装库
  3. perl中q,qq,qw,qr的区别。
  4. Docker安装Mysql 案例和Tomcat测试
  5. Node 环境变量 process.env.NODE_ENV 之webpack应用
  6. python高阶函数——sorted排序算法
  7. RHEL6与Oracle 11G R2之开篇:安装
  8. 基于SpringBoot的简单记账系统
  9. html原生js进度条圆形,原生JavaScript实现进度条
  10. 常见互联网职业英文简写,你是哪个O?
  11. php excel 导入图片,利用php实现读取excel中的图片
  12. 你不知道的HelloGitHub!
  13. 石狮子吃了四十四个涩柿子
  14. 汇编指令:使用汇编指令计算2的8次方
  15. 数据库笔记--常见sql操作
  16. [Python爬虫] 九、机器视觉与机器图像识别之Tesseract
  17. 开源SSL加快器的构建
  18. 平面设计技法技巧之图形设计
  19. Android_001_校园APP_001_底部导航栏_Fragment_0
  20. 第五章 黎明踏浪号 Facebook (一)

热门文章

  1. LabVIEW中调用Halcon
  2. 广数928te_广数928te2说明书
  3. ap音频测试仪软件,AP APX-525音频分析仪
  4. 软件测试基础 ——— 测试分析
  5. 械体叶NUNNECH FEWNE OFUEenTM 17.1+教程与算例
  6. 训练集、测试集、验证集
  7. 计算机桌面有浮层,win7电脑桌面便签小工具怎么显示悬浮文字?
  8. 学习总结5.0 Linux tar打包命令
  9. mysql目录结构与源码
  10. 新手电脑硬件软件故障解答(三)