Python代码调用you-get

直接下载到桌面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import subprocess


# 这里的url请输入你所下载的视频地址
url = 'https://www.bilibili.com/video/BV1yP411P7As/?spm_id_from=333.788.recommend_more_video.0&vd_source=197cd9faf9dfebb5668cf8cff4737d21'
cmd = ['you-get', url]

# 执行命令
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 获取输出
out, err = p.communicate()

# 输出结果
print(out.decode('utf-8'))

详细命令

以下是使用Python调用you-get下载视频的示例代码,注释详细说明了每个步骤的作用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import subprocess

# 视频链接
url = 'https://www.bilibili.com/video/BV1Jx411W7Zu'

# 调用you-get下载视频
# -o 指定下载路径
# -O 指定输出文件名
# -d 指定下载整个视频列表
# -p 指定下载视频的清晰度
# --format 指定下载视频的格式
# --no-caption 不下载字幕
# --no-merge 不合并视频和音频
# --debug 输出调试信息
# --json 输出JSON格式的信息
# --info 输出视频信息
# --version 输出you-get版本信息
# --help 输出you-get帮助信息
command = ['you-get', url, '-o', './videos', '-O', 'test.mp4', '-p', '1080p', '--no-caption', '--no-merge', '--debug']
subprocess.call(command)

在使用该代码之前,需要先安装you-get。可以使用以下命令在命令行中安装you-get:

1
pip install you-get

该代码中使用了Python的subprocess模块来调用you-get下载视频。subprocess.call()函数可以执行一个命令,并等待命令执行完成后返回。在该代码中,command变量存储了要执行的命令及其参数,subprocess.call(command)执行了该命令。

在命令中,-o参数指定了下载路径,-O参数指定了输出文件名,-p参数指定了下载视频的清晰度。其他参数可以根据需要进行添加或修改。

需要注意的是,you-get只能下载一些公开的视频,如果需要下载需要登录或付费的视频,需要先登录或付费后才能下载。此外,下载视频可能涉及到版权问题,请遵守相关法律法规。

Python Tkinter界面库和you-get下载工具

以下是一个使用Python Tkinter界面库和you-get下载工具的示例程序,可以实现选择下载地址、下载路径、清晰度、下载类型等功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import tkinter as tk
import subprocess

class YouGetDownloader:
def __init__(self, master):
self.master = master
master.title("You-Get Downloader")

# 下载地址
self.url_label = tk.Label(master, text="下载地址:")
self.url_label.grid(row=0, column=0)
self.url_entry = tk.Entry(master, width=50)
self.url_entry.grid(row=0, column=1, columnspan=2)

# 下载路径
self.path_label = tk.Label(master, text="下载路径:")
self.path_label.grid(row=1, column=0)
self.path_entry = tk.Entry(master, width=50)
self.path_entry.grid(row=1, column=1)
self.path_button = tk.Button(master, text="选择路径", command=self.select_path)
self.path_button.grid(row=1, column=2)

# 清晰度
self.quality_label = tk.Label(master, text="清晰度:")
self.quality_label.grid(row=2, column=0)
self.quality_var = tk.StringVar()
self.quality_var.set("best")
self.quality_menu = tk.OptionMenu(master, self.quality_var, "best", "1080p", "720p", "480p", "360p", "240p", "worst")
self.quality_menu.grid(row=2, column=1, columnspan=2)

# 下载类型
self.type_label = tk.Label(master, text="下载类型:")
self.type_label.grid(row=3, column=0)
self.type_var = tk.StringVar()
self.type_var.set("video")
self.type_menu = tk.OptionMenu(master, self.type_var, "video", "audio", "merge")
self.type_menu.grid(row=3, column=1, columnspan=2)

# 开始下载按钮
self.download_button = tk.Button(master, text="开始下载", command=self.start_download)
self.download_button.grid(row=4, column=1)

def select_path(self):
path = tk.filedialog.askdirectory()
self.path_entry.delete(0, tk.END)
self.path_entry.insert(0, path)

def start_download(self):
url = self.url_entry.get()
path = self.path_entry.get()
quality = self.quality_var.get()
download_type = self.type_var.get()

if download_type == "merge":
cmd = f"you-get -o {path} -F {quality} -O output {url}"
else:
cmd = f"you-get -o {path} -F {quality} --{download_type} {url}"

subprocess.Popen(cmd, shell=True)

root = tk.Tk()
app = YouGetDownloader(root)
root.mainloop()

这个程序使用了Python的subprocess模块来调用you-get下载工具,并且使用了Python的tkinter.filedialog模块来选择下载路径。在界面上,我们使用了tkinter.Labeltkinter.Entrytkinter.Buttontkinter.OptionMenu等控件来实现各种功能。程序中的注释也比较详细,希望对你有帮助。

参考

5分钟带你了解python中超级好用的库 you-get_python的you-get_数据知道的博客-CSDN博客

you-get简明使用教程_you_get_q735496541的博客-CSDN博客

you-get库——python详解_python you-get_不忘晨曦的博客-CSDN博客