python下载腾讯视频_使用python 下载 mp4格式的腾讯视频
將騰訊視頻本地化的方法
第一步查找視頻的地址
視頻的真實地址 保存session中 如上圖
找到視頻地址后,使用python下載騰訊視頻
2.這里使用的解釋器python3.5
需要安裝request 和 moviepy
安裝request
pip install requests
安裝moviepy
pip install moviepy
安裝ffmpeg
如果之前沒安裝過?ffmpeg?, 這個時候導入?moviepy?開始使用會報錯的, 所以我們可以先用?imageio?自帶的方法下載?ffmpeg
新建install_ffmpeg.py,并執行
文本文件
import imageio
import ssl
# 下面這一句不是必須的, 但是某些情況下訪問 https 會報SSL證書不受信任, 加上這一句可以允許通過
ssl._create_default_https_context = ssl._create_unverified_context
# 下載 ffmpeg 組件
imageio.plugins.ffmpeg.download()
3.下載視頻文件
# -*- coding:utf-8 -*-
import os
import sys
import requests
import datetime
from moviepy.editor import *
def LoadVideo(url):
"""
騰訊視頻下載
:param url: 視頻m3u8地址
"""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
download_path = os.getcwd() + "\download"
if not os.path.exists(download_path):
os.mkdir(download_path)
# 新建日期文件夾
download_path = os.path.join(download_path, datetime.datetime.now().strftime(‘%Y%m%d_%H%M%S‘))
os.mkdir(download_path)
# 獲取第一層M3U8文件內容
all_content = requests.get(url).text
if "#EXTM3U" not in all_content:
raise BaseException("非M3U8的鏈接")
if "EXT-X-STREAM-INF" in all_content: # 第一層
file_line = all_content.split("\n")
for line in file_line:
if ‘.m3u8‘ in line:
# 拼出第二層m3u8的URL
url = url.rsplit("/", 1)[0] + "/" + line
all_content = requests.get(url, headers=headers).text
file_line = all_content.split("\n")
file_index = 0
for index, line in enumerate(file_line): # 第二層
if "#EXT-X-KEY" in line: # 找解密Key
method_pos = line.find("METHOD")
comma_pos = line.find(",")
method = line[method_pos:comma_pos].split(‘=‘)[1]
uri_pos = line.find("URI")
quotation_mark_pos = line.rfind(‘"‘)
key_path = line[uri_pos:quotation_mark_pos].split(‘"‘)[1]
key_url = url.rsplit("/", 1)[0] + "/" + key_path # 拼出key解密密鑰URL
res = requests.get(key_url)
key = res.content
# 找ts地址并下載
if "EXTINF" in line:
unknow = False
# 拼出ts片段的URL
pd_url = url.rsplit("/", 1)[0] + "/" + file_line[index + 1]
file_index = file_index + 1;
res = requests.get(pd_url)
c_fule_name = str(file_index)
with open(os.path.join(download_path, c_fule_name + ".mp4"), ‘ab‘) as file:
file.write(res.content)
file.flush()
merge_file(download_path)
def merge_file(path):
"""拼接視頻
:param path: 相對路勁
"""
# 定義一個數組
video_list = []
# 訪問 video 文件夾 (假設視頻都放在這里面)
for root, dirs, files in os.walk(path):
# 按文件名排序
files.sort()
# 遍歷所有文件
index = 0
for key in range(1, len(files)+1):
for file in files:
if os.path.splitext(file)[0] == str(key):
# 拼接成完整路徑
file_path = os.path.join(root, file)
# 載入視頻
video = VideoFileClip(file_path)
# 添加到數組
video_list.append(video)
else:
continue
# 拼接視頻
final_clip = concatenate_videoclips(video_list)
# 生成目標視頻文件
video_path= os.getcwd() + r"\video"
if not os.path.exists(video_path):
os.mkdir(video_path)
video_path+=datetime.datetime.now().strftime(‘%Y%m%d_%H%M%S‘)+‘.mp4‘
final_clip.to_videofile(video_path, fps=24, remove_temp=False)
if __name__ == ‘__main__‘:
url=‘https://apd-efee4483a80104df1441e1d8f701e125.v.smtcdns.com/moviets.tc.qq.com/AcJSehqEQQedX5zyfYdOaiIaP5bJA6OKzlhHQuz0B_ks/uwMROfz2r5xgoaQXGdGnC2df64gVTKzl5C_X6A3JOVT0QIb-/GNxCYNllJLj9fPO-_rwnUNxpuWQtjyD_Zjvlivsev-7Juyk91J-Ftx1kClENGySmxH5dxtb84XO54QtHzXfRWdOBlMT5uGHZG5qL-zOWccM1r0pTM8QDCj4jIRr0hv5_RG0pY1zfrq5A9rz0ZOVzcpWRN-VhPiwwgSvwGiu7_3k/o0017ets4aa.321004.ts.m3u8?ver=4‘
LoadVideo(url)
#video=VideoFileClip("./download/20200416_140017/1.mp4")
#videoClip = video.subclip(7,)
#videoClip.to_videofile("./download/20200416_140017/01.mp4", fps=20)#輸出文件
原文:https://www.cnblogs.com/blogsxyz/p/12811236.html
總結
以上是生活随笔為你收集整理的python下载腾讯视频_使用python 下载 mp4格式的腾讯视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac/iOS开发工程师 常用的软件 史
- 下一篇: python 和vba在财务上_各位大佬