20230506在Ubuntu22.04下使用python3下载合并ts切片

news2024/9/27 19:14:31

20230506在Ubuntu22.04下使用python3下载合并ts切片
2023/5/6 19:42

本文主要是和WIN7/WIN10下的差异比对!


一、
Z:\1575\buquan-ts1574.py
import requests
from multiprocessing import Pool

def mission(url,n):
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    print('*****')
    response=requests.get(url,headers=headers)
    print('-----')
    #f=open("./1/%03d.ts"%n,"wb")
    #f=open("./1574/%03d.ts"%n,"wb")
    f=open("1574/%03d.ts"%(n+1),"wb")
    f.write(response.content)      
    f.close()
    print("%03d.ts OK..."%n)


if __name__ == "__main__":
    pool=Pool(20)
    #for n in range(0,1000):
    #for n in range(0,2000):
    #for n in range(0,3000):
    #for n in range(0,4000):
    for n in range(0,6000):
        #https://c-vod.hw-cdn.xiaoeknow.com/2919df88vodtranscq1252524126/4b2eee3d387702306097169767/v.f1231726_0.ts?t=632730dc&sign=a3481f748245b4d8a8aa839740614c02&us=OKmcBFQEBk
        url = "https://c-vod.hw-cdn.xiaoeknow.com/2919df88vodtranscq1252524126/9f53fa42243791581971767817/v.f1228559_{}.ts?t=1204d85ae&sign=f411640c263f18cbffe27a885bf5b8a6&us=HSrVYxtpip".format(n)
        print(url)
        pool.apply_async(mission,(url,n))
        
        #line = f.readline()
        #pool.apply_async(mission,(line,n))
    pool.close()
    pool.join()

 


二、
Z:\1575\ts1574.py
import requests
from multiprocessing import Pool

def mission(url,n):
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    print('*****')
    response=requests.get(url,headers=headers)
    print('-----')
    #f=open("./1/%03d.ts"%n,"wb")
    f=open("./1574/%03d.ts"%n,"wb")
    f.write(response.content)      
    f.close()
    print("%03d.ts OK..."%n)


if __name__ == "__main__":
    #f = open("f:\\p1\\1574.txt")
    #f = open("g:\\1575\\1574.txt")
    f = open("1574.txt")
    
    pool=Pool(20)  
    #for n in range(1,1574):
    #for n in range(1,2000):
    for n in range(1,4000):
        line = f.readline()
        #pool.apply_async(mission,(line,n))
        pool.apply_async(mission,(line.rstrip(), n))
    pool.close()
    pool.join()
    
    print('\n 2023/5/6 1:46-finish')
    print(n)

 


三、
输出合并ts切片的shell脚本:
temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(1,999):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%03d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output1.ts"
url = url + temp

f=open("1574/1.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(1000,2000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output2.ts"
url = url + temp

f=open("1574/2.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(2001,3000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output3.ts"
url = url + temp

f=open("1574/3.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
#for n in range(3001,3389):
for n in range(3001,4000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output4.ts"
url = url + temp

f=open("1574/4.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(4001,5000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output5.ts"
url = url + temp

f=open("1574/5.sh","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(5001,6000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output6.ts"
url = url + temp

f=open("1574/6.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(6001,7000):
    #temp = "1574/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output7.ts"
url = url + temp

f=open("1574/7.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(7001,8000):
    #temp = "1574/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output8.ts"
url = url + temp

f=open("1574/8.sh","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(8001,9000):
    #temp = "1574/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output9.ts"
url = url + temp

f=open("1574/9.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(9001,10000):
    #temp = "1574/%03d.ts"%n
    temp = "%04d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output10.ts"
url = url + temp

f=open("1574/10.sh","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(10001,11000):
    #temp = "1574/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output11.ts"
url = url + temp

f=open("1574/11.sh","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(11001,12000):
    #temp = "1574/%05d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%05d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output12.ts"
url = url + temp

f=open("1574/12.sh","w")
f.write(url)
f.close()

 


四、单独下载一个ts切片:
import requests
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
response=requests.get("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi",headers=headers)
f=open("333.ts","wb")
f.write(response.content)      
f.close()


import requests
#from multiprocessing import Pool

#def mission(url,n):
#    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
#    print(headers)
#    print('*****')
#    response=requests.get(url,headers=headers)
#    print(url)
#    print(response)
#    print('-----')
#    #f=open("./1574/%03d.ts"%n,"wb")
#    #f=open("1574/%03d.ts"%n,"wb")
#    #f=open("%03d.ts"%n,"wb")
#    f=open("3332.ts","wb")
#    temp = f.write(response.content)
#    print(temp)
#    f.close()
#    print("%03d.ts OK..."%n)


if __name__ == "__main__":

    str1 = "hello"
    str2 = "hello"
    if str1 == str2:
        print("vvvv")
    else:
        print("xxxx")


    #pool=Pool(20)
    #f = open("c:\\1575\\1574.txt")
    f = open("1574.txt")
    
    #headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    #response=requests.get("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi",headers=headers)
    #f=open("333.ts","wb")
    #f.write(response.content)      
    #f.close()
    
    for n in range(1,1575):
        url=""
        print(n)
        print(url)
        #pool.apply_async(mission,(url,n))
        #mission(url,n)
        
        line = f.readline()
        #if str1 == str2:
        if line == "https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi":
            print("v20230506")
        else:
            print("????")
        
        
        print(line)
        print(len(line))
        
        print(line.rstrip())
        print(len(line.rstrip()))
        
        print('-----')
        print("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi")
        print(len("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi"))
        #print(type(x))
        print(type(line))
        #mission(line,n)
        
        #line2[200] =  "xyb"
        #print(line2)
        char_array = ['a', 'b', 'c']
        print(char_array)
        
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
        #response=requests.get("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi",headers=headers)
        #line[-1]=''
        print(line[0])
        print(line[len(line)-2])
        print(line[len(line)-1])
        #line[len(line)-1]=''
        #line[len(line)-2]=''
        #line[len(line)-1]='\0'
        
        #line2 = ''
        #
        #for i in range(0,len(line)-1):
        for i in range(0,len(line)):
            print(line[i])
            #line[i] = line2[i]
        
        #print(line2)
        #print(len(line2))
        
        #response=requests.get(line, headers=headers)
        response=requests.get(line.rstrip(), headers=headers)
        f=open("333.ts","wb")
        temp = f.write(response.content)
        print(temp)      
        f.close()
    #pool.close()
    #pool.join()

rootroot@rootroot-adol-ADOLBOOK-I421UAY-ADOL14UA:~/1575$ 
rootroot@rootroot-adol-ADOLBOOK-I421UAY-ADOL14UA:~/1575$ python3 dandu.py 
vvvv
1

????
https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi

193
https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi
192
-----
https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/3ada4c57243791581932707725/playlist.f3_0.ts?start=0&end=1555323&type=mpegts&sign=af0b97077eab8cbd57032f45525f31af&t=6455ce40&us=kCHNVAFqLi
192
<class 'str'>
['a', 'b', 'c']
h
i


12
2

Traceback (most recent call last):
  File "/home/rootroot/1575/dandu.py", line 49, in <module>
    line = f.readline()
io.UnsupportedOperation: read
rootroot@rootroot-adol-ADOLBOOK-I421UAY-ADOL14UA:~/1575$ 

在WIN7/WIN10下都可以下载红杏林/高手知路(猫抓获取链接),但是直接移植到Ubuntu22.04下异常!
后来确认读取的line行是字符串类型,但是在Ubuntu下读取行的时候会将最后的换行符也读取进来了!
干掉换行符就正常了!
【一步一步地调试,搞了了2小时!】


参考资料;
python read line signature not match
python line = f.readline()
python line = f.readline() line转字符串
python去掉字符串最后的换行符


python str 长度
https://blog.csdn.net/weixin_39661353/article/details/110551584
python想获取字符串str的长度_在python中如何获取字符串的长度


python 判断字符串是否 相等
https://blog.csdn.net/update7/article/details/129718382
Python字符串比较:如何判断两个字符串是否相等?


python 变量类型判断
https://blog.csdn.net/qq_39187019/article/details/109256713
Python判断变量的类型


https://blog.csdn.net/weixin_31866177/article/details/115121857
【Python】判断变量类型(是否为int、字符串、列表、元组、字典等方法)


https://blog.csdn.net/weixin_42930696/article/details/123060083
python中判断变量的类型


https://www.zhihu.com/question/592560444/answer/2961251162?utm_id=0
在 Python 中,如何判断一个变量的类型?


https://blog.csdn.net/weixin_39887183/article/details/113981247
python循环控制语句将数值转化成字符串_python基础入门详解(文件输入/输出内建类型字典操作使用方法)...


https://blog.csdn.net/weixin_35662493/article/details/112033112
python用readline读取数据库_PYTHON学习14.06:Python readline()和readlines()函数:按行读取文件...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php语法基础

基础语法 1&#xff0c;php标记符 ①&#xff0c;XML风格 <?php echo "这是标准风格的标记"; ?>②脚本风格 <script language"php"> echo 这是脚本风格的标记; </script>③简短风格 <? echo "这是简短风格的标记"…

62.网页设计规则#8_视觉层次

什么是视觉层次&#xff1f; 视觉层次是关于确定设计中哪些元素是最重要的。视觉层次是为了吸引人们的注意力关注这些最重要的元素。视觉层次是关于为用户定义一个“路径”,引导他们浏览页面我们使用位置、大小、颜色、间距、边框和阴影的组合来建立元素/组件之间有意义的视觉…

leetcode:环形链表(详解)

前言&#xff1a;内容包括-题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读&#xff0c;拓展问题 题目&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&…

【BIM+GIS】Supermap打开BIM Revit模型的方式

Revit导出Supermap GIS格式数据的方法通常有三种:插件式导出、直接导入和标准交换格式(IFC)导出。 文章目录 一、Revit安装Supermap插件1. 安装Supermap插件2. UDB导出模型3. 打开模型二、Revit导出IFC格式1. Revit导出IFC2. Supermap导入IFC一、Revit安装Supermap插件 1. …

115-Linux_C语言访问mysql及操作数据库

文章目录 一.C语言访问mysql1.连接数据库使用的头文件和库文件2.初始化连接句柄3.连接数据库4.关闭连接5.执行sql语句6.提取结果7.获取结果集中有多少行8.取出结果集中的一行记录9.查看记录行的列数10.释放结果集占用的内存11.获取错误信息 二.连接数据库三.操作数据库 一.C语言…

Linux 中实现 ssh 免密登录

Linux 中实现 ssh 免密登录 1. 使用命令行 在控制端使用命令生成私钥密钥对&#xff0c;执行命令 ssh-keygen -t rsa ,一路默认回车即可&#xff0c;然后会在 .ssh/ 目录下生成两个文件 id_rsa 和 id_rsa.pub&#xff0c;如下图。 使用命令 ssh-copy-id root192.168.16.4&…

电力NLP:指令票规范识别

文章目录 任务目的想法讲解数据集介绍1电气主语2操作任务判断数据集3操作内容判断数据集4错误词数据集 解法讲解程序、数据集下载链接 任务目的 识别调度指令票&#xff08;或者其它操作票&#xff09;是否规范。 想法讲解 按石第2014—16号定值单投入石双西线161开关6区保护…

web三大作用域+servlet生命周期

Web三大作用域 Application ServlectContext &#xff1a; 作用于整个web应用&#xff0c;随程序的停止而失效。 使用&#xff1a; request.getServletContext().setAttribute("参数名","参数值");//servlet获取Application对象并传入数据 Application.g…

React antd 日期选择控件踩坑 <DatePicker> Table Ant Design ProTable

背景 需求&#xff1a;一个带日期的字段 后端接口给值时默认设置为这个日期值 不给值时就是默认状态 <DatePicker defaultValue{val} onChange{handleChange} {...props} />这里 val 是我最终从后端获取到的日期数据 可能有值可能没有值 按照官方 API 和 demo 写 应…

实验四 微程序控制器实验报告

我班算是几乎最后一个做实验的班级了&#xff0c;报告参考了一些朋友提供的数据加上一些自己的主观拙见&#xff0c;本人水平有限加之制作仓促难免有错误&#xff0c;望大家批评指正。 4.1 微程序控制器实验 一、实验目的 (1) 掌握微程序控制器的组成原理。 (2) 掌握微程…

springboot实习管理系统的设计与实现

摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而实…

一键免费部署你的私人 ChatGPT 网页应用-ChatGPT Next Web

ChatGPT-Next-Web是一款基于GPT-3.5的在线聊天机器人应用程序。它可以自动回复用户输入的消息&#xff0c;并提供有用的信息和服务。该应用程序使用了最先进的自然语言处理技术和GPT-3.5模型&#xff0c;可以生成自然流畅的文本&#xff0c;并提供准确和个性化的回复。 项目地…

(浙大陈越版)数据结构 第二章 线性结构 2.3 队列

目录 2.3.1 队列及顺序存储实现 什么是队列 概念&#xff1a; 特性&#xff1a; 队列的抽象数据类型描述 队列的顺序存储实现 解决方案&#xff1a; 2.3.2 队列的链式存储实现 2.3.1 队列及顺序存储实现 什么是队列 概念&#xff1a; 和堆栈一样&#xff0c;是一种受…

黑马点评项目导入

文章目录 开篇导读项目地址导入SQL项目架构介绍后端项目导入前端项目导入 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们…

刚刚!BingChat全面开放,人人可用!

大家好&#xff0c;我是鸟哥。 如题&#xff0c;微软真是下血本。昨天毫无征兆的宣布BingChat全面开放&#xff0c;人人可用&#xff01;众所周知ChatGPT得使用门槛有多高&#xff0c;而BingChat底层调用的是GPT4.0的模型&#xff0c;这无疑是白嫖GPT4.0最简单的姿势了。鸟哥一…

阿里云服务器镜像怎么选?操作系统版本选择说明

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云百科来详细说下阿里云服务器操作系统有哪些&#xf…

【移动端网页布局】flex 弹性布局 ④ ( 设置子元素是否换行 | flex-wrap 样式说明 | 代码示例 )

文章目录 一、设置子元素是否换行 : flex-wrap 样式说明1、flex-wrap 样式引入2、flex-wrap 样式取值说明 二、代码示例1、代码示例 : 默认情况下 flex 弹性布局子元素不会自动换行2、代码示例 : 自动换行 一、设置子元素是否换行 : flex-wrap 样式说明 1、flex-wrap 样式引入 …

统计字符串字符出现的次数

输入一个字符串&#xff0c;输出字符及相应字符出现的次数。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https://lqp…

navicat连接云服务器mysql教程

包含navicat报错解决&#xff01; 文章目录 1 点击连接后填写相关内容2 报错解决2.1 1130 - Host XXX is not allowed to connect to this MySQL server。2.2 服务器未开启mysql端口通道 1 点击连接后填写相关内容 主机名或ip地址&#xff1a;填写服务器公网ip 用户名和密码&a…

GitHub使用(1):杂项

目录 1. ubuntu推送到github鉴权失败2. 分支重命名3. 指令升级删除分支推送到远程仓库 1. ubuntu推送到github鉴权失败 翻译下就是 remote&#xff1a;2021 年 8 月 13 日删除了对密码身份验证的支持。 远程&#xff1a;有关当前推荐的身份验证模式的信息&#xff0c;请参阅 ht…