|
|
@@ -0,0 +1,62 @@
|
|
|
+#!/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)
|
|
|
+
|