Manage page base
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from .main import Manage
|
||||
|
||||
def start():
|
||||
return Manage()
|
||||
|
||||
config = [{
|
||||
'name': 'manage',
|
||||
'groups': [
|
||||
{
|
||||
'tab': 'renamer',
|
||||
'label': 'movie library manager',
|
||||
'description': 'Add multiple movie folders.',
|
||||
'wizard': True,
|
||||
'options': [
|
||||
{
|
||||
'name': 'enabled',
|
||||
'default': False,
|
||||
'type': 'enabler',
|
||||
},
|
||||
{
|
||||
'name': 'library',
|
||||
'type': 'directories',
|
||||
'description': 'Folder where the movies should be moved to.',
|
||||
},
|
||||
{
|
||||
'label': 'Cleanup After',
|
||||
'name': 'cleanup',
|
||||
'type': 'bool',
|
||||
'description': 'Remove movie from db if it can\'t be found after re-scan.',
|
||||
'default': True,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}]
|
||||
@@ -0,0 +1,65 @@
|
||||
from couchpotato import get_session
|
||||
from couchpotato.api import addApiView
|
||||
from couchpotato.core.event import fireEvent, addEvent, fireEventAsync
|
||||
from couchpotato.core.helpers.request import jsonified, getParams
|
||||
from couchpotato.core.logger import CPLog
|
||||
from couchpotato.core.plugins.base import Plugin
|
||||
from couchpotato.core.settings.model import File
|
||||
from couchpotato.environment import Env
|
||||
import time
|
||||
|
||||
|
||||
log = CPLog(__name__)
|
||||
|
||||
class Manage(Plugin):
|
||||
|
||||
last_update = 0
|
||||
|
||||
def __init__(self):
|
||||
|
||||
fireEvent('scheduler.interval', identifier = 'manage.update_library', handle = self.updateLibrary, hours = 2)
|
||||
|
||||
addEvent('manage.update', self.updateLibrary)
|
||||
addApiView('manage.update', self.updateLibraryView)
|
||||
|
||||
if not Env.setting('development'):
|
||||
addEvent('app.load', self.updateLibrary)
|
||||
|
||||
def updateLibraryView(self):
|
||||
|
||||
params = getParams()
|
||||
|
||||
fireEventAsync('manage.update', full = params.get('full', True))
|
||||
|
||||
return jsonified({
|
||||
'success': True
|
||||
})
|
||||
|
||||
|
||||
def updateLibrary(self, full = False):
|
||||
|
||||
if self.isDisabled() or (self.last_update > time.time() - 20):
|
||||
return
|
||||
|
||||
directories = self.directories()
|
||||
|
||||
log.info('Updating manage library: %s' % directories)
|
||||
|
||||
for directory in directories:
|
||||
fireEvent('scanner.folder', folder = directory)
|
||||
|
||||
# If cleanup option is enabled, remove offline files from database
|
||||
if self.conf('cleanup'):
|
||||
db = get_session()
|
||||
files_in_path = db.query(File).filter(File.path.like(directory + '%%')).filter_by(available = 0).all()
|
||||
[db.delete(x) for x in files_in_path]
|
||||
db.commit()
|
||||
db.remove()
|
||||
|
||||
self.last_update = time.time()
|
||||
|
||||
def directories(self):
|
||||
try:
|
||||
return self.conf('library', default = '').split('::')
|
||||
except:
|
||||
return []
|
||||
Reference in New Issue
Block a user