mirror of
				https://github.com/robweber/xbmcbackup.git
				synced 2025-11-03 19:02:14 +01:00 
			
		
		
		
	@@ -100,4 +100,5 @@
 | 
				
			|||||||
	<string id="30106">is authorized</string>
 | 
						<string id="30106">is authorized</string>
 | 
				
			||||||
	<string id="30107">error authorizing</string>
 | 
						<string id="30107">error authorizing</string>
 | 
				
			||||||
	<string id="30108">Visit https://console.developers.google.com/</string>
 | 
						<string id="30108">Visit https://console.developers.google.com/</string>
 | 
				
			||||||
 | 
						<string id="30109">Run on startup if missed</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,6 +36,7 @@
 | 
				
			|||||||
		<setting id="schedule_time" type="labelenum" label="30062" values="00:00|01:00|02:00|03:00|04:00|05:00|06:00|07:00|08:00|09:00|10:00|11:00|12:00|13:00|14:00|15:00|16:00|17:00|18:00|19:00|20:00|21:00|22:00|23:00" default="00:00" visible="!eq(-1,4)"  enable="eq(-2,true)"/>
 | 
							<setting id="schedule_time" type="labelenum" label="30062" values="00:00|01:00|02:00|03:00|04:00|05:00|06:00|07:00|08:00|09:00|10:00|11:00|12:00|13:00|14:00|15:00|16:00|17:00|18:00|19:00|20:00|21:00|22:00|23:00" default="00:00" visible="!eq(-1,4)"  enable="eq(-2,true)"/>
 | 
				
			||||||
		<setting id="day_of_week" type="enum" label="30063" lvalues="30065|30066|30067|30068|30069|30070|30071" default="0" visible="eq(-2,2)"  enable="eq(-3,true)"/>
 | 
							<setting id="day_of_week" type="enum" label="30063" lvalues="30065|30066|30067|30068|30069|30070|30071" default="0" visible="eq(-2,2)"  enable="eq(-3,true)"/>
 | 
				
			||||||
		<setting id="cron_schedule" type="text" label="30064" default="0 0 * * *" visible="eq(-3,4)"  enable="eq(-4,true)"/>
 | 
							<setting id="cron_schedule" type="text" label="30064" default="0 0 * * *" visible="eq(-3,4)"  enable="eq(-4,true)"/>
 | 
				
			||||||
		<setting id="cron_shutdown" type="bool" label="30076" default="false" enable="eq(-5,true)" />
 | 
							<setting id="schedule_miss" type="bool" label="30109" default="false" enable="eq(-5,true)" />
 | 
				
			||||||
 | 
							<setting id="cron_shutdown" type="bool" label="30076" default="false" enable="eq(-6,true)" />
 | 
				
			||||||
	</category>
 | 
						</category>
 | 
				
			||||||
</settings>
 | 
					</settings>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										71
									
								
								scheduler.py
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								scheduler.py
									
									
									
									
									
								
							@@ -12,13 +12,38 @@ class BackupScheduler:
 | 
				
			|||||||
    monitor = None
 | 
					    monitor = None
 | 
				
			||||||
    enabled = "false"
 | 
					    enabled = "false"
 | 
				
			||||||
    next_run = 0
 | 
					    next_run = 0
 | 
				
			||||||
 | 
					    next_run_path = None
 | 
				
			||||||
    restore_point = None
 | 
					    restore_point = None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        self.monitor = UpdateMonitor(update_method = self.settingsChanged)
 | 
					        self.monitor = UpdateMonitor(update_method = self.settingsChanged)
 | 
				
			||||||
        self.enabled = utils.getSetting("enable_scheduler")
 | 
					        self.enabled = utils.getSetting("enable_scheduler")
 | 
				
			||||||
 | 
					        self.next_run_path = xbmc.translatePath(utils.data_dir()) + 'next_run.txt'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(self.enabled == "true"):
 | 
					        if(self.enabled == "true"):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(xbmcvfs.exists(self.next_run_path)):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                nr = 0
 | 
				
			||||||
 | 
					                fh = xbmcvfs.File(self.next_run_path)
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    #check if we saved a run time from the last run
 | 
				
			||||||
 | 
					                    nr = float(fh.read())
 | 
				
			||||||
 | 
					                except ValueError:
 | 
				
			||||||
 | 
					                    nr = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                fh.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            #if we missed and the user wants to play catch-up
 | 
				
			||||||
 | 
					            if(0 < nr <= time.time() and utils.getSetting('schedule_miss') == 'true'):
 | 
				
			||||||
 | 
					                utils.log("scheduled backup was missed, doing it now...")
 | 
				
			||||||
 | 
					                progress_mode = int(utils.getSetting('progress_mode'))
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                if(progress_mode == 0):
 | 
				
			||||||
 | 
					                    progress_mode = 1 # Kodi just started, don't block it with a foreground progress bar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                self.doScheduledBackup(progress_mode)
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
            self.setup()
 | 
					            self.setup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def setup(self):
 | 
					    def setup(self):
 | 
				
			||||||
@@ -46,25 +71,7 @@ class BackupScheduler:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if(self.next_run <= now):
 | 
					                if(self.next_run <= now):
 | 
				
			||||||
                    progress_mode = int(utils.getSetting('progress_mode'))
 | 
					                    progress_mode = int(utils.getSetting('progress_mode'))
 | 
				
			||||||
                    if(progress_mode != 2):
 | 
					                    self.doScheduledBackup(progress_mode)
 | 
				
			||||||
                        utils.showNotification(utils.getString(30053))
 | 
					 | 
				
			||||||
                    
 | 
					 | 
				
			||||||
                    backup = XbmcBackup()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if(backup.remoteConfigured()):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        if(int(utils.getSetting('progress_mode')) in [0,1]):
 | 
					 | 
				
			||||||
                            backup.run(XbmcBackup.Backup,True)
 | 
					 | 
				
			||||||
                        else:
 | 
					 | 
				
			||||||
                            backup.run(XbmcBackup.Backup,False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        #check if this is a "one-off"
 | 
					 | 
				
			||||||
                        if(int(utils.getSetting("schedule_interval")) == 0):
 | 
					 | 
				
			||||||
                            #disable the scheduler after this run
 | 
					 | 
				
			||||||
                            self.enabled = "false"
 | 
					 | 
				
			||||||
                            utils.setSetting('enable_scheduler','false')
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        utils.showNotification(utils.getString(30045))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    #check if we should shut the computer down
 | 
					                    #check if we should shut the computer down
 | 
				
			||||||
                    if(utils.getSetting("cron_shutdown") == 'true'):
 | 
					                    if(utils.getSetting("cron_shutdown") == 'true'):
 | 
				
			||||||
@@ -80,6 +87,27 @@ class BackupScheduler:
 | 
				
			|||||||
        #delete monitor to free up memory
 | 
					        #delete monitor to free up memory
 | 
				
			||||||
        del self.monitor
 | 
					        del self.monitor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def doScheduledBackup(self,progress_mode):
 | 
				
			||||||
 | 
					        if(progress_mode != 2):
 | 
				
			||||||
 | 
					            utils.showNotification(utils.getString(30053))
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        backup = XbmcBackup()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(backup.remoteConfigured()):
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if(int(utils.getSetting('progress_mode')) in [0,1]):
 | 
				
			||||||
 | 
					                backup.run(XbmcBackup.Backup,True)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                backup.run(XbmcBackup.Backup,False)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            #check if this is a "one-off"
 | 
				
			||||||
 | 
					            if(int(utils.getSetting("schedule_interval")) == 0):
 | 
				
			||||||
 | 
					                #disable the scheduler after this run
 | 
				
			||||||
 | 
					                self.enabled = "false"
 | 
				
			||||||
 | 
					                utils.setSetting('enable_scheduler','false')
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            utils.showNotification(utils.getString(30045))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def findNextRun(self,now):
 | 
					    def findNextRun(self,now):
 | 
				
			||||||
        progress_mode = int(utils.getSetting('progress_mode'))
 | 
					        progress_mode = int(utils.getSetting('progress_mode'))
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -93,6 +121,11 @@ class BackupScheduler:
 | 
				
			|||||||
            self.next_run = new_run_time
 | 
					            self.next_run = new_run_time
 | 
				
			||||||
            utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
 | 
					            utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            #write the next time to a file
 | 
				
			||||||
 | 
					            fh = xbmcvfs.File(self.next_run_path, 'w')
 | 
				
			||||||
 | 
					            fh.write(str(self.next_run))
 | 
				
			||||||
 | 
					            fh.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            #only show when not in silent mode
 | 
					            #only show when not in silent mode
 | 
				
			||||||
            if(progress_mode != 2):                        
 | 
					            if(progress_mode != 2):                        
 | 
				
			||||||
                utils.showNotification(utils.getString(30081) + " " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
 | 
					                utils.showNotification(utils.getString(30081) + " " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user