From ddf03cbcf2770a3fdada890b9a990d0cf1c0a995 Mon Sep 17 00:00:00 2001 From: Ruud <ruud@crashdummy.nl> Date: Mon, 4 Mar 2013 23:07:31 +0100 Subject: [PATCH] Diskspace event --- couchpotato/core/plugins/manage/main.py | 34 ++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/plugins/manage/main.py b/couchpotato/core/plugins/manage/main.py index f80b80a8..51094899 100644 --- a/couchpotato/core/plugins/manage/main.py +++ b/couchpotato/core/plugins/manage/main.py @@ -2,11 +2,13 @@ from couchpotato.api import addApiView from couchpotato.core.event import fireEvent, addEvent, fireEventAsync from couchpotato.core.helpers.encoding import ss 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.plugins.base import Plugin from couchpotato.environment import Env +import ctypes import os +import sys import time import traceback @@ -22,6 +24,7 @@ class Manage(Plugin): fireEvent('scheduler.interval', identifier = 'manage.update_library', handle = self.updateLibrary, hours = 2) addEvent('manage.update', self.updateLibrary) + addEvent('manage.diskspace', self.getDiskSpace) # Add files after renaming 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 total = self.in_progress[folder]['total'] 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'])) return afterUpdate @@ -214,3 +218,31 @@ class Manage(Plugin): for group in groups.itervalues(): if group['library'] and group['library'].get('identifier'): 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 + -- GitLab