mirror of https://github.com/evilhero/mylar
122 lines
5.2 KiB
Python
Executable File
122 lines
5.2 KiB
Python
Executable File
import mylar
|
|
from mylar import db, logger, helpers, updater, filechecker
|
|
import os
|
|
import shutil
|
|
import ast
|
|
|
|
def movefiles(comicid, comlocation, imported):
|
|
#comlocation is destination
|
|
#comicid is used for rename
|
|
files_moved = []
|
|
try:
|
|
imported = ast.literal_eval(imported)
|
|
except ValueError:
|
|
pass
|
|
|
|
myDB = db.DBConnection()
|
|
|
|
logger.fdebug('comlocation is : ' + comlocation)
|
|
logger.fdebug('original comicname is : ' + imported['ComicName'])
|
|
|
|
impres = imported['filelisting']
|
|
|
|
if impres is not None:
|
|
if all([mylar.CONFIG.CREATE_FOLDERS is False, not os.path.isdir(comlocation)]):
|
|
checkdirectory = filechecker.validateAndCreateDirectory(comlocation, True)
|
|
if not checkdirectory:
|
|
logger.warn('Error trying to validate/create directory. Aborting this process at this time.')
|
|
return
|
|
|
|
for impr in impres:
|
|
srcimp = impr['comiclocation']
|
|
orig_filename = impr['comicfilename']
|
|
#before moving check to see if Rename to Mylar structure is enabled.
|
|
if mylar.CONFIG.IMP_RENAME and mylar.CONFIG.FILE_FORMAT != '':
|
|
logger.fdebug("Renaming files according to configuration details : " + str(mylar.CONFIG.FILE_FORMAT))
|
|
renameit = helpers.rename_param(comicid, imported['ComicName'], impr['issuenumber'], orig_filename)
|
|
nfilename = renameit['nfilename']
|
|
dstimp = os.path.join(comlocation, nfilename)
|
|
else:
|
|
logger.fdebug("Renaming files not enabled, keeping original filename(s)")
|
|
dstimp = os.path.join(comlocation, orig_filename)
|
|
|
|
logger.info("moving " + srcimp + " ... to " + dstimp)
|
|
try:
|
|
shutil.move(srcimp, dstimp)
|
|
files_moved.append({'srid': imported['srid'],
|
|
'filename': impr['comicfilename'],
|
|
'import_id': impr['import_id']})
|
|
except (OSError, IOError):
|
|
logger.error("Failed to move files - check directories and manually re-run.")
|
|
|
|
logger.fdebug("all files moved.")
|
|
#now that it's moved / renamed ... we remove it from importResults or mark as completed.
|
|
|
|
if len(files_moved) > 0:
|
|
logger.info('files_moved: ' + str(files_moved))
|
|
for result in files_moved:
|
|
try:
|
|
res = result['import_id']
|
|
except:
|
|
#if it's an 'older' import that wasn't imported, just make it a basic match so things can move and update properly.
|
|
controlValue = {"ComicFilename": result['filename'],
|
|
"SRID": result['srid']}
|
|
newValue = {"Status": "Imported",
|
|
"ComicID": comicid}
|
|
else:
|
|
controlValue = {"impID": result['import_id'],
|
|
"ComicFilename": result['filename']}
|
|
newValue = {"Status": "Imported",
|
|
"SRID": result['srid'],
|
|
"ComicID": comicid}
|
|
myDB.upsert("importresults", newValue, controlValue)
|
|
return
|
|
|
|
def archivefiles(comicid, comlocation, imported):
|
|
myDB = db.DBConnection()
|
|
# if move files isn't enabled, let's set all found comics to Archive status :)
|
|
try:
|
|
imported = ast.literal_eval(imported)
|
|
except Exception as e:
|
|
logger.warn('[%s] Error encountered converting import data' % e)
|
|
|
|
ComicName = imported['ComicName']
|
|
impres = imported['filelisting']
|
|
|
|
if impres is not None:
|
|
scandir = []
|
|
for impr in impres:
|
|
srcimp = impr['comiclocation']
|
|
orig_filename = impr['comicfilename']
|
|
|
|
if not any([os.path.abspath(os.path.join(srcimp, os.pardir)) == x for x in scandir]):
|
|
scandir.append(os.path.abspath(os.path.join(srcimp, os.pardir)))
|
|
|
|
|
|
for sdir in scandir:
|
|
logger.info('Updating issue information and setting status to Archived for location: ' + sdir)
|
|
updater.forceRescan(comicid, archive=sdir) #send to rescanner with archive mode turned on
|
|
|
|
logger.info('Now scanning in files.')
|
|
updater.forceRescan(comicid)
|
|
|
|
for result in impres:
|
|
try:
|
|
res = result['import_id']
|
|
except:
|
|
#if it's an 'older' import that wasn't imported, just make it a basic match so things can move and update properly.
|
|
controlValue = {"ComicFilename": result['comicfilename'],
|
|
"SRID": imported['srid']}
|
|
newValue = {"Status": "Imported",
|
|
"ComicID": comicid}
|
|
else:
|
|
controlValue = {"impID": result['import_id'],
|
|
"ComicFilename": result['comicfilename']}
|
|
newValue = {"Status": "Imported",
|
|
"SRID": imported['srid'],
|
|
"ComicID": comicid}
|
|
myDB.upsert("importresults", newValue, controlValue)
|
|
|
|
|
|
return
|