import
os
from
bilibili_api
import
user, video
from
you_get
import
common as you_get
def
download_video(url, output_path
=
"downloads"
):
try
:
if
not
os.path.exists(output_path):
os.makedirs(output_path)
print
(f
"正在下载: {url}"
)
you_get.any_download(url, output_dir
=
output_path, merge
=
True
)
print
(f
"下载完成: {url}"
)
except
Exception as e:
print
(f
"下载失败: {e}"
)
def
download_album(author_name, album_name, output_path
=
"downloads"
):
try
:
u
=
user.User(name
=
author_name)
user_info
=
u.get_user_info()
mid
=
user_info[
'mid'
]
print
(f
"找到作者: {user_info['name']} (MID: {mid})"
)
videos
=
user.get_videos(mid)
album_videos
=
[v
for
v
in
videos
if
album_name
in
v[
'title'
]]
if
not
album_videos:
print
(f
"未找到与 '{album_name}' 相关的视频"
)
return
print
(f
"找到 {len(album_videos)} 个视频:"
)
for
i, v
in
enumerate
(album_videos):
print
(f
"{i + 1}. {v['title']}"
)
for
v
in
album_videos:
video_url
=
f
"https://www.bilibili.com/video/{v['bvid']}"
download_video(video_url, output_path)
except
Exception as e:
print
(f
"下载失败: {e}"
)
def
main():
print
(
"欢迎使用B站视频下载工具!"
)
author_name
=
input
(
"请输入作者名: "
)
album_name
=
input
(
"请输入专辑名(留空则下载单个视频): "
)
if
album_name:
download_album(author_name, album_name)
else
:
video_url
=
input
(
"请输入视频链接: "
)
download_video(video_url)
if
__name__
=
=
"__main__"
:
main()