diff --git a/couchpotato/core/downloaders/base.py b/couchpotato/core/downloaders/base.py index 8ccc1369..a78e0b18 100644 --- a/couchpotato/core/downloaders/base.py +++ b/couchpotato/core/downloaders/base.py @@ -39,6 +39,13 @@ class Downloader(Provider): addEvent('download.enabled_types', self.getEnabledDownloadType) addEvent('download.status', self._getAllDownloadStatus) addEvent('download.remove_failed', self._removeFailed) + addEvent('download.downloader_type', self.getDownloaderType) + + def getDownloaderType(self, downloader): + if self.getName() == downloader: + return self.type + + return [] def getEnabledDownloadType(self): for download_type in self.type: diff --git a/couchpotato/core/plugins/renamer/__init__.py b/couchpotato/core/plugins/renamer/__init__.py index 90f5c980..f3f7f66c 100644 --- a/couchpotato/core/plugins/renamer/__init__.py +++ b/couchpotato/core/plugins/renamer/__init__.py @@ -114,11 +114,11 @@ config = [{ }, { 'name': 'file_action', - 'label': 'File Action', + 'label': 'Torrent File Action', 'default': 'move', 'type': 'dropdown', 'values': [('Move', 'move'), ('Copy', 'copy'), ('Hard link', 'hardlink'), ('Sym link', 'symlink'), ('Move & Sym link', 'move_symlink')], - 'description': 'Define which kind of file operation you want to use. Before you start using hard links or sym links, PLEASE read about their possible drawbacks.', + 'description': 'Define which kind of file operation you want to use for torrents. Before you start using hard links or sym links, PLEASE read about their possible drawbacks.', 'advanced': True, }, { diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 87d9aaf3..807ee04c 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -118,7 +118,7 @@ class Renamer(Plugin): db = get_session() - # Get the release with the downloader ID that was downloded by the downloader + # Get the release with the downloader ID that was downloaded by the downloader download_info = None if download_id and downloader: rls = None @@ -137,6 +137,7 @@ class Renamer(Plugin): download_info = { 'imdb_id': rls.movie.library.identifier, 'quality': rls.quality.identifier, + 'is_torrent': any(downloader_type in fireEvent('download.downloader_type', downloader = downloader) for downloader_type in ['torrent', 'torrent_magnet']) } else: log.error('Download ID %s from downloader %s not found in releases', (download_id, downloader)) @@ -446,13 +447,13 @@ class Renamer(Plugin): self.makeDir(os.path.dirname(dst)) try: - self.moveFile(src, dst) + self.moveFile(src, dst, forcemove = not (download_info and download_info.get('is_torrent'))) group['renamed_files'].append(dst) except: log.error('Failed moving the file "%s" : %s', (os.path.basename(src), traceback.format_exc())) self.tagDir(group, 'failed_rename') - if self.conf('file_action') != 'move': + if self.conf('file_action') != 'move' and download_info and download_info.get('is_torrent'): self.tagDir(group, 'renamed already') # Remove matching releases @@ -518,10 +519,12 @@ Remove it if you want it to be renamed (again, or at least let it try again) self.createFile(ignore_file, text) - def moveFile(self, old, dest): + def moveFile(self, old, dest, forcemove = False): dest = ss(dest) try: - if self.conf('file_action') == 'hardlink': + if forcemove: + shutil.move(old, dest) + elif self.conf('file_action') == 'hardlink': link(old, dest) elif self.conf('file_action') == 'symlink': symlink(old, dest)