Diskspace event
This commit is contained in:
@@ -2,11 +2,13 @@ from couchpotato.api import addApiView
|
|||||||
from couchpotato.core.event import fireEvent, addEvent, fireEventAsync
|
from couchpotato.core.event import fireEvent, addEvent, fireEventAsync
|
||||||
from couchpotato.core.helpers.encoding import ss
|
from couchpotato.core.helpers.encoding import ss
|
||||||
from couchpotato.core.helpers.request import jsonified, getParam
|
from couchpotato.core.helpers.request import jsonified, getParam
|
||||||
from couchpotato.core.helpers.variable import getTitle, splitString
|
from couchpotato.core.helpers.variable import splitString, getTitle
|
||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from couchpotato.core.plugins.base import Plugin
|
from couchpotato.core.plugins.base import Plugin
|
||||||
from couchpotato.environment import Env
|
from couchpotato.environment import Env
|
||||||
|
import ctypes
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
@@ -22,6 +24,7 @@ class Manage(Plugin):
|
|||||||
fireEvent('scheduler.interval', identifier = 'manage.update_library', handle = self.updateLibrary, hours = 2)
|
fireEvent('scheduler.interval', identifier = 'manage.update_library', handle = self.updateLibrary, hours = 2)
|
||||||
|
|
||||||
addEvent('manage.update', self.updateLibrary)
|
addEvent('manage.update', self.updateLibrary)
|
||||||
|
addEvent('manage.diskspace', self.getDiskSpace)
|
||||||
|
|
||||||
# Add files after renaming
|
# Add files after renaming
|
||||||
def after_rename(message = None, group = {}):
|
def after_rename(message = None, group = {}):
|
||||||
@@ -192,6 +195,7 @@ class Manage(Plugin):
|
|||||||
self.in_progress[folder]['to_go'] = self.in_progress[folder]['to_go'] - 1
|
self.in_progress[folder]['to_go'] = self.in_progress[folder]['to_go'] - 1
|
||||||
total = self.in_progress[folder]['total']
|
total = self.in_progress[folder]['total']
|
||||||
movie_dict = fireEvent('movie.get', identifier, single = True)
|
movie_dict = fireEvent('movie.get', identifier, single = True)
|
||||||
|
|
||||||
fireEvent('notify.frontend', type = 'movie.added', data = movie_dict, message = None if total > 5 else 'Added "%s" to manage.' % getTitle(movie_dict['library']))
|
fireEvent('notify.frontend', type = 'movie.added', data = movie_dict, message = None if total > 5 else 'Added "%s" to manage.' % getTitle(movie_dict['library']))
|
||||||
|
|
||||||
return afterUpdate
|
return afterUpdate
|
||||||
@@ -214,3 +218,31 @@ class Manage(Plugin):
|
|||||||
for group in groups.itervalues():
|
for group in groups.itervalues():
|
||||||
if group['library'] and group['library'].get('identifier'):
|
if group['library'] and group['library'].get('identifier'):
|
||||||
fireEvent('release.add', group = group)
|
fireEvent('release.add', group = group)
|
||||||
|
|
||||||
|
def getDiskSpace(self):
|
||||||
|
|
||||||
|
free_space = {}
|
||||||
|
for folder in self.directories():
|
||||||
|
|
||||||
|
size = None
|
||||||
|
if os.path.isdir(folder):
|
||||||
|
if os.name == 'nt':
|
||||||
|
_, total, free = ctypes.c_ulonglong(), ctypes.c_ulonglong(), \
|
||||||
|
ctypes.c_ulonglong()
|
||||||
|
if sys.version_info >= (3,) or isinstance(folder, unicode):
|
||||||
|
fun = ctypes.windll.kernel32.GetDiskFreeSpaceExW #@UndefinedVariable
|
||||||
|
else:
|
||||||
|
fun = ctypes.windll.kernel32.GetDiskFreeSpaceExA #@UndefinedVariable
|
||||||
|
ret = fun(folder, ctypes.byref(_), ctypes.byref(total), ctypes.byref(free))
|
||||||
|
if ret == 0:
|
||||||
|
raise ctypes.WinError()
|
||||||
|
used = total.value - free.value
|
||||||
|
return [total.value, used, free.value]
|
||||||
|
else:
|
||||||
|
s = os.statvfs(folder)
|
||||||
|
size = [s.f_blocks * s.f_frsize / (1024 * 1024), (s.f_bavail * s.f_frsize) / (1024 * 1024)]
|
||||||
|
|
||||||
|
free_space[folder] = size
|
||||||
|
|
||||||
|
return free_space
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user