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}')
相关推荐
万物得其道者成14 分钟前
React Zustand状态管理库的使用
开发语言·javascript·ecmascript
奈斯。zs19 分钟前
yjs08——矩阵、数组的运算
人工智能·python·线性代数·矩阵·numpy
Melody205019 分钟前
tensorflow-dataset 内网下载 指定目录
人工智能·python·tensorflow
学步_技术20 分钟前
Python编码系列—Python抽象工厂模式:构建复杂对象家族的蓝图
开发语言·python·抽象工厂模式
wn53144 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
Narutolxy1 小时前
Python 单元测试:深入理解与实战应用20240919
python·单元测试·log4j
Hello-Mr.Wang1 小时前
vue3中开发引导页的方法
开发语言·前端·javascript
救救孩子把1 小时前
Java基础之IO流
java·开发语言
WG_171 小时前
C++多态
开发语言·c++·面试
宇卿.1 小时前
Java键盘输入语句
java·开发语言