import requests
import os
import json
from moviepy.editor import VideoFileClip, AudioFileClip
from bs4 import BeautifulSoup

if __name__ == "__main__":
    # 豆瓣电影 TOP 榜 API 接口
    url = 'https://movie.douban.com/j/chart/top_list'
    param = {
        'type': '24',
        'interval_id': '100 % 3A90',
        'action': '',
        'start': '0',
        'limit': '10',
    }

    headers = {
        'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 99.0.4844.74 Safari / 537.36Edg / 99.0.1150.55'
    }
    response = requests.get(url=url, params=param, headers=headers)

    # 获取 TOP 榜数据
    list_data = response.json()

    # 获取视频网页内容
    video_url = 'https://movie.douban.com/subject/35053710/'  # 替换为具体的视频网页链接
    res = requests.get(video_url, headers=headers)
    soup = BeautifulSoup(res.text, 'html.parser')

    # 定位页面的标题,当成文件保存名称
    title_element = soup.find('h2', class_='title')
    if title_element:
        title = title_element.string
    else:
        title = 'Untitled'

    script_all = soup.find_all('script')
    for script in script_all:
        content = script.text
        if 'window.__playinfo__=' in content:
            content_res = content[20:]
            data = json.loads(content_res)
            video_url = data['data']['dash']['video'][0]['baseUrl']
            headers['referer'] = video_url
            video_res = requests.get(video_url, headers=headers)
            with open('{}.mp4'.format(title), 'wb') as v_file:
                v_file.write(video_res.content)

            audio_url = data['data']['dash']['audio'][0]['baseUrl']
            print(audio_url)
            audio_res = requests.get(audio_url, headers=headers)
            with open('{}.mp3'.format(title), 'wb') as a_file:
                a_file.write(audio_res.content)

            video_clip = VideoFileClip('{}.mp4'.format(title))
            audio_clip = AudioFileClip('{}.mp3'.format(title))
            merge_result = video_clip.set_audio(audio_clip)
            merge_result.write_videofile('merge-{}.mp4'.format(title))

说明:

  1. 脚本使用 Python 3 编写,需要安装以下库:

    • requests
    • json
    • moviepy
    • beautifulsoup4
  2. video_url 变量需要替换为具体的视频网页链接。

  3. 脚本会根据视频网页的标题自动生成文件名,如果网页没有标题,则使用 'Untitled' 作为文件名。

  4. 脚本会下载视频和音频文件,并将其合并为一个视频文件,保存到当前目录下。

运行步骤:

  1. 安装必要的库:
pip install requests json moviepy beautifulsoup4
  1. 将脚本保存为 .py 文件,例如 download_video.py

  2. 在脚本中替换 video_url 变量为具体的视频网页链接。

  3. 运行脚本:

python download_video.py
豆瓣电影TOP榜视频下载工具

原文地址: http://www.cveoy.top/t/topic/fQV6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录