isundil 8 жил өмнө
parent
commit
ecf311283e
1 өөрчлөгдсөн 21 нэмэгдсэн , 11 устгасан
  1. 21 11
      bingUpdateWallpaper

+ 21 - 11
bingUpdateWallpaper

@@ -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)