Naposledy aktivní 1701134026

doracoin revidoval tento gist 1701134026. Přejít na revizi

1 file changed, 23 insertions, 20 deletions

download-bing-py2.py

@@ -10,7 +10,8 @@ days = 30
10 10 # 超时时间
11 11 time_out = 10
12 12 # 是否下载全部可能支持的分辨率(大部分图片都有三个分辨率, 1920x1200, 1920x1080, 1366x768, 其中只有1920x1200有水印)
13 - all_px = True
13 + # 2023-11-28 发现图片分辨率新增了 UHD 版本,根据文件大小和分辨率来看可能是原图,具体什么时候新增的无法确定
14 + all_px = False
14 15 # 默认保存路径
15 16 down_dir = "." + os.path.sep + "bing_wallpaper"
16 17 # 接口地址
@@ -23,12 +24,12 @@ for i in range(0, len(sys.argv)):
23 24 else:
24 25 key = sys.argv[i]
25 26 value = sys.argv[i + 1]
26 - # print "key: %s, value: %s" % (key, value)
27 + # print ("key: %s, value: %s" % (key, value))
27 28 if ("-d" == key):
28 29 days = value
29 30 bingUrl = "".join(['http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=', str(days), '&mkt=zh-cn'])
30 31 if ("-t" == key):
31 - ime_out = int(value)
32 + time_out = int(value)
32 33 if ("-a" == key):
33 34 if ("yes" == str(value).lower() or "y" == str(value).lower()):
34 35 all_px = True
@@ -37,11 +38,11 @@ for i in range(0, len(sys.argv)):
37 38 if ("-p" == key):
38 39 down_dir = value
39 40 if (i < 2 and ("-h" == key or "-help" == key or "--help" == key)):
40 - print " -d (number) 指定查询的天数, 最多只能查询到当天和过去7天的"
41 - print " -t (number) 请求超时时间, 单位:秒"
42 - print " -a (y/n, Y/N) 是否尝试下载所有分辨率的图片, 默认 yes"
43 - print " -p (string) 指定图片保存路径, 注意你的系统的分隔符 '\\' or '/'"
44 - print " -h 显示帮助"
41 + print (" -d (number) 指定查询的天数, 最多只能查询到当天和过去7天的")
42 + print (" -t (number) 请求超时时间, 单位:秒")
43 + print (" -a (y/n, Y/N) 是否尝试下载所有分辨率的图片, 默认 yes")
44 + print (" -p (string) 指定图片保存路径, 注意你的系统的分隔符 '\\' or '/'")
45 + print (" -h 显示帮助")
45 46 exit(0)
46 47
47 48
@@ -53,14 +54,14 @@ def download_img(url):
53 54 fp = open(target_file_path, 'wb')
54 55 fp.write(img_data)
55 56 fp.close()
56 - print url, "图片下载成功"
57 + print (url, "图片下载成功")
57 58 else:
58 - print url, "该图片已存在,跳过"
59 + print (url, "该图片已存在,跳过")
59 60 except urllib2.URLError, e:
60 61 if isinstance(e, urllib2.HTTPError):
61 - print url, "该图片无法下载:", e.code, "" if e.reason == None else e.reason
62 + print (url, "该图片无法下载:", e.code, "" if e.reason == None else e.reason)
62 63 else:
63 - print url, "该图片无法下载", "" if e.reason == None else e.reason
64 + print (url, "该图片无法下载", "" if e.reason == None else e.reason)
64 65
65 66
66 67 def get_bing_wallpaper():
@@ -69,15 +70,17 @@ def get_bing_wallpaper():
69 70 req = urllib2.Request(bingUrl)
70 71 try:
71 72 res_data = urllib2.urlopen(req, timeout=time_out).read()
72 - print "请求壁纸信息成功,正在解析\n"
73 + print ("请求壁纸信息成功,正在解析\n")
73 74 except urllib2.URLError, e:
74 - print "查询接口失败,有可能是网络问题,或是Bing官方关闭了这个接口,请稍后重试", "" if e.reason == None else e.reason
75 + print ("查询接口失败,有可能是网络问题,或是Bing官方关闭了这个接口,请稍后重试", "" if e.reason == None else e.reason)
75 76 exit()
76 77 s = json.loads(res_data)
77 78 img_counts = len(s["images"])
78 79 for i in range(0, img_counts):
79 80 item = s["images"][i]["url"] # 默认1920x1080分辨率
80 81 item_base = s["images"][i]["urlbase"] # 图片baseurl,可以拼接分辨率
82 + # UHD
83 + download_img("http://www.bing.com" + item_base + "_UHD.jpg")
81 84 # 1920x1080
82 85 download_img("http://www.bing.com" + item_base + "_1920x1080.jpg")
83 86 if bool(all_px):
@@ -85,7 +88,7 @@ def get_bing_wallpaper():
85 88 download_img("http://www.bing.com" + item_base + "_1366x768.jpg")
86 89 # 1920x1200 (有水印)
87 90 download_img("http://www.bing.com" + item_base + "_1920x1200.jpg")
88 - print "\n"
91 + print ("\n")
89 92
90 93
91 94 def check_base_url(base_url):
@@ -94,10 +97,10 @@ def check_base_url(base_url):
94 97
95 98
96 99 if __name__ == '__main__':
97 - print "\nWelcome to use < Bing Wallpaper Downloader 1.0 >\n"
98 - print "文件将会被下载到: ", down_dir
99 - print "是否尝试多分辨率: ", "是" if all_px == True else "否"
100 - print "尝试查询天数: ", days, "\n"
100 + print ("\nWelcome to use < Bing Wallpaper Downloader 1.0 >\n")
101 + print ("文件将会被下载到: ", down_dir)
102 + print ("是否尝试多分辨率: ", "是" if all_px == True else "否")
103 + print ("尝试查询天数: ", days, "\n")
101 104
102 105 # 开始下载
103 - get_bing_wallpaper()
106 + get_bing_wallpaper()

doracoin revidoval tento gist 1699432774. Přejít na revizi

1 file changed, 103 insertions

download-bing-py2.py(vytvořil soubor)

@@ -0,0 +1,103 @@
1 + #!/usr/bin/env python
2 + # -*- coding: utf-8 -*-
3 + # Create By Doracoin
4 + # Github: https://github.com/doracoin
5 +
6 + import json, urllib2, os, sys
7 +
8 + # 要查询的天数(尽量写大点, 反正最多只能查询到当天和过去7天的)
9 + days = 30
10 + # 超时时间
11 + time_out = 10
12 + # 是否下载全部可能支持的分辨率(大部分图片都有三个分辨率, 1920x1200, 1920x1080, 1366x768, 其中只有1920x1200有水印)
13 + all_px = True
14 + # 默认保存路径
15 + down_dir = "." + os.path.sep + "bing_wallpaper"
16 + # 接口地址
17 + bingUrl = "".join(['http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=', str(days), '&mkt=zh-cn'])
18 +
19 + for i in range(0, len(sys.argv)):
20 + if (i == len(sys.argv) - 1):
21 + key = sys.argv[i]
22 + value = ""
23 + else:
24 + key = sys.argv[i]
25 + value = sys.argv[i + 1]
26 + # print "key: %s, value: %s" % (key, value)
27 + if ("-d" == key):
28 + days = value
29 + bingUrl = "".join(['http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=', str(days), '&mkt=zh-cn'])
30 + if ("-t" == key):
31 + ime_out = int(value)
32 + if ("-a" == key):
33 + if ("yes" == str(value).lower() or "y" == str(value).lower()):
34 + all_px = True
35 + else:
36 + all_px = False
37 + if ("-p" == key):
38 + down_dir = value
39 + if (i < 2 and ("-h" == key or "-help" == key or "--help" == key)):
40 + print " -d (number) 指定查询的天数, 最多只能查询到当天和过去7天的"
41 + print " -t (number) 请求超时时间, 单位:秒"
42 + print " -a (y/n, Y/N) 是否尝试下载所有分辨率的图片, 默认 yes"
43 + print " -p (string) 指定图片保存路径, 注意你的系统的分隔符 '\\' or '/'"
44 + print " -h 显示帮助"
45 + exit(0)
46 +
47 +
48 + def download_img(url):
49 + try:
50 + target_file_path = down_dir + os.path.sep + check_base_url(os.path.basename(url))
51 + if (os.path.exists(target_file_path) == False):
52 + img_data = urllib2.urlopen(urllib2.Request(url)).read()
53 + fp = open(target_file_path, 'wb')
54 + fp.write(img_data)
55 + fp.close()
56 + print url, "图片下载成功"
57 + else:
58 + print url, "该图片已存在,跳过"
59 + except urllib2.URLError, e:
60 + if isinstance(e, urllib2.HTTPError):
61 + print url, "该图片无法下载:", e.code, "" if e.reason == None else e.reason
62 + else:
63 + print url, "该图片无法下载", "" if e.reason == None else e.reason
64 +
65 +
66 + def get_bing_wallpaper():
67 + if (os.path.exists(down_dir) == False):
68 + os.makedirs(down_dir)
69 + req = urllib2.Request(bingUrl)
70 + try:
71 + res_data = urllib2.urlopen(req, timeout=time_out).read()
72 + print "请求壁纸信息成功,正在解析\n"
73 + except urllib2.URLError, e:
74 + print "查询接口失败,有可能是网络问题,或是Bing官方关闭了这个接口,请稍后重试", "" if e.reason == None else e.reason
75 + exit()
76 + s = json.loads(res_data)
77 + img_counts = len(s["images"])
78 + for i in range(0, img_counts):
79 + item = s["images"][i]["url"] # 默认1920x1080分辨率
80 + item_base = s["images"][i]["urlbase"] # 图片baseurl,可以拼接分辨率
81 + # 1920x1080
82 + download_img("http://www.bing.com" + item_base + "_1920x1080.jpg")
83 + if bool(all_px):
84 + # 1366x768
85 + download_img("http://www.bing.com" + item_base + "_1366x768.jpg")
86 + # 1920x1200 (有水印)
87 + download_img("http://www.bing.com" + item_base + "_1920x1200.jpg")
88 + print "\n"
89 +
90 +
91 + def check_base_url(base_url):
92 + base_url = base_url.replace('th?id=OHR.', '')
93 + return base_url
94 +
95 +
96 + if __name__ == '__main__':
97 + print "\nWelcome to use < Bing Wallpaper Downloader 1.0 >\n"
98 + print "文件将会被下载到: ", down_dir
99 + print "是否尝试多分辨率: ", "是" if all_px == True else "否"
100 + print "尝试查询天数: ", days, "\n"
101 +
102 + # 开始下载
103 + get_bing_wallpaper()
Novější Starší