20231114_python练习_b站番剧视频爬取音频组合


import requests
import json
import re
import os
from pprint import pprint
from moviepy.editor import *


url = 'https://api.bilibili.com/pgc/view/web/season?ep_id=322903'
#设置请求头
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43",
    "Referer":"https://www.bilibili.com/bangumi/play/ep322903?from_spmid=666.4.feed.9", #设置防盗链
    "Cookie":"xxxxxx"
}

resp = requests.get(url=url,headers=header)
print(resp.status_code)
json_data = resp.json()
#pprint(json_data)
node_all_list = []

node_all = json_data['result']['episodes']
for node in node_all:
    #pprint(node)
    node_dic = {}
    node_dic['aid'] = node['aid']
    node_dic['cid'] = node['cid']
    node_dic['ep_id'] = node['ep_id']
    node_dic['share_copy'] = node['share_copy']
    node_dic['long_title'] = node['long_title']
    node_all_list.append(node_dic)
    break


print('node_all_list',node_all_list)

link_url ='https://api.bilibili.com/pgc/player/web/v2/playurl'

for node in node_all_list:
    data = {
        'support_multi_audio': 'true',
        'avid':node['aid'],
        'cid':node['cid'],
        'qn': '80',
        'fnver': '0',
        'fnval': '4048',
        'fourk': '1',
        'gaia_source':'',
        'from_client':'BROWSER',
        'ep_id': node['ep_id'],
        'session': 'af516338d69941203fd631e0f5d44f32',
        'drm_tech_type': '2'
    }
    resp = requests.get(url=link_url,params=data,headers=header)
    print(resp.status_code)
    link_data = resp.json()
    pprint(link_data)
    #音频视频链接
    audio_url = link_data['result']['video_info']['dash']['audio'][0]['baseUrl']
    video_url = link_data['result']['video_info']['dash']['video'][0]['baseUrl']

    biaoti = node['share_copy']

    resp1 = requests.get(url=video_url, headers=header)
    with open(biaoti + '.mp4', mode='wb') as f:
        f.write(resp1.content)
    print('audio_url', audio_url)
    resp2 = requests.get(url=audio_url, headers=header)
    with open(biaoti + '.mp3', mode='wb') as f:
        f.write(resp2.content)

    # 视频音频文件组合
    video_path = biaoti + '.mp4'
    audio_path = biaoti + '.mp3'
    # 提取音轨
    audio = AudioFileClip(audio_path)
    # 读入视频
    video = VideoFileClip(video_path)
    # 将音轨合并到视频中
    video = video.set_audio(audio)
    # 输出
    video.write_videofile(f"{biaoti}(含音频).mp4")

    # 将涉及MP3MP4清除
    os.remove(video_path)
    os.remove(audio_path)
    print(biaoti,'爬取完成')

    break

你可能感兴趣的:(爬虫练习,python,音视频,开发语言)