From 39bf06f358fd5fd36115bcc71dca5f6824c62e09 Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 2 May 2014 09:13:29 +0930 Subject: [PATCH 1/5] match status for success and failed download. fixes #360 --- nzbtomedia/autoProcess/autoProcessTV.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nzbtomedia/autoProcess/autoProcessTV.py b/nzbtomedia/autoProcess/autoProcessTV.py index 88240f84..a8ae41b9 100644 --- a/nzbtomedia/autoProcess/autoProcessTV.py +++ b/nzbtomedia/autoProcess/autoProcessTV.py @@ -151,7 +151,7 @@ class autoProcessTV: for line in r.iter_lines(): if line: logger.postprocess("%s" % (line), section) - if section == "SickBeard" and "Processing succeeded for" in line: + if section == "SickBeard" and "Processing succeeded" in line: Success = True elif section == "NzbDrone" and "stateChangeTime" in line: Success = True From 0c8ce3917b5076f6c0eefa45017f69e92f36256c Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 2 May 2014 09:52:41 +0930 Subject: [PATCH 2/5] replace .cbz and .cbr with .zip and .rar. fixes #351 --- TorrentToMedia.py | 5 ++++- nzbtomedia/__init__.py | 4 +++- nzbtomedia/nzbToMediaUtil.py | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/TorrentToMedia.py b/TorrentToMedia.py index 3d4f019d..70235b48 100755 --- a/TorrentToMedia.py +++ b/TorrentToMedia.py @@ -125,7 +125,10 @@ def processTorrent(inputDirectory, inputName, inputCategory, inputHash, inputID, for inputFile in inputFiles: filePath = os.path.dirname(inputFile) fileName, fileExt = os.path.splitext(os.path.basename(inputFile)) - fullFileName = os.path.basename(inputFile) + if fileExt in nzbtomedia.EXT_REPLACE: + fullFileName = fileName + nzbtomedia.EXT_REPLACE[fileExt] + else: + fullFileName = os.path.basename(inputFile) targetFile = nzbtomedia.os.path.join(outputDestination, fullFileName) if inputCategory in nzbtomedia.NOFLATTEN: diff --git a/nzbtomedia/__init__.py b/nzbtomedia/__init__.py index 290565d2..e89c6b85 100644 --- a/nzbtomedia/__init__.py +++ b/nzbtomedia/__init__.py @@ -104,6 +104,7 @@ DELUGEPWD = None EXTCONTAINER = [] COMPRESSEDCONTAINER = [] +EXT_REPLACE = {} MEDIACONTAINER = [] AUDIOCONTAINER = [] METACONTAINER = [] @@ -156,7 +157,7 @@ def initialize(section=None): OUTPUTVIDEOBITRATE, OUTPUTAUDIOCODEC, OUTPUTAUDIOBITRATE, OUTPUTSUBTITLECODEC, OUTPUTFASTSTART, OUTPUTQUALITYPERCENT, \ NICENESS, LOG_DEBUG, FORCE_CLEAN, FFMPEG_PATH, FFMPEG, FFPROBE, AUDIOCONTAINER, EXTCONTAINER, TORRENT_CLASS, \ DELETE_ORIGINAL, PASSWORDSFILE, USER_DELAY, USER_SCRIPT, USER_SCRIPT_CLEAN, USER_SCRIPT_MEDIAEXTENSIONS, \ - USER_SCRIPT_PARAM, USER_SCRIPT_RUNONCE, USER_SCRIPT_SUCCESSCODES, DOWNLOADINFO + USER_SCRIPT_PARAM, USER_SCRIPT_RUNONCE, USER_SCRIPT_SUCCESSCODES, DOWNLOADINFO, EXT_REPLACE if __INITIALIZED__: return False @@ -277,6 +278,7 @@ def initialize(section=None): re.compile('.part\d+.rar$', re.I), re.compile('.rar$', re.I)] COMPRESSEDCONTAINER += [re.compile('%s$' % ext, re.I) for ext in CFG["Extensions"]["compressedExtensions"]] + EXT_REPLACE = {'.cbr':'.rar', '.cbz':'.zip'} # extensions used for comic books need to be replaced before we can extract. MEDIACONTAINER = CFG["Extensions"]["mediaExtensions"] AUDIOCONTAINER = CFG["Extensions"]["audioExtensions"] METACONTAINER = CFG["Extensions"]["metaExtensions"] # .nfo,.sub,.srt diff --git a/nzbtomedia/nzbToMediaUtil.py b/nzbtomedia/nzbToMediaUtil.py index df9c9c10..eea69ff4 100644 --- a/nzbtomedia/nzbToMediaUtil.py +++ b/nzbtomedia/nzbToMediaUtil.py @@ -771,7 +771,7 @@ def backupVersionedFile(old_file, version): def update_downloadInfoStatus(inputName, status): - logger.debug("Updating status of our download %s in the DB to %s" % (inputName, status)) + logger.db("Updating status of our download %s in the DB to %s" % (inputName, status)) myDB = nzbToMediaDB.DBConnection() myDB.action("UPDATE downloads SET status=?, last_update=? WHERE input_name=?", @@ -779,7 +779,7 @@ def update_downloadInfoStatus(inputName, status): def get_downloadInfo(inputName, status): - logger.debug("Getting download info for %s from the DB" % (inputName)) + logger.db("Getting download info for %s from the DB" % (inputName)) myDB = nzbToMediaDB.DBConnection() sqlResults = myDB.select("SELECT * FROM downloads WHERE input_name=? AND status=?", From 03c3a013ff885e4a27b228d5adbbcf6d33e1286e Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 2 May 2014 10:15:37 +0930 Subject: [PATCH 3/5] additional extension rename checks. fixes #351 --- nzbtomedia/autoProcess/autoProcessComics.py | 2 ++ nzbtomedia/nzbToMediaUtil.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/nzbtomedia/autoProcess/autoProcessComics.py b/nzbtomedia/autoProcess/autoProcessComics.py index 78876934..01332e96 100644 --- a/nzbtomedia/autoProcess/autoProcessComics.py +++ b/nzbtomedia/autoProcess/autoProcessComics.py @@ -29,6 +29,8 @@ class autoProcessComics: inputName, dirName = convert_to_ascii(inputName, dirName) + replaceExtensions(dirName) + params = {} params['nzb_folder'] = dirName if remote_path: diff --git a/nzbtomedia/nzbToMediaUtil.py b/nzbtomedia/nzbToMediaUtil.py index eea69ff4..83f760df 100644 --- a/nzbtomedia/nzbToMediaUtil.py +++ b/nzbtomedia/nzbToMediaUtil.py @@ -39,6 +39,21 @@ def sanitizeName(name): return name +def replaceExtensions(path): + for dirpath, dirnames, filesnames in os.walk(path): + for filename in filesnames: + name, ext = os.path.splitext(filename) + if ext in nzbtomedia.EXT_REPLACE: + file = os.path.join(dirpath, filename) + target = os.path.join(dirpath, name + nzbtomedia.EXT_REPLACE[ext]) + try: + logger.debug("Renaming %s to %s" % (file, target), 'RENAME') + shutil.move(file, target) + except: + logger.error("Could not rename %s to %s" % (file, target), 'RENAME') + else: + continue + def makeDir(path): if not os.path.isdir(path): try: From 4ab0b3dab1275ebebbdce090ab2c1450fe1c37a4 Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 2 May 2014 10:19:19 +0930 Subject: [PATCH 4/5] import function. fixes #351 --- nzbtomedia/autoProcess/autoProcessComics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nzbtomedia/autoProcess/autoProcessComics.py b/nzbtomedia/autoProcess/autoProcessComics.py index 01332e96..8e620982 100644 --- a/nzbtomedia/autoProcess/autoProcessComics.py +++ b/nzbtomedia/autoProcess/autoProcessComics.py @@ -2,7 +2,7 @@ import os import time import nzbtomedia import requests -from nzbtomedia.nzbToMediaUtil import convert_to_ascii +from nzbtomedia.nzbToMediaUtil import convert_to_ascii, replaceExtensions from nzbtomedia import logger class autoProcessComics: From 5c80905cd6380f7a1a2a0bc4a8e9749236f780c7 Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 2 May 2014 12:35:16 +0930 Subject: [PATCH 5/5] conver to post command. fixes #355 #356 --- nzbtomedia/autoProcess/autoProcessTV.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nzbtomedia/autoProcess/autoProcessTV.py b/nzbtomedia/autoProcess/autoProcessTV.py index a8ae41b9..d4e294d0 100644 --- a/nzbtomedia/autoProcess/autoProcessTV.py +++ b/nzbtomedia/autoProcess/autoProcessTV.py @@ -1,6 +1,7 @@ import copy import os import requests +import json import nzbtomedia from nzbtomedia.nzbToMediaAutoFork import autoFork @@ -140,9 +141,9 @@ class autoProcessTV: if section == "SickBeard": r = requests.get(url, auth=(username, password), params=fork_params, stream=True, verify=False) elif section == "NzbDrone": - params = {"name": "DownloadedEpisodesScan", "path": dirName} + data = json.dumps({"name": "DownloadedEpisodesScan", "path": dirName}) headers = {"X-Api-Key": apikey} - r = requests.get(url, params=params, headers=headers, stream=True, verify=False) + r = requests.post(url, data=data, headers=headers, stream=True, verify=False) except requests.ConnectionError: logger.error("Unable to open URL: %s" % (url), section) return 1 # failure