python下载segmentfault并合成视频

2018/12/14 14:11
阅读数 444
# -*- coding:utf-8 -*-

import re
import subprocess
import requests
import os

HEADERS = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
}

#获取 ts 文件列表
def get_video_ids_from_url(url):
    html = requests.get(url, headers=HEADERS).text
    lists = html.split("\n") #按\n 拆分
    return [url for url in lists if url.rstrip().endswith('ts')]  #过滤 ts 文件

#下载 ts 文件内容
def yield_video_m3u8_url_from_video_ids(video_ids):
    for video_id in video_ids:
        api_video_url = 'https://media.video.segmentfault.com{}'.format(video_id)  # 下载的是知乎视频
        print('正在下载文件'+ api_video_url)
        res = requests.get(api_video_url, headers=HEADERS)
        file_name = os.path.split(video_id)[1]
        with open(download_path + "/" + file_name, 'ab') as f:
            f.write(res.content)
            f.flush()


def download(url):
    video_ids = get_video_ids_from_url(url)
    yield_video_m3u8_url_from_video_ids(video_ids)

if __name__ == '__main__':  # 贴上你需要下载的 回答或者文章的链接
    url = raw_input('请输入要下载的 m3u8 地址:')
    #url = 'https://media.video.segmentfault.com/live/a4v59c3bd54ea31f.m3u8?sign=5a7e1d123702bad9178cd7a825da74dd&t=5bed41a7'
    download_path = os.getcwd() + "/download"
    if not os.path.exists(download_path):
        os.mkdir(download_path,777)
    download(url)
    print('开始合并 ts 文件')
    shell_str = "for i in `ls "+ download_path + "/*.ts`; do cat $i >> com.ts; done"
    os.system(shell_str)
    print('开始转换 ts 文件')
    os.system("ffmpeg -i com.ts -acodec copy -vcodec copy -bsf aac_adtstoasc output.mp4")
    # 删除 ts 和 m3u8 文件
    print('转换完成删除 ts 文件')
    os.system("rm -fr " + download_path+" /*.ts")

1、安装 ffmpeg

2、安装 python

pip install requests

 

打开控制台 -〉Network

搜索 m3u8     ,把地址复制出来,运行 python 脚本下载讲座视频,python 下载 segmentfault 并合成视频

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部