Add files via upload
This commit is contained in:
		
							parent
							
								
									2077563b6f
								
							
						
					
					
						commit
						8f0bc18c8a
					
				
							
								
								
									
										183
									
								
								Changer.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								Changer.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,183 @@ | ||||
| import wx | ||||
| from glob import glob | ||||
| from os import remove, getcwd, mkdir | ||||
| from os.path import isfile, getsize, isdir | ||||
| from subprocess import Popen, CREATE_NEW_CONSOLE, DETACHED_PROCESS | ||||
| 
 | ||||
| ids = {} | ||||
| CONFIG = ".config" | ||||
| HISTORY = ".history" | ||||
| DESIGN = { | ||||
|     "Interval Text":        (10, 13), | ||||
|     "Interval":             (10, 30), | ||||
|     "Save":                 (11, 63), | ||||
|     "Hidden":               (10, 93), | ||||
|     "Safe Mode":     (10, 123), | ||||
|     "Clear Cache":          (10, 150), | ||||
|     "Cache Information":    (120,153), | ||||
|     "Clear History":        (10, 180), | ||||
|     "History Information":  (120,183), | ||||
|     "Refresh":              (10, 210), | ||||
|     "Start":                (10, 240) | ||||
| } | ||||
| 
 | ||||
| def integrity_check(): | ||||
|     for i in [1]: | ||||
|         if not isfile(CONFIG): | ||||
|             pass | ||||
|         elif len(open(CONFIG, "r").read().split()) < 4: | ||||
|             pass | ||||
|         else: | ||||
|             break | ||||
|         open(CONFIG, "w").write("600\n1\n0\n1") | ||||
|         print(CONFIG + " is missing") | ||||
|         print("generating " + CONFIG + " with default value of\n   Interval = 600 seconds\n   Save Wallpapers = True\n   Start Hidden = False\n   Approximate Time = True") | ||||
|     if not isfile(HISTORY): | ||||
|         open(HISTORY, "w").write("") | ||||
|         print(HISTORY + " is missing") | ||||
|         print("generating " + HISTORY) | ||||
|     if not isdir(".\\Images"): | ||||
|         mkdir(".\\Images") | ||||
|         print(getcwd() + "\\Images is missing") | ||||
|         print("generating " + getcwd() + ".\\Images") | ||||
| 
 | ||||
| class ChangerUI(wx.Frame): | ||||
| 
 | ||||
|     def __init__(self, *args, **kw): | ||||
|         super(ChangerUI, self).__init__(*args, **kw) | ||||
| 
 | ||||
|         self.InitUI() | ||||
| 
 | ||||
|     def InitUI(self): | ||||
|          | ||||
|         self.itxt = wx.StaticText(self, pos=DESIGN["Interval Text"], label="Interval:") | ||||
| 
 | ||||
|         self.Intl = wx.TextCtrl(self, pos=DESIGN["Interval"], style=wx.TE_PROCESS_ENTER, size=(100, 24)) | ||||
|         self.Intl.SetValue(open(CONFIG, "r").read().split()[0]) | ||||
|         ids[self.Intl.GetId()] = "Interval" | ||||
| 
 | ||||
|         self.Save = wx.CheckBox(self, pos=DESIGN["Save"], label="Save Wallpapers") | ||||
|         ids[self.Save.GetId()] = "Save" | ||||
|         self.Save.SetValue(int(open(CONFIG, "r").read().split()[1])) | ||||
| 
 | ||||
|         self.Hd = wx.CheckBox(self, pos=DESIGN["Hidden"], label="Start Hidden") | ||||
|         ids[self.Hd.GetId()] = "Hidden" | ||||
|         self.Hd.SetValue(int(open(CONFIG, "r").read().split()[2])) | ||||
| 
 | ||||
|         self.Ap = wx.CheckBox(self, pos=DESIGN["Safe Mode"], label="Safe Mode") | ||||
|         ids[self.Ap.GetId()] = "Safe" | ||||
|         self.Ap.SetValue(int(open(CONFIG, "r").read().split()[3])) | ||||
| 
 | ||||
|         self.cl = wx.Button(self, label="Clear Cache", pos=DESIGN["Clear Cache"], size=(100, 28)) | ||||
|         ids[self.cl.GetId()] = "Clear Cache" | ||||
|         self.clh = wx.Button(self, label="Clear History", pos=DESIGN["Clear History"], size=(100, 28)) | ||||
|         ids[self.clh.GetId()] = "Clear History" | ||||
|         self.st = wx.Button(self, label="Start", pos=DESIGN["Start"], size=(100, 28)) | ||||
|         ids[self.st.GetId()] = "Start" | ||||
|         self.rf = wx.Button(self, label="Refresh", pos=DESIGN["Refresh"], size=(100, 28)) | ||||
|         ids[self.rf.GetId()] = "Refresh" | ||||
| 
 | ||||
|         self.cinf = wx.StaticText( self, | ||||
|                                     label= str(int(sum([getsize(i) for i in glob("./Images/*.*")]) / 1024 / 10.24) / 100) + " MB, " + str(len(glob("./Images/*.*"))) + " Files",  | ||||
|                                     pos=DESIGN["Cache Information"]) | ||||
|         ids[self.cinf.GetId()] = "Cache Information" | ||||
|         self.hinf = wx.StaticText( self, | ||||
|                                     label= str(len(open(HISTORY, "r").read().split())) + " Entries",  | ||||
|                                     pos=DESIGN["History Information"]) | ||||
|         ids[self.hinf.GetId()] = "History Information" | ||||
|          | ||||
|         self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter) | ||||
|         self.Bind(wx.EVT_BUTTON, self.OnPress) | ||||
|         self.Bind(wx.EVT_CHECKBOX, self.OnPress) | ||||
|         self.Bind(wx.EVT_FSWATCHER, self.DirChanged) | ||||
| 
 | ||||
|         self.SetSize((self.cinf.GetSize().x + 140, DESIGN["Start"][1] + 70)) | ||||
|         self.SetTitle('Changer') | ||||
|         self.Centre() | ||||
| 
 | ||||
|     def DirChanged(self, e): | ||||
|         self.cinf.SetLabel(str(int(sum([getsize(i) for i in glob("./Images/*.*")]) / 1024 / 10.24) / 100) + " MB, " + str(len(glob("./Images/*.*"))) + " Files") | ||||
| 
 | ||||
|     def OnEnter(self, e): | ||||
| 
 | ||||
|         if ids[e.GetId()] == "Interval": | ||||
|             try: | ||||
|                 float(self.Intl.GetValue()) | ||||
|                 fr = open(CONFIG, "r") | ||||
|                 c = fr.read().split() | ||||
|                 fr.close() | ||||
|                 fw = open(CONFIG, "w") | ||||
|                 c[0] = self.Intl.GetValue() | ||||
|                 fw.write("\n".join(c)) | ||||
|                 fw.close() | ||||
|             except: | ||||
|                 print("Invalid Value!") | ||||
|                 self.Intl.SetValue(open(CONFIG, "r").read().split()[0]) | ||||
| 
 | ||||
|     def OnPress(self, e): | ||||
|         if ids[e.GetId()] == "Clear Cache": | ||||
|             for i in [i for i in glob("./Images/*.*") if i.split(".")[-1] in ["jpg", "jpeg", "png"]]: | ||||
|                 remove(i) | ||||
|             self.cinf.SetLabel(str(int(sum([getsize(i) for i in glob("./Images/*.*")]) / 1024 / 10.24) / 100) + " MB, " + str(len(glob("./Images/*.*"))) + " Files") | ||||
|             self.SetSize((self.cinf.GetSize().x + 140, DESIGN["Start"][1] + 70)) | ||||
| 
 | ||||
|         if ids[e.GetId()] == "Clear History": | ||||
|             open(".history", "w").write("") | ||||
|             self.hinf.SetLabel(str(len(open(HISTORY, "r").read().split())) + " Entries") | ||||
| 
 | ||||
|         if ids[e.GetId()] == "Save": | ||||
|             fr = open(CONFIG, "r") | ||||
|             c = fr.read().split() | ||||
|             fr.close() | ||||
|             fw = open(CONFIG, "w") | ||||
|             c[1] = str(int(self.Save.GetValue())) | ||||
|             fw.write("\n".join(c)) | ||||
|             fw.close() | ||||
|          | ||||
|         if ids[e.GetId()] == "Hidden": | ||||
|             fr = open(CONFIG, "r") | ||||
|             c = fr.read().split() | ||||
|             fr.close() | ||||
|             fw = open(CONFIG, "w") | ||||
|             c[2] = str(int(self.Hd.GetValue())) | ||||
|             fw.write("\n".join(c)) | ||||
|             fw.close() | ||||
|          | ||||
|         if ids[e.GetId()] == "Safe": | ||||
|             fr = open(CONFIG, "r") | ||||
|             c = fr.read().split() | ||||
|             fr.close() | ||||
|             fw = open(CONFIG, "w") | ||||
|             c[3] = str(int(self.Ap.GetValue())) | ||||
|             fw.write("\n".join(c)) | ||||
|             fw.close() | ||||
|          | ||||
|         if ids[e.GetId()] == "Start": | ||||
|             if int(open(CONFIG, "r").read().split()[2]): | ||||
|                 Popen(["wrapper.exe"], shell=True, creationflags=CREATE_NEW_CONSOLE) | ||||
|             else: | ||||
|                 Popen(["wrapper.exe"], shell=True, creationflags=DETACHED_PROCESS) | ||||
| 
 | ||||
|         if ids[e.GetId()] == "Refresh": | ||||
|             integrity_check() | ||||
|             self.hinf.SetLabel(str(len(open(HISTORY, "r").read().split())) + " Entries") | ||||
|             self.cinf.SetLabel(str(int(sum([getsize(i) for i in glob("./Images/*.*")]) / 1024 / 10.24) / 100) + " MB, " + str(len(glob("./Images/*.*"))) + " Files") | ||||
|             self.SetSize((self.cinf.GetSize().x + 140, DESIGN["Start"][1] + 70)) | ||||
|             self.Intl.SetValue(open(CONFIG, "r").read().split()[0]) | ||||
|             self.Save.SetValue(int(open(CONFIG, "r").read().split()[1])) | ||||
|             self.Hd.SetValue(int(open(CONFIG, "r").read().split()[2])) | ||||
|             self.Ap.SetValue(int(open(CONFIG, "r").read().split()[3])) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def main(): | ||||
| 
 | ||||
|     integrity_check() | ||||
|     app = wx.App() | ||||
|     cu = ChangerUI(None) | ||||
|     cu.Show() | ||||
|     app.MainLoop() | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main()  | ||||
							
								
								
									
										118
									
								
								backend.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								backend.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | ||||
| from ctypes import windll | ||||
| from praw import Reddit | ||||
| from glob import glob | ||||
| from time import sleep | ||||
| from time import time | ||||
| from urllib.request import urlretrieve | ||||
| from os import getcwd, remove, system | ||||
| import progressbar | ||||
| import urllib.request | ||||
| from imgur_downloader import ImgurDownloader | ||||
| import _thread | ||||
| from subprocess import Popen, CREATE_NEW_CONSOLE | ||||
| 
 | ||||
| CONFIG = ".config" | ||||
| CLIENT = ".client" | ||||
| intrvl = float(open(CONFIG, "r").read().split()[0]) | ||||
| imgpath = "" | ||||
| start = time() | ||||
| client = open(CLIENT, "r").read().split() | ||||
| 
 | ||||
| class NoImage(Exception): | ||||
|     pass | ||||
| 
 | ||||
| reddit = Reddit(client_id=client[0], | ||||
|                 client_secret=client[1], | ||||
|                 user_agent='Wallpaper changer by u/Surferlul') | ||||
| 
 | ||||
| class MyProgressBar(): | ||||
|     def __init__(self): | ||||
|         self.pbar = None | ||||
| 
 | ||||
|     def __call__(self, block_num, block_size, total_size): | ||||
|         if not self.pbar: | ||||
|             self.pbar=progressbar.ProgressBar(maxval=total_size) | ||||
|             self.pbar.start() | ||||
| 
 | ||||
|         downloaded = block_num * block_size | ||||
|         if downloaded < total_size: | ||||
|             self.pbar.update(downloaded) | ||||
|         else: | ||||
|             self.pbar.finish() | ||||
| 
 | ||||
| def del_file(path, Seconds=10): | ||||
|     Popen("powershell.exe Sleep(" + str(Seconds) + "); Remove-Item .\\Images\\" + path, shell=True, creationflags=CREATE_NEW_CONSOLE) | ||||
|     # global intrvl | ||||
|     # if int(open(CONFIG, "r").read().split()[2]): | ||||
|         # _thread.start_new_thread ( system, tuple(["powershell -WindowStyle Hidden \"Sleep(" + str(Seconds) + "); Remove-Item .\\Images\\" + path + "\""])) | ||||
|     # else: | ||||
|         # if int(open(CONFIG, "r").read().split()[3]): | ||||
|             # if intrvl < 3: | ||||
|                 # intrvl = 3 | ||||
|         # else: | ||||
|             # _thread.start_new_thread ( system, tuple(["start powershell -WindowStyle Hidden \"Sleep(" + str(Seconds) + "); Remove-Item .\\Images\\" + path  + "\""])) | ||||
| 
 | ||||
| posts = open(".history", "r").read() | ||||
| for i in reddit.subreddit("wallpaper").hot(limit = 1000): | ||||
|     if i.url not in posts: | ||||
|         submission = i | ||||
|         break | ||||
| 
 | ||||
| open(".history", "a").write(submission.url + "\n") | ||||
| try: | ||||
|     if "imgur" in submission.url: | ||||
|         if submission.url.split("/")[-1].split(".")[-1] not in ["jpg", "jpeg", "png"]: | ||||
|             print("Downoading", submission.url) | ||||
|         else: | ||||
|             print("Downoading", submission.url, "as", submission.url.split("\\")[-1]) | ||||
|         ImgurDownloader( | ||||
|         submission.url, | ||||
|         "./Images/", | ||||
|         file_name=submission.url.split("/")[-1] | ||||
|             if submission.url.split("/")[-1].split(".")[-1] not in ["jpg", "jpeg", "png"]  | ||||
|             else submission.url.split("/")[-1].split(".")[0] | ||||
|         ).save_images() | ||||
|         if submission.url.split("/")[-1].split(".")[-1] not in ["jpg", "jpeg", "png"]: | ||||
|             windll.user32.SystemParametersInfoW(20, 0, getcwd() + "\\" + glob("./Images/" + submission.url.split("/")[-1] + ".*")[0], 0) | ||||
|             if not int(open(CONFIG, "r").read().split()[1]): | ||||
|                 del_file(glob(submission.url.split("/")[-1] + ".*")[0]) | ||||
|         else: | ||||
|             windll.user32.SystemParametersInfoW(20, 0, getcwd() + "\\Images\\" + submission.url.split("/")[-1] , 0) | ||||
|             if not int(open(CONFIG, "r").read().split()[1]): | ||||
|                 del_file(submission.url.split("/")[-1]) | ||||
|     else: | ||||
|         if submission.url.split("/")[-1].split(".")[-1] not in ["jpg", "jpeg", "png"]: | ||||
|             raise NoImage | ||||
|         imgpath = "Images\\" + submission.url.split("/")[-1] | ||||
|         print("Downoading", submission.url, "as", submission.url.split("\\")[-1]) | ||||
|         urlretrieve(submission.url, imgpath, MyProgressBar()) | ||||
|         windll.user32.SystemParametersInfoW(20, 0, getcwd() + "\\" + imgpath, 0) | ||||
|         if not int(open(CONFIG, "r").read().split()[1]): | ||||
|             del_file(submission.url.split("/")[-1]) | ||||
| 
 | ||||
|     end = time() | ||||
| 
 | ||||
|     intrvl += start - end | ||||
|     if intrvl >= 0: | ||||
|         pbar = progressbar.ProgressBar(maxval=intrvl) | ||||
|         pbar.start() | ||||
|         if intrvl < 10: | ||||
|             for i in range(1, int(intrvl * 10) + 1): | ||||
|                 sleep(intrvl / int(intrvl * 10)) | ||||
|                 try: | ||||
|                     pbar.update(intrvl / int(intrvl * 10) * i) | ||||
|                 except: | ||||
|                     pbar.update(int(intrvl)) | ||||
|                     print("test") | ||||
|         else: | ||||
|             for i in range(1, 101): | ||||
|                 sleep(intrvl / 100) | ||||
|                 pbar.update(intrvl / 100 * i) | ||||
|         pbar.finish() | ||||
|     elif int(open(CONFIG, "r").read().split()[3]): | ||||
|         intrvl -= 2 * (start - end) | ||||
|         print("Interval was rounded up to " + str(round(intrvl * 100) / 100) + "s because the download needed longer than the interval.") | ||||
| except NoImage: | ||||
|     print("Error: Url doesn't point to an Image") | ||||
| except Exception as E: | ||||
|     print("Error: " + type(E).__name__) | ||||
							
								
								
									
										15
									
								
								build.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								build.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| from subprocess import call | ||||
| from shutil import rmtree | ||||
| from os.path import isdir | ||||
| if isdir(".\\build"):   | ||||
|     rmtree(".\\build") | ||||
| call("python3 setup.py build", shell=True) | ||||
| print( | ||||
| """ | ||||
| 
 | ||||
| ________________________________ | ||||
| BUILD FINISHED | ||||
| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | ||||
| """ | ||||
| ) | ||||
| input() | ||||
							
								
								
									
										21
									
								
								setup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								setup.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| from cx_Freeze import setup, Executable | ||||
| 
 | ||||
| base = None     | ||||
| 
 | ||||
| executables = [Executable("backend.py", base=base), Executable("wrapper.py", base=base), Executable("Changer.py", base=base)] | ||||
| 
 | ||||
| packages = ["idna", "os", "ctypes", "praw", "glob", "time", "urllib", "progressbar", "imgur_downloader", "wx", "subprocess", "_thread"] | ||||
| options = { | ||||
|     'build_exe': { | ||||
|         'build_exe': '.\\build', | ||||
|         'packages':packages, | ||||
|     },     | ||||
| } | ||||
| 
 | ||||
| setup( | ||||
|     name = "Changer", | ||||
|     options = options, | ||||
|     version = "1.1", | ||||
|     description = 'Wallpaper changer by u/Surferlul', | ||||
|     executables = executables | ||||
| ) | ||||
							
								
								
									
										40
									
								
								wrapper.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								wrapper.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| from os import mkdir, getcwd | ||||
| from os.path import isfile, isdir | ||||
| from subprocess import Popen, call | ||||
| from time import sleep | ||||
| 
 | ||||
| CONFIG = ".config" | ||||
| HISTORY = ".history" | ||||
| 
 | ||||
| def integrity_check(): | ||||
|     for i in [1]: | ||||
|         if not isfile(CONFIG): | ||||
|             pass | ||||
|         elif len(open(CONFIG, "r").read().split()) < 4: | ||||
|             pass | ||||
|         else: | ||||
|             break | ||||
|         open(CONFIG, "w").write("600\n1\n0\n1") | ||||
|         print(CONFIG + " is missing") | ||||
|         print("generating " + CONFIG + " with default value of\n   Interval = 600 seconds\n   Save Wallpapers = True\n   Start Hidden = False\n   Approximate Time = True") | ||||
|     if not isfile(HISTORY): | ||||
|         open(HISTORY, "w").write("") | ||||
|         print(HISTORY + " is missing") | ||||
|         print("generating " + HISTORY) | ||||
|     if not isdir(".\\Images"): | ||||
|         mkdir(".\\Images") | ||||
|         print(getcwd() + "\\Images is missing") | ||||
|         print("generating " + getcwd() + ".\\Images") | ||||
| 
 | ||||
| while True: | ||||
|     try: | ||||
|         integrity_check() | ||||
|         if int(open(CONFIG, "r").read().split()[3]): | ||||
|             call(["backend.exe"], shell=True) | ||||
|         else: | ||||
|             Popen(["backend.exe"], shell=True) | ||||
|             sleep(float(open(CONFIG, "r").read().split()[0])) | ||||
|     except Exception as E: | ||||
|         print("Error: " + type(E).__name__) | ||||
|         if type(E).__name__ == "KeyboardInterrupt": | ||||
|             break | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user