Python:案例之下载(函数)
我的代码:
import requests
image_dict = {
"1": ("吉他男神", "https://hbimg.huabanimg.com/51d46dc32abe7ac7f83b94c67bb88cacc46869954f478-aP4Q3V"),
"2": ("漫画美女", "https://hbimg.huabanimg.com/703fdb063bdc37b11033ef794f9b3a7adfa01fd21a6d1-wTFbnO"),
"3": ("游戏地图", "https://hbimg.huabanimg.com/b438d8c61ed2abf50ca94e00f257ca7a223e3b364b471-xrzoQd"),
"4": ("alex媳妇", "https://hbimg.huabanimg.com/4edba1ed6a71797f52355aa1de5af961b85bf824cb71-px1nZz"),
}
video_dict = {
"1": {"title": "东北F4模仿秀",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f570000bvbmace0gvch7lo53oog"},
"2": {"title": "卡特扣篮",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f3e0000bv52fpn5t6p007e34q1g"},
"3": {"title": "罗斯mvp",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f240000buuer5aa4tij4gv6ajqg"},
}
nba_dict = {
"1": {"title": "威少奇才首秀三双",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300fc20000bvi413nedtlt5abaa8tg&ratio=720p&line=0"},
"2": {"title": "塔图姆三分准绝杀",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0d00fb60000bvi0ba63vni5gqts0uag&ratio=720p&line=0"}
}
def huaban(*args,**kwargs):
for i,j in kwargs.items():
res = requests.get(
url=j,
headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
)
with open(f"{i}.png", mode="wb") as f:
f.write(res.content)
def video(*args,**kwargs):
i = []
for j in kwargs.values():
i.append(j)
res = requests.get(
url=i[1],
headers={
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 FS"
}
)
with open(f'{i[0]}.mp4', mode='wb') as f:
f.write(res.content)
def nba(*args,**kwargs):
i = []
for j in kwargs.values():
i.append(j)
print(i)
while True:
que = input('是否下载?Y/N')
que = que.upper()
if que == 'N':
break
elif not (que == 'N' or que == 'Y' ):
print('输入有误,请重新输入!')
continue
else:
type_choice = input('请选择要下载的类型?i为图片,v为视频,n为NBA!')
type_choice = type_choice.upper()
if not (type_choice == 'N' or type_choice == 'I' or type_choice == 'V'):
continue
else:
if type_choice == 'I':
ask = input('请选择您要下载的序号?1、2、3、4?')
ask = str(ask)
file_choice = image_dict[ask]
a = {}
a[image_dict[ask][0]] = image_dict[ask][1]
huaban(*ask,**a)
elif type_choice == 'V':
ask = input('请选择您要下载的序号?1、2、3?')
ask = str(ask)
file_choice = video_dict[ask]
video(*ask,**video_dict[ask])
elif type_choice == 'N':
ask = input('请选择您要下载的序号?1、2?')
ask = str(ask)
file_choice = nba_dict[ask]
nba(*ask,**nba_dict[ask])
优秀的代码一:
import requests
SELECTED_IMAGE_SET = set() # 已下载图片ID(序号)
SELECTED_VIDEO_SET = set()
SELECTED_NBA_SET = set()
def download(file_path, url):
res = requests.get(
url=url,
headers={
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 FS"
}
)
with open(file_path, mode='wb') as f:
f.write(res.content)
def download_image():
total_image_dict = {
"1": ("吉他男神", "https://hbimg.huabanimg.com/51d46dc32abe7ac7f83b94c67bb88cacc46869954f478-aP4Q3V"),
"2": ("漫画美女", "https://hbimg.huabanimg.com/703fdb063bdc37b11033ef794f9b3a7adfa01fd21a6d1-wTFbnO"),
"3": ("游戏地图", "https://hbimg.huabanimg.com/b438d8c61ed2abf50ca94e00f257ca7a223e3b364b471-xrzoQd"),
"4": ("alex媳妇", "https://hbimg.huabanimg.com/4edba1ed6a71797f52355aa1de5af961b85bf824cb71-px1nZz"),
}
while True:
# 构造 1.吉他男神;2.漫画美女;
text_list = []
for num, item in total_image_dict.items():
if num in SELECTED_IMAGE_SET:
continue
data = "{}.{}".format(num, item[0])
text_list.append(data)
if text_list:
text = ";".join(text_list)
else:
text = "无可下载选项"
# 输出:1.吉他男神;2.漫画美女;3.游戏地图;4.alex媳妇
print(text)
# 返回上一步
index = input("请输入要选择的序号(Q/q退出):")
if index.upper() == "Q":
return
# 选择序号 3
if index in SELECTED_IMAGE_SET:
print("已下载,无法再继续下载,请重新选择!")
continue
group = total_image_dict.get(index)
if not group:
print("序号不存在,请重新选择")
continue
# 下载图片
file_path = "{}.png".format(group[0])
download(file_path, group[1])
# 已下载集合中
SELECTED_IMAGE_SET.add(index)
def download_video():
total_video_dict = {
"1": {"title": "东北F4模仿秀",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f570000bvbmace0gvch7lo53oog"},
"2": {"title": "卡特扣篮",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f3e0000bv52fpn5t6p007e34q1g"},
"3": {"title": "罗斯mvp",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f240000buuer5aa4tij4gv6ajqg"},
}
while True:
text_list = []
for num, item in total_video_dict.items():
if num in SELECTED_VIDEO_SET:
continue
data = "{}.{}".format(num, item["title"])
text_list.append(data)
if text_list:
text = ";".join(text_list)
else:
text = "无可下载选项"
print(text)
index = input("请输入要选择的序号(Q/q退出):")
if index.upper() == "Q":
return
if index in SELECTED_VIDEO_SET:
print("已下载,无法再继续下载,请重新选择!")
continue
group = total_video_dict.get(index)
if not group:
print("序号不存在,请重新选择")
continue
file_path = "{}.mp4".format(group["title"])
download(file_path, group["url"])
SELECTED_VIDEO_SET.add(index)
def download_nba():
total_nba_dict = {
"1": {"title": "威少奇才首秀三双",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300fc20000bvi413nedtlt5abaa8tg&ratio=720p&line=0"},
"2": {"title": "塔图姆三分准绝杀",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0d00fb60000bvi0ba63vni5gqts0uag&ratio=720p&line=0"}
}
while True:
text_list = []
for num, item in total_nba_dict.items():
if num in SELECTED_NBA_SET:
continue
data = "{}.{}".format(num, item["title"])
text_list.append(data)
if text_list:
text = ";".join(text_list)
else:
text = "无可下载选项"
print(text)
index = input("请输入要选择的序号(Q/q退出):")
if index.upper() == "Q":
return
if index in SELECTED_NBA_SET:
print("已下载,无法再继续下载,请重新选择!")
continue
group = total_nba_dict.get(index)
if not group:
print("序号不存在,请重新选择")
continue
file_path = "{}.mp4".format(group["title"])
download(file_path, group["url"])
SELECTED_NBA_SET.add(index)
print("欢迎使用xxx系统")
func_dict = {
"1": download_image,
"2": download_video,
"3": download_nba
}
while True:
print("1.花瓣网图片专区;2.抖音短视频专区;3.NBA锦集专区 ")
choice = input("请选择序号:")
if choice.upper() == "Q":
break
func = func_dict.get(choice)
if not func:
print("输入错误,请重新选择!")
continue
# 进入专区
func()
优秀的代码二:
import requests
DB = {
"1": {
"area": "花瓣网图片专区",
"total_dict": {
"1": ("吉他男神", "https://hbimg.huabanimg.com/51d46dc32abe7ac7f83b94c67bb88cacc46869954f478-aP4Q3V"),
"2": ("漫画美女", "https://hbimg.huabanimg.com/703fdb063bdc37b11033ef794f9b3a7adfa01fd21a6d1-wTFbnO"),
"3": ("游戏地图", "https://hbimg.huabanimg.com/b438d8c61ed2abf50ca94e00f257ca7a223e3b364b471-xrzoQd"),
"4": ("alex媳妇", "https://hbimg.huabanimg.com/4edba1ed6a71797f52355aa1de5af961b85bf824cb71-px1nZz"),
},
"ext": "png",
"selected": set()
},
"2": {
"area": "抖音短视频专区",
"total_dict": {
"1": {"title": "东北F4模仿秀",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f570000bvbmace0gvch7lo53oog"},
"2": {"title": "卡特扣篮",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f3e0000bv52fpn5t6p007e34q1g"},
"3": {"title": "罗斯mvp",
'url': "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f240000buuer5aa4tij4gv6ajqg"},
},
"ext": "mp4",
"selected": set()
},
"3": {
"area": "NBA锦集专区",
"total_dict": {
"1": {"title": "威少奇才首秀三双",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300fc20000bvi413nedtlt5abaa8tg&ratio=720p&line=0"},
"2": {"title": "塔图姆三分准绝杀",
"url": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0d00fb60000bvi0ba63vni5gqts0uag&ratio=720p&line=0"}
},
"ext": "mp4",
"selected": set()
},
}
def download(file_path, url):
res = requests.get(
url=url,
headers={
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 FS"
}
)
with open(file_path, mode='wb') as f:
f.write(res.content)
def handler(area_info):
# 进入专区提醒
summary = "欢迎进入{}".format(area_info['area'])
print(summary)
# 专区中选择下载
while True:
text_list = []
for num, item in area_info['total_dict'].items():
if num in area_info['selected']:
continue
if type(item) == tuple:
data = "{}.{}".format(num, item[0])
else:
data = "{}.{}".format(num, item["title"])
text_list.append(data)
if text_list:
text = ";".join(text_list)
else:
text = "无可下载选项"
print(text)
index = input("请输入要选择的序号(Q/q退出):")
if index.upper() == "Q":
return
if index in area_info['selected']:
print("已下载,无法再继续下载,请重新选择!")
continue
group = area_info['total_dict'].get(index)
if not group:
print("序号不存在,请重新选择")
continue
if type(group) == tuple:
title, url = group
else:
title, url = group['title'], group['url']
file_path = "{}.{}".format(title, area_info['ext'])
download(file_path, url)
area_info['selected'].add(index)
print("欢迎使用xxx系统")
while True:
print("1.花瓣网图片专区;2.抖音短视频专区;3.NBA锦集 专区 ")
choice = input("请选择序号(Q/q退出):")
if choice.upper() == "Q":
break
# 选择序号: 去db中找对应的字典信息
area_dict = DB.get(choice)
if not area_dict:
print("输入错误,请重新选择!")
continue
# 进入专区(area_dict选择的专区信息)
handler(area_dict)
浙公网安备 33010602011771号