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}')
相关推荐
懒大王爱吃狼34 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
励志成为嵌入式工程师5 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端