Added a parent_input that can be used for constructing the move path to a different path than the destination path. Also moved from using os.move to shutil.move for cross filesystem support. Also removed owner renaming.
This commit is contained in:
		@@ -8,6 +8,7 @@
 | 
				
			|||||||
import sys, sqlite3, json, os.path
 | 
					import sys, sqlite3, json, os.path
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
import env_variables as env
 | 
					import env_variables as env
 | 
				
			||||||
 | 
					import shutil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class episode(object):
 | 
					class episode(object):
 | 
				
			||||||
	def __init__(self, id):
 | 
						def __init__(self, id):
 | 
				
			||||||
@@ -28,7 +29,7 @@ class episode(object):
 | 
				
			|||||||
		c.close()
 | 
							c.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		self.queries = {
 | 
							self.queries = {
 | 
				
			||||||
			'parent': [env.show_dir, self.parent],
 | 
								'parent_input': [env.input_dir, self.parent],
 | 
				
			||||||
			'season': [env.show_dir, self.name, self.name + ' Season ' + "%02d" % self.season],
 | 
								'season': [env.show_dir, self.name, self.name + ' Season ' + "%02d" % self.season],
 | 
				
			||||||
			'episode': [env.show_dir, self.name, self.name + ' Season ' + "%02d" % self.season, \
 | 
								'episode': [env.show_dir, self.name, self.name + ' Season ' + "%02d" % self.season, \
 | 
				
			||||||
				self.name + ' S' + "%02d" % self.season + 'E' + "%02d" % self.episode],
 | 
									self.name + ' S' + "%02d" % self.season + 'E' + "%02d" % self.episode],
 | 
				
			||||||
@@ -36,6 +37,7 @@ class episode(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	def typeDir(self, dType, create=False, mergeItem=None):
 | 
						def typeDir(self, dType, create=False, mergeItem=None):
 | 
				
			||||||
		url = '/'.join(self.queries[dType])
 | 
							url = '/'.join(self.queries[dType])
 | 
				
			||||||
 | 
							print(url)
 | 
				
			||||||
		if create and not os.path.isdir(url):
 | 
							if create and not os.path.isdir(url):
 | 
				
			||||||
			os.makedirs(url)
 | 
								os.makedirs(url)
 | 
				
			||||||
			fix_ownership(url)
 | 
								fix_ownership(url)
 | 
				
			||||||
@@ -45,35 +47,36 @@ class episode(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def fix_ownership(path):
 | 
					def fix_ownership(path):
 | 
				
			||||||
 | 
						pass
 | 
				
			||||||
	# TODO find this from username from config
 | 
						# TODO find this from username from config
 | 
				
			||||||
	uid = 1000
 | 
						# uid = 1000
 | 
				
			||||||
	gid = 113
 | 
						# gid = 112
 | 
				
			||||||
	os.chown(path, uid, gid)
 | 
						# os.chown(path, uid, gid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def moveStray(strayId):
 | 
					def moveStray(strayId):
 | 
				
			||||||
	ep = episode(strayId)
 | 
						ep = episode(strayId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for item in ep.video_files:
 | 
						for item in ep.video_files:
 | 
				
			||||||
		try: 
 | 
							try: 
 | 
				
			||||||
			old_dir = ep.typeDir('parent', mergeItem=item[0])
 | 
								old_dir = ep.typeDir('parent_input', mergeItem=item[0])
 | 
				
			||||||
			new_dir = ep.typeDir('episode', mergeItem=item[1], create=True)
 | 
								new_dir = ep.typeDir('episode', mergeItem=item[1], create=True)
 | 
				
			||||||
			os.rename(old_dir, new_dir)
 | 
								shutil.move(old_dir, new_dir)
 | 
				
			||||||
		except FileNotFoundError:
 | 
							except FileNotFoundError:
 | 
				
			||||||
			logging.warning(old_dir + ' does not exits, cannot be moved.')
 | 
								logging.warning(old_dir + ' does not exits, cannot be moved.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for item in ep.subtitles:
 | 
						for item in ep.subtitles:
 | 
				
			||||||
		try:
 | 
							try:
 | 
				
			||||||
			old_dir = ep.typeDir('parent', mergeItem=item[0])
 | 
								old_dir = ep.typeDir('parent_input', mergeItem=item[0])
 | 
				
			||||||
			new_dir = ep.typeDir('episode', mergeItem=item[1], create=True)
 | 
								new_dir = ep.typeDir('episode', mergeItem=item[1], create=True)
 | 
				
			||||||
			os.rename(old_dir, new_dir)
 | 
								shutil.move(old_dir, new_dir)
 | 
				
			||||||
		except FileNotFoundError:
 | 
							except FileNotFoundError:
 | 
				
			||||||
			logging.warning(old_dir + ' does not exits, cannot be moved.')
 | 
								logging.warning(old_dir + ' does not exits, cannot be moved.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for item in ep.trash:
 | 
						for item in ep.trash:
 | 
				
			||||||
		try:
 | 
							try:
 | 
				
			||||||
			os.remove(ep.typeDir('parent', mergeItem=item))
 | 
								os.remove(ep.typeDir('parent_input', mergeItem=item))
 | 
				
			||||||
		except FileNotFoundError:
 | 
							except FileNotFoundError:
 | 
				
			||||||
			logging.warning(ep.typeDir('parent', mergeItem=item) + 'does not exist, cannot be removed.')
 | 
								logging.warning(ep.typeDir('parent_input', mergeItem=item) + 'does not exist, cannot be removed.')
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	fix_ownership(ep.typeDir('episode'))
 | 
						fix_ownership(ep.typeDir('episode'))
 | 
				
			||||||
	for root, dirs, files in os.walk(ep.typeDir('episode')):  
 | 
						for root, dirs, files in os.walk(ep.typeDir('episode')):  
 | 
				
			||||||
@@ -84,9 +87,9 @@ def moveStray(strayId):
 | 
				
			|||||||
	# TODO because we might jump over same files, the dir might no longer 
 | 
						# TODO because we might jump over same files, the dir might no longer 
 | 
				
			||||||
	# be empty and cannot remove dir like this.
 | 
						# be empty and cannot remove dir like this.
 | 
				
			||||||
	try: 
 | 
						try: 
 | 
				
			||||||
		os.rmdir(ep.typeDir('parent'))
 | 
							os.rmdir(ep.typeDir('parent_input'))
 | 
				
			||||||
	except FileNotFoundError:
 | 
						except FileNotFoundError:
 | 
				
			||||||
		logging.warning('Cannot remove ' + ep.typeDir('parent') + ', file no longer exists.')
 | 
							logging.warning('Cannot remove ' + ep.typeDir('parent_input') + ', file no longer exists.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
	if (os.path.exists(env.logfile)):
 | 
						if (os.path.exists(env.logfile)):
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user