获取必应背景图片的 Python 小程序。
源码
#!/usr/bin/env python3
def get_url():
# 引入模块
import requests
# 原始地址
short_url = "https://www.bing.com/HPImageArchive.aspx"
# 内置变量
idx = "0" # 今日 0 昨天 1 前天 2 (最大值为 7)
mkt = "en-US" # 英文
# 获取
response = requests.get(
url=short_url, params={
'format': 'js',
'idx': idx,
'n': "1",
'mkt': mkt
})
# 返回检查
if response.status_code == requests.codes.ok:
global data_title
global data_copyright
data = response.json()
data_url = data["images"][0]["url"]
data_copyright = data["images"][0]["copyright"]
data_title = data["images"][0]["title"]
data_time = data["images"][0]["startdate"]
global dir_y
global dir_m
global dir_d
dir_y = data_time[0:4]
dir_m = data_time[4:6]
dir_d = data_time[6:8]
global real_url
global pic_name
# 返回值类型检查
if data_url.startswith("/th?id"):
pic_name = data_url.split('.')[1] + ".jpg"
else:
pic_name = data_url
# 拼接真实链接
real_url = "https://www.bing.com" + data_url
else:
response.raise_for_status()
def mk_dir(path):
# 引入模块
import os
# 去除首位空格
path = path.strip()
# 去除尾部 \ 符号
path = path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
is_exists = os.path.exists(path)
# 判断结果
if not is_exists:
# 如果不存在则创建目录
os.makedirs(path)
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print('"' + path + '"' + ' Already exists.')
return False
def down_file(path):
# 引入模块
import urllib.request
import os
# 判断文件是否存在
file_name = os.path.basename(pic_name)
is_exists = os.path.exists(file_name)
if not is_exists:
# 如果不存在则下载
print(file_name + ' Download Success!')
# 下载传入路径
f = urllib.request.urlopen(path)
data = f.read()
with open(pic_name, "wb") as code:
code.write(data)
return True
else:
# 如果存在则不下载,并提示已存在
print('"' + file_name + '"' + ' Already exists.')
return False
def readme_file(path):
# 引入模块
import os
# 判断文件是否存在
file_name = path
is_exists = os.path.exists(file_name)
if not is_exists:
# 如果不存在则写入文件
f = open(path, 'w')
f.write("#" + " " + str(data_title) + "\n" + "##" + " " + str(data_copyright))
f.close()
print(file_name + ' Write Success!')
return True
else:
# 如果存在则判断文件大小
readme_size = os.path.getsize(path)
if readme_size > 0 :
# 如果不为空就报错
print(file_name + ' Already exists.')
else:
# 如果为空就删除重新下载
os.remove(path)
f = open(path, 'w')
f.write("#" + " " + str(data_title) + "\n" + "##" + " " + str(data_copyright))
f.close()
print(file_name + ' Error, Rewrite Success!')
return False
def ch_dir(path):
# 引入模块
import os
# 当前目录
# current_path = os.getcwd()
# 切换目录
os.chdir(path)
# 获取JSON
get_url()
# 定义要创建的目录
target_dir = "Download/" + dir_y + "/" + dir_m + "/" + dir_d
# 创建工作目录
mk_dir(target_dir)
# 切换工作目录
ch_dir(target_dir)
# 下载壁纸
down_file(real_url)
# 写入文本
readme_file('README.md')
小贴士:mkt 参数表明获取的区域,由于必应存在大陆版和国际版,因此图片在部分传统节日时可能会不同。
多言
经过实际使用发现,获取的图片的区域和使用的IP地址有关,中国大陆、香港地址会获取中国市场图片,其他国家和地区的无影响。
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2019-04-26 14:28 PM