|
|
@@ -9,24 +9,25 @@ import urllib3
|
|
|
import anyjson
|
|
|
|
|
|
class BingWallpaperChanger:
|
|
|
- def __init__(self, saveDir, wallpaperCmd):
|
|
|
+ def __init__(self, saveDir, wallpaperCmd, locale):
|
|
|
self.saveDir = saveDir
|
|
|
self.savePath = saveDir +"/wallpaper"
|
|
|
self.wallpaperCmd = wallpaperCmd.replace("$PATH", self.savePath)
|
|
|
+ self.locale = locale
|
|
|
self.lastUrl = None
|
|
|
+ self.http = urllib3.PoolManager(
|
|
|
+ cert_reqs='CERT_REQUIRED',
|
|
|
+ ca_certs=certifi.where())
|
|
|
|
|
|
def setWallpaper(self):
|
|
|
print("Setting new wallpaper")
|
|
|
os.system(self.wallpaperCmd)
|
|
|
|
|
|
def updateLatest(self):
|
|
|
- http = urllib3.PoolManager(
|
|
|
- cert_reqs='CERT_REQUIRED',
|
|
|
- ca_certs=certifi.where())
|
|
|
- jsonReq = http.request('GET', 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US')
|
|
|
+ jsonReq = self.http.request('GET', 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=' +self.locale, retries=False)
|
|
|
if jsonReq.status != 200:
|
|
|
print("bing.com not responding")
|
|
|
- exit()
|
|
|
+ return None
|
|
|
json = anyjson.deserialize(jsonReq.data.decode("utf-8"))
|
|
|
|
|
|
for img in json["images"]:
|
|
|
@@ -35,26 +36,35 @@ class BingWallpaperChanger:
|
|
|
os.makedirs(self.savePath)
|
|
|
except FileExistsError:
|
|
|
pass
|
|
|
- with http.request('GET', "https://www.bing.com/" +img["url"], preload_content=False) as r, open(self.savePath, 'wb') as outFile:
|
|
|
+ with self.http.request('GET', "https://www.bing.com/" +img["url"], preload_content=False, retries=False) as r, open(self.savePath, 'wb') as outFile:
|
|
|
shutil.copyfileobj(r, outFile)
|
|
|
self.lastUrl = img["url"]
|
|
|
return True
|
|
|
- return False
|
|
|
+ return None
|
|
|
return False
|
|
|
|
|
|
def run(self, delay):
|
|
|
while True:
|
|
|
- if self.updateLatest():
|
|
|
+ updated = None
|
|
|
+ try:
|
|
|
+ updated = self.updateLatest()
|
|
|
+ except urllib3.exceptions.NewConnectionError:
|
|
|
+ pass
|
|
|
+ if updated == True:
|
|
|
self.setWallpaper()
|
|
|
- sleep(delay)
|
|
|
+ if updated == None:
|
|
|
+ sleep(30) # Network error
|
|
|
+ else:
|
|
|
+ sleep(delay)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
parser = argparse.ArgumentParser()
|
|
|
parser.add_argument("--delay", default=30)
|
|
|
parser.add_argument("--saveDir", default=os.environ["HOME"] +"/.local/share/bing")
|
|
|
+ parser.add_argument("--country", default="en-US")
|
|
|
parser.add_argument("--wallpaperCmd", default="gsettings set org.gnome.desktop.background picture-uri file://$PATH")
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
- wallpaperChanger = BingWallpaperChanger(args.saveDir, args.wallpaperCmd)
|
|
|
+ wallpaperChanger = BingWallpaperChanger(args.saveDir, args.wallpaperCmd, args.country)
|
|
|
wallpaperChanger.run(int(args.delay) * 60)
|
|
|
|