#!/bin/python from datetime import datetime from time import sleep import argparse import os import shutil import certifi import urllib3 import anyjson class BingWallpaperChanger: def __init__(self, saveDir, wallpaperCmd): self.saveDir = saveDir self.savePath = saveDir +"/wallpaper" self.wallpaperCmd = wallpaperCmd.replace("$PATH", self.savePath) self.lastUrl = None def setWallpaper(self): print("Setting new wallpaper") os.system(self.wallpaperCmd) def updateLatest(self): print("test") 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') if jsonReq.status != 200: print("bing.com not responding") exit() json = anyjson.deserialize(jsonReq.data.decode("utf-8")) for img in json["images"]: if img["url"] != self.lastUrl: try: 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: shutil.copyfileobj(r, outFile) self.lastUrl = img["url"] return True return False return False def run(self, delay): while True: if self.updateLatest(): self.setWallpaper() 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("--wallpaperCmd", default="gsettings set org.gnome.desktop.background picture-uri file://$PATH") args = parser.parse_args() wallpaperChanger = BingWallpaperChanger(args.saveDir, args.wallpaperCmd) wallpaperChanger.run(int(args.delay) * 60)