From 2066625bf001ab0e82b501029c273717bd9909ee Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 7 Mar 2014 18:58:27 +0100 Subject: [PATCH] Don't use ctime on unix system. Cleanup check a bit. close #2904 --- couchpotato/core/plugins/base.py | 38 +++++++++++++++++++++++- couchpotato/core/plugins/renamer/main.py | 24 ++------------- couchpotato/core/plugins/scanner/main.py | 36 +++++----------------- 3 files changed, 47 insertions(+), 51 deletions(-) diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 891e6b41..b852d62e 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -1,7 +1,7 @@ from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.helpers.encoding import ss, toSafeString, \ toUnicode, sp -from couchpotato.core.helpers.variable import getExt, md5, isLocalIP, scanForPassword +from couchpotato.core.helpers.variable import getExt, md5, isLocalIP, scanForPassword, tryInt from couchpotato.core.logger import CPLog from couchpotato.environment import Env import requests @@ -307,6 +307,42 @@ class Plugin(object): return '' + def checkFilesChanged(self, files, unchanged_for = 60): + now = time.time() + + for cur_file in files: + + # File got removed while checking + if not os.path.isfile(cur_file): + file_too_new = now + break + + # File has changed in last 60 seconds + file_time = self.self.getFileTimes(cur_file) + for t in file_time: + if t > now - unchanged_for: + file_too_new = tryInt(time.time() - t) + break + + if file_too_new: + break + + if file_too_new: + try: + time_string = time.ctime(file_time[0]) + except: + try: + time_string = time.ctime(file_time[1]) + except: + time_string = 'unknown' + + return file_too_new, time_string + + return False, None + + def getFileTimes(self, file_path): + return [os.path.getmtime(file_path), os.path.getctime(file_path) if os.name != 'posix' else 0] + def isDisabled(self): return not self.isEnabled() diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 1bf4ec91..fe698d24 100755 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -1127,29 +1127,9 @@ Remove it if you want it to be renamed (again, or at least let it try again) # Check if archive is fresh and maybe still copying/moving/downloading, ignore files newer than 1 minute if check_file_date: - file_too_new = False - for cur_file in archive['files']: - if not os.path.isfile(cur_file): - file_too_new = time.time() - break - file_time = [os.path.getmtime(cur_file), os.path.getctime(cur_file)] - for t in file_time: - if t > time.time() - 60: - file_too_new = tryInt(time.time() - t) - break - - if file_too_new: - break - - if file_too_new: - try: - time_string = time.ctime(file_time[0]) - except: - try: - time_string = time.ctime(file_time[1]) - except: - time_string = 'unknown' + files_too_new, time_string = self.checkFilesChanged(archive['files']) + if files_too_new: log.info('Archive seems to be still copying/moving/downloading or just copied/moved/downloaded (created on %s), ignoring for now: %s', (time_string, os.path.basename(archive['file']))) continue diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index daff0919..3031236f 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -291,41 +291,21 @@ class Scanner(Plugin): break # Check if movie is fresh and maybe still unpacking, ignore files newer than 1 minute - file_too_new = False - for cur_file in group['unsorted_files']: - if not os.path.isfile(cur_file): - file_too_new = time.time() - break - file_time = [os.path.getmtime(cur_file), os.path.getctime(cur_file)] - for t in file_time: - if t > time.time() - 60: - file_too_new = tryInt(time.time() - t) - break + if check_file_date: + files_too_new, time_string = self.checkFilesChanged(group['unsorted_files']) + if files_too_new: + log.info('Files seem to be still unpacking or just unpacked (created on %s), ignoring for now: %s', (time_string, identifier)) - if file_too_new: - break + # Delete the unsorted list + del group['unsorted_files'] - if check_file_date and file_too_new: - try: - time_string = time.ctime(file_time[0]) - except: - try: - time_string = time.ctime(file_time[1]) - except: - time_string = 'unknown' - - log.info('Files seem to be still unpacking or just unpacked (created on %s), ignoring for now: %s', (time_string, identifier)) - - # Delete the unsorted list - del group['unsorted_files'] - - continue + continue # Only process movies newer than x if newer_than and newer_than > 0: has_new_files = False for cur_file in group['unsorted_files']: - file_time = [os.path.getmtime(cur_file), os.path.getctime(cur_file)] + file_time = self.getFileTimes(cur_file) if file_time[0] > newer_than or file_time[1] > newer_than: has_new_files = True break