python媒体下载工具 you-get

you-get 是一个基于 Python 3 的强大的命令行工具,使用方式简单,使用 you-get 可以很轻松的下载到网络上的各种媒体文件(视频、图片及音乐等)。

相关功能和配置选项,可以查阅以下以获取详细信息:

𝟶. 安装 you-get

在使用 you-get 之前,你需要先确保已经安装了 Python。可以通过 pip 安装 you-get,打开终端:

bash 复制代码
pip install you-get

𝟷. 基本命令

you-get 的基本命令语法和常用参数如下:

基本语法:

bash 复制代码
you-get [OPTIONS] URL

常用参数:

参数 描述
-u 解析真实的url
--json 获取视频的json格式信息
-i, --info 显示信息(清晰度、格式etc.),而不下载
-h, --help 显示帮助信息
-f, --force 强制覆盖已有文件
-o, --output 指定下载文件保存的地址
--playlist 下载列表/合集/番剧
-p, --player 指定使用某个播放器播放视频,而不下载
-q, --quiet 静默模式,减少输出信息
--no-merge 禁止合并视频和音频流
--cookies 指定 cookies 文件路径,以便下载需要登录验证的内容
--debug 显示调试信息

暂停下载:Ctrl+C

2. 使用示例

test.txt

https://www.bilibili.com/video/BV1vy4y1A7jn/
https://v.youku.com/v_show/id_XMjkyODAwNzIw.html
https://www.youtube.com/playlist?list=PL1234567890
http://www.youku.com/playlist_show/id_25917721.html
https://www.bilibili.com/bangumi/play/ss5732/
https://music.163.com/#/song?id=123456
https://www.missevan.com/sound/player?id=9729804

2023-12, 第一部分·下载 download.py
⚠ 需要切换输入法为西文,且路径不含中文。

python 复制代码
# 少数下不下来 正常 用解析下载网页也有的下不下来
import time
import pyautogui
import pyperclip #复制粘贴
f=open("bilibili.txt","r",encoding="utf-8")#打开txt文本文档
lines=f.readlines()#按行读取
f.close()
pyautogui.hotkey("win","r")
pyautogui.typewrite('cmd')
time.sleep(3)
pyautogui.press('enter')
time.sleep(3)
for i in range(len(lines)):
    line=lines[i]
    pyperclip.copy(line)
    # because the input method is set to English, the Chinese cannot be entered,
    # and the path should be free of Chinese characters.
    pyautogui.typewrite('you-get -o D:/yg/output/ ')
    pyautogui.hotkey("ctrl","v")
    pyautogui.press("enter")

或者少的话不用文本文档,直接放一起

2024-08, 第二部分·合并 merge.py

python 复制代码
import os
from moviepy.editor import *
# 需要注意的是,此处不能用 video.audio.write_audiofile 将mp4音频文件转换为mp3音频

# 遍历目录中的所有文件
for filename in os.listdir('./output'):
    # 检查文件名是否以[01].mp4结尾
    if filename.endswith('[01].mp4'):
        # 创建新的文件名
        new_filename = filename.replace('.mp4', '.mp3')
        # 获取完整路径
        old_file = os.path.join('./output', filename)
        new_file = os.path.join('./output', new_filename)
        # 重命名文件
        os.rename(old_file, new_file)
        # 删除文件
        os.remove(old_file)
        print(f'Renamed: {old_file} to {new_file}')
        print(f'Deleted: {old_file}')

    # 进行合并
    if filename.endswith('[00].mp4'):
        mp3_filename = filename.replace('[00].mp4', '[01].mp3')

        # 构造完整路径
        mp4_path = os.path.join('./output', filename)
        mp3_path = os.path.join('./output', mp3_filename)

        # 检查 mp3 文件是否存在
        if os.path.exists(mp3_path):
            # 加载音频和视频文件
            video_clip = VideoFileClip(mp4_path)
            audio_clip = AudioFileClip(mp3_path)

            # 将音频添加到视频中
            final_clip = video_clip.set_audio(audio_clip)

            # 修改合并后的文件名,去掉 [00]
            # new_filename = filename.replace('[00].mp4', '.mp4')
            new_filename = filename[:-8] + '.mp4'  # 去掉 [00] 并保留 .mp4
            new_file_path = os.path.join('./output', new_filename)

            # 写出合并后的文件
            final_clip.write_videofile(new_file_path, codec='libx264')

            # 关闭剪辑以释放资源
            final_clip.close()
            video_clip.close()
            audio_clip.close()

            # 删除文件
            os.remove(mp3_path)
            os.remove(mp4_path)
            print(f'Merged: {mp4_path} and {mp3_path} into {new_file_path}')
            print(f'Deleted: {mp4_path} and {mp3_path}')
相关推荐
学习前端的小z3 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹11 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE12 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
zwjapple28 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five30 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
前端每日三省31 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
好看资源平台41 分钟前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
chnming19871 小时前
STL关联式容器之map
开发语言·c++
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python