mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-08-19 04:49:31 -07:00
commit
3377cb338e
15 changed files with 100 additions and 44 deletions
16
README.md
16
README.md
|
@ -1,7 +1,7 @@
|
|||
nzbToMedia
|
||||
================
|
||||
|
||||
Provides an efficient way to handle postprocessing for [CouchPotatoServer](https://couchpota.to/ "CouchPotatoServer") and [SickBeard](http://sickbeard.com/ "SickBeard")
|
||||
Provides an [efficient](https://github.com/clinton-hall/nzbToMedia/wiki/Efficient-on-demand-post-processing) way to handle postprocessing for [CouchPotatoServer](https://couchpota.to/ "CouchPotatoServer") and [SickBeard](http://sickbeard.com/ "SickBeard") (and its [forks](https://github.com/clinton-hall/nzbToMedia/wiki/Failed-Download-Handling-%28FDH%29#sick-beard-and-its-forks))
|
||||
when using one of the popular NZB download clients like [SABnzbd](http://sabnzbd.org/ "SABnzbd") and [NZBGet](http://nzbget.sourceforge.net/ "NZBGet") on low performance systems like a NAS.
|
||||
This script is based on sabToSickBeard (written by Nic Wolfe and supplied with SickBeard), with the support for NZBGet being added by [thorli](https://github.com/thorli "thorli") and further contributions by [schumi2004](https://github.com/schumi2004 "schumi2004") and [hugbug](https://sourceforge.net/apps/phpbb/nzbget/memberlist.php?mode=viewprofile&u=67 "hugbug").
|
||||
Torrent suport added by [jkaberg](https://github.com/jkaberg "jkaberg") and [berkona](https://github.com/berkona "berkona")
|
||||
|
@ -9,17 +9,17 @@ Corrupt video checking, auto SickBeard fork determination and a whole lot of cod
|
|||
|
||||
Introduction
|
||||
------------
|
||||
Originally this was modified from the SickBeard version to allow for "on-demand" renaming and not have My QNAP TS-412 NAS constantly scanning the download directory.
|
||||
Later, a few failed downloads prompted me to incorporate "failed download" handling.
|
||||
Originally this was modified from the SickBeard version to allow for ["on-demand" renaming](https://github.com/clinton-hall/nzbToMedia/wiki/Efficient-on-demand-post-processing) and not have My QNAP TS-412 NAS constantly scanning the download directory.
|
||||
Later, a few failed downloads prompted me to incorporate ["failed download" handling](https://github.com/clinton-hall/nzbToMedia/wiki/Failed-Download-Handling-%28FDH%29).
|
||||
Failed download handling is now provided for SABnzbd, by CouchPotatoServer; however on arm processors (e.g. small NAS systems) this can be un-reliable.
|
||||
|
||||
Failed download handling for SickBeard is available by using the development branch from fork [SickBeard-failed](https://github.com/Tolstyak/Sick-Beard.git "SickBeard-failed")
|
||||
To use this feature, in autoProcessTV.cfg set the parameter "fork=failed". Default is "fork=default" and will work with standard version of SickBeard and just ignores failed downloads.
|
||||
Additional forks exist for ThePirateBay (does its own extraction and linking). See [SickBeard Forks](https://github.com/clinton-hall/nzbToMedia/wiki/sickbeard-branches "SickBeard Forks") for a list of known forks.
|
||||
Failed download handling for SickBeard is available by using Tolstyak's fork [SickBeard-failed](https://github.com/hugepants/Sick-Beard)).
|
||||
To use this feature, in autoProcessTV.cfg set the parameter "fork=failed". Default is "fork=default" and will work with the standard version of SickBeard and just ignores failed downloads.
|
||||
Development of Tolstyak's fork ended in 2013, but newer forks exist with significant feature updates such as [Mr-Orange TPB](https://github.com/coach0742/Sick-Beard) (discontinued) and [SickRage](https://github.com/SiCKRAGETV/SickRage) (active). See [SickBeard Forks](https://github.com/clinton-hall/nzbToMedia/wiki/Failed-Download-Handling-%28FDH%29#sick-beard-and-its-forks "SickBeard Forks") for a list of known forks.
|
||||
|
||||
Full support is provided for [SickRage](https://github.com/echel0n/SickRage "SickRage").
|
||||
Full support is provided for [SickRage](https://github.com/SiCKRAGETV/SickRage).
|
||||
|
||||
Torrent support has been added with the assistance of jkaberg and berkona. Currently supports uTorrent, Transmissions, Deluge and possibly more.
|
||||
Torrent support has been added with the assistance of jkaberg and berkona. Currently supports uTorrent, Transmission, Deluge and possibly more.
|
||||
To enable Torrent extraction, on Windows, you need to install [7-zip](http://www.7-zip.org/ "7-zip") or on *nix you need to install the following packages/commands.
|
||||
|
||||
"unrar", "unzip", "tar", "7zr"
|
||||
|
|
|
@ -102,7 +102,12 @@ def processTorrent(inputDirectory, inputName, inputCategory, inputHash, inputID,
|
|||
if clientAgent != 'manual':
|
||||
core.pause_torrent(clientAgent, inputHash, inputID, inputName)
|
||||
|
||||
if uniquePath:
|
||||
# Incase input is not directory, make sure to create one.
|
||||
# This way Processing is isolated.
|
||||
if not os.path.isdir(os.path.join(inputDirectory, inputName)):
|
||||
basename = os.path.splitext(core.sanitizeName(inputName))[0]
|
||||
outputDestination = os.path.join(core.OUTPUTDIRECTORY, inputCategory, basename)
|
||||
elif uniquePath:
|
||||
outputDestination = os.path.normpath(
|
||||
core.os.path.join(core.OUTPUTDIRECTORY, inputCategory, core.sanitizeName(inputName)))
|
||||
else:
|
||||
|
@ -202,6 +207,9 @@ def processTorrent(inputDirectory, inputName, inputCategory, inputHash, inputID,
|
|||
|
||||
logger.info("Calling %s:%s to post-process:%s" % (sectionName, usercat, inputName))
|
||||
|
||||
if core.TORRENT_CHMOD_DIRECTORY:
|
||||
core.rchmod(outputDestination, core.TORRENT_CHMOD_DIRECTORY)
|
||||
|
||||
result = [ 0, "" ]
|
||||
if sectionName == 'UserScript':
|
||||
result = external_script(outputDestination, inputName, inputCategory, section[usercat])
|
||||
|
@ -225,7 +233,9 @@ def processTorrent(inputDirectory, inputName, inputCategory, inputHash, inputID,
|
|||
plex_update(inputCategory)
|
||||
|
||||
if result[0] != 0:
|
||||
if clientAgent != 'manual':
|
||||
if not core.TORRENT_RESUME_ON_FAILURE:
|
||||
logger.error("A problem was reported in the autoProcess* script. torrent won't resume seeding (settings)")
|
||||
elif clientAgent != 'manual':
|
||||
logger.error(
|
||||
"A problem was reported in the autoProcess* script. If torrent was paused we will resume seeding")
|
||||
core.resume_torrent(clientAgent, inputHash, inputID, inputName)
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
extract = 1
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if Couchpotato is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -85,11 +85,13 @@
|
|||
process_method =
|
||||
# force processing of already processed content when running a manual scan.
|
||||
force = 0
|
||||
# tell SickRage to delete all source files after processing.
|
||||
delete_on = 0
|
||||
extract = 1
|
||||
nzbExtractionBy = Downloader
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if SickBeard is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -118,7 +120,7 @@
|
|||
wait_for = 2
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if NzbDrone is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -143,7 +145,7 @@
|
|||
extract = 1
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if HeadPhones is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -168,7 +170,7 @@
|
|||
extract = 1
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if Mylar is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -194,7 +196,7 @@
|
|||
extract = 1
|
||||
# Set this to minimum required size to consider a media file valid (in MB)
|
||||
minSize = 0
|
||||
# Enable/Disable deleteing ignored files (samples and invalid media files)
|
||||
# Enable/Disable deleting ignored files (samples and invalid media files)
|
||||
delete_ignored = 0
|
||||
##### Enable if Gamez is on a remote server for this category
|
||||
remote_path = 0
|
||||
|
@ -210,7 +212,7 @@
|
|||
###### clientAgent - Supported clients: sabnzbd, nzbget
|
||||
clientAgent = sabnzbd
|
||||
###### SabNZBD (You must edit this if your using nzbToMedia.py with SabNZBD)
|
||||
sabnzbd_host = localhost
|
||||
sabnzbd_host = http://localhost
|
||||
sabnzbd_port = 8080
|
||||
sabnzbd_apikey =
|
||||
###### Enter the default path to your default download directory (non-category downloads). this directory is protected by safe_mode.
|
||||
|
@ -245,10 +247,12 @@
|
|||
DelugePWD = your password
|
||||
###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
|
||||
deleteOriginal = 0
|
||||
chmodDirecotry = 0
|
||||
resumeOnFailure = 1
|
||||
|
||||
[Extensions]
|
||||
compressedExtensions = .zip,.rar,.7z,.gz,.bz,.tar,.arj,.1,.01,.001
|
||||
mediaExtensions = .mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.m4v
|
||||
mediaExtensions = .mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.m4v,.ts
|
||||
audioExtensions = .mp3, .aac, .ogg, .ape, .m4a, .asf, .wma, .flac
|
||||
metaExtensions = .nfo,.sub,.srt,.jpg,.gif
|
||||
|
||||
|
@ -268,10 +272,11 @@
|
|||
subLanguages = eng,spa,fra
|
||||
# transcode. enable to use transcoder
|
||||
transcode = 0
|
||||
###### duplicate =1 will cretae a new file. =0 will replace the original
|
||||
###### duplicate =1 will create a new file. =0 will replace the original
|
||||
duplicate = 1
|
||||
# concat. joins cd1 cd2 etc into a single video.
|
||||
concat = 1
|
||||
# IgnoreExtensions is a comma-separated list of extensions that will not be transcoded.
|
||||
ignoreExtensions = .avi,.mkv,.mp4
|
||||
# outputFastStart. 1 will use -movflags + faststart. 0 will disable this from being used.
|
||||
outputFastStart = 0
|
||||
|
@ -285,9 +290,9 @@
|
|||
audioLanguage = eng
|
||||
# allAudioLanguages. 1 will keep all audio tracks (uses AudioCodec3) where available.
|
||||
allAudioLanguages = 0
|
||||
# allSubLanguages. 1 will keep all exisiting sub languages. 0 will discare those not in your list above.
|
||||
# allSubLanguages. 1 will keep all existing sub languages. 0 will discard those not in your list above.
|
||||
allSubLanguages = 0
|
||||
# embedSubs. 1 will embded external sub/srt subs into your video if this is supported.
|
||||
# embedSubs. 1 will embed external sub/srt subs into your video if this is supported.
|
||||
embedSubs = 1
|
||||
# burnInSubtitle. burns the default sub language into your video (needed for players that don't support subs)
|
||||
burnInSubtitle = 0
|
||||
|
@ -354,7 +359,7 @@
|
|||
#for example FP,FN,DN, TN, TL for file path (absolute file name with path), file name, absolute directory name (with path), Torrent Name, Torrent Label/Category.
|
||||
#So the result is /media/test/script/script.sh FP FN DN TN TL. Add other arguments as needed eg -f, -r
|
||||
user_script_param = FN
|
||||
#Set user_script_runOnce = 0 to run for each file, or 1 to only run once (presumably on teh entire directory).
|
||||
#Set user_script_runOnce = 0 to run for each file, or 1 to only run once (presumably on the entire directory).
|
||||
user_script_runOnce = 0
|
||||
#Specify the successcodes returned by the user script as a comma separated list. Linux default is 0
|
||||
user_script_successCodes = 0
|
||||
|
@ -378,5 +383,5 @@
|
|||
[Custom]
|
||||
# enter a list (comma separated) of Group Tags you want removed from filenames to help with subtitle matching.
|
||||
# e.g remove_group = [rarbag],-NZBgeek
|
||||
# be careful if your "group" is a common "real" word. Please report if you have any group replacments that would fall in this category.
|
||||
# be careful if your "group" is a common "real" word. Please report if you have any group replacements that would fall in this category.
|
||||
remove_group =
|
||||
|
|
|
@ -56,8 +56,8 @@ FORK_SICKRAGE = "sickrage"
|
|||
FORKS[FORK_DEFAULT] = {"dir": None}
|
||||
FORKS[FORK_FAILED] = {"dirName": None, "failed": None}
|
||||
FORKS[FORK_FAILED_TORRENT] = {"dir": None, "failed": None, "process_method": None}
|
||||
FORKS[FORK_SICKRAGE] = {"dir": None, "failed": None, "process_method": None, "force": None}
|
||||
ALL_FORKS = {"dir": None, "dirName": None, "failed": None, "process_method": None, "force": None}
|
||||
FORKS[FORK_SICKRAGE] = {"dir": None, "failed": None, "process_method": None, "force": None, "delete_on": None}
|
||||
ALL_FORKS = {"dir": None, "dirName": None, "failed": None, "process_method": None, "force": None, "delete_on": None}
|
||||
SICKBEARD_FAILED = [FORK_FAILED, FORK_FAILED_TORRENT, FORK_SICKRAGE]
|
||||
SICKBEARD_TORRENT = [FORK_FAILED_TORRENT, FORK_SICKRAGE]
|
||||
|
||||
|
@ -98,7 +98,9 @@ USELINK = None
|
|||
OUTPUTDIRECTORY = None
|
||||
NOFLATTEN = []
|
||||
DELETE_ORIGINAL = None
|
||||
TORRENT_CHMOD_DIRECTORY = None
|
||||
TORRENT_DEFAULTDIR = None
|
||||
TORRENT_RESUME_ON_FAILURE = None
|
||||
|
||||
REMOTEPATHS = []
|
||||
|
||||
|
@ -210,9 +212,9 @@ def initialize(section=None):
|
|||
ACODEC2, ACODEC2_ALLOW, ABITRATE2, ACODEC3, ACODEC3_ALLOW, ABITRATE3, ALLOWSUBS, SEXTRACT, SEMBED, SLANGUAGES, \
|
||||
SINCLUDE, SUBSDIR, SCODEC, OUTPUTFASTSTART, OUTPUTQUALITYPERCENT, BURN, GETSUBS, HWACCEL, LOG_DIR, LOG_FILE, \
|
||||
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, \
|
||||
DELETE_ORIGINAL, TORRENT_CHMOD_DIRECTORY, PASSWORDSFILE, USER_DELAY, USER_SCRIPT, USER_SCRIPT_CLEAN, USER_SCRIPT_MEDIAEXTENSIONS, \
|
||||
USER_SCRIPT_PARAM, USER_SCRIPT_RUNONCE, USER_SCRIPT_SUCCESSCODES, DOWNLOADINFO, CHECK_MEDIA, SAFE_MODE, \
|
||||
TORRENT_DEFAULTDIR, NZB_DEFAULTDIR, REMOTEPATHS, LOG_ENV, PID_FILE, MYAPP, ACHANNELS, ACHANNELS2, ACHANNELS3, \
|
||||
TORRENT_DEFAULTDIR, TORRENT_RESUME_ON_FAILURE, NZB_DEFAULTDIR, REMOTEPATHS, LOG_ENV, PID_FILE, MYAPP, ACHANNELS, ACHANNELS2, ACHANNELS3, \
|
||||
PLEXSSL, PLEXHOST, PLEXPORT, PLEXTOKEN, PLEXSEC
|
||||
|
||||
if __INITIALIZED__:
|
||||
|
@ -339,6 +341,8 @@ def initialize(section=None):
|
|||
if isinstance(NOFLATTEN, str): NOFLATTEN = NOFLATTEN.split(',')
|
||||
if isinstance(CATEGORIES, str): CATEGORIES = CATEGORIES.split(',')
|
||||
DELETE_ORIGINAL = int(CFG["Torrent"]["deleteOriginal"])
|
||||
TORRENT_CHMOD_DIRECTORY = int(CFG["Torrent"]["chmodDirecotry"], 8)
|
||||
TORRENT_RESUME_ON_FAILURE = int(CFG["Torrent"]["resumeOnFailure"])
|
||||
UTORRENTWEBUI = CFG["Torrent"]["uTorrentWEBui"] # http://localhost:8090/gui/
|
||||
UTORRENTUSR = CFG["Torrent"]["uTorrentUSR"] # mysecretusr
|
||||
UTORRENTPWD = CFG["Torrent"]["uTorrentPWD"] # mysecretpwr
|
||||
|
@ -740,3 +744,15 @@ def restart():
|
|||
status = p.returncode
|
||||
|
||||
os._exit(status)
|
||||
|
||||
def rchmod(path, mod):
|
||||
logger.log("Changing file mode of %s to %s" % (path, oct(mod)))
|
||||
os.chmod(path, mod)
|
||||
if not os.path.isdir(path):
|
||||
return # Skip files
|
||||
|
||||
for root, dirs, files in os.walk(path):
|
||||
for d in dirs:
|
||||
os.chmod(os.path.join(root, d), mod)
|
||||
for f in files:
|
||||
os.chmod(os.path.join(root, f), mod)
|
||||
|
|
|
@ -3,10 +3,13 @@ import time
|
|||
import core
|
||||
import requests
|
||||
import time
|
||||
|
||||
from core.nzbToMediaUtil import convert_to_ascii, remoteDir, server_responding
|
||||
from core.nzbToMediaSceneExceptions import process_all_exceptions
|
||||
from core import logger
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
class autoProcessComics:
|
||||
def processEpisode(self, section, dirName, inputName=None, status=0, clientAgent='manual', inputCategory=None):
|
||||
if int(status) != 0:
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
import core
|
||||
import requests
|
||||
import shutil
|
||||
|
||||
from core.nzbToMediaUtil import convert_to_ascii, server_responding
|
||||
from core.nzbToMediaSceneExceptions import process_all_exceptions
|
||||
from core import logger
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
class autoProcessGames:
|
||||
def process(self, section, dirName, inputName=None, status=0, clientAgent='manual', inputCategory=None):
|
||||
status = int(status)
|
||||
|
|
|
@ -8,6 +8,7 @@ from core.nzbToMediaUtil import convert_to_ascii, rmDir, find_imdbid, find_downl
|
|||
from core import logger
|
||||
from core.transcoder import transcoder
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
class autoProcessMovie:
|
||||
def get_release(self, baseURL, imdbid=None, download_id=None, release_id=None):
|
||||
|
|
|
@ -7,6 +7,8 @@ from core.nzbToMediaUtil import convert_to_ascii, remoteDir, listMediaFiles, ser
|
|||
from core.nzbToMediaSceneExceptions import process_all_exceptions
|
||||
from core import logger
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
class autoProcessMusic:
|
||||
def get_status(self, url, apikey, dirName):
|
||||
logger.debug("Attempting to get current status for release:%s" % (os.path.basename(dirName)))
|
||||
|
|
|
@ -12,6 +12,8 @@ from core.nzbToMediaUtil import convert_to_ascii, flatten, rmDir, listMediaFiles
|
|||
from core import logger
|
||||
from core.transcoder import transcoder
|
||||
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
|
||||
class autoProcessTV:
|
||||
def command_complete(self, url, params, headers, section):
|
||||
r = None
|
||||
|
@ -104,6 +106,10 @@ class autoProcessTV:
|
|||
force = int(core.CFG[section][inputCategory]["force"])
|
||||
except:
|
||||
force = 0
|
||||
try:
|
||||
delete_on = int(core.CFG[section][inputCategory]["delete_on"])
|
||||
except:
|
||||
delete_on = 0
|
||||
try:
|
||||
extract = int(section[inputCategory]["extract"])
|
||||
except:
|
||||
|
@ -211,6 +217,12 @@ class autoProcessTV:
|
|||
else:
|
||||
del fork_params[param]
|
||||
|
||||
if param == "delete_on":
|
||||
if delete_on:
|
||||
fork_params[param] = delete_on
|
||||
else:
|
||||
del fork_params[param]
|
||||
|
||||
# delete any unused params so we don't pass them to SB by mistake
|
||||
[fork_params.pop(k) for k,v in fork_params.items() if v is None]
|
||||
|
||||
|
@ -276,6 +288,8 @@ class autoProcessTV:
|
|||
for line in r.iter_lines():
|
||||
if line:
|
||||
logger.postprocess("%s" % (line), section)
|
||||
if "Moving file from" in line:
|
||||
inputName = os.path.split(line)[1]
|
||||
if "Processing succeeded" in line or "Successfully processed" in line:
|
||||
Success = True
|
||||
elif section == "NzbDrone":
|
||||
|
|
|
@ -798,6 +798,9 @@ def find_download(clientAgent, download_id):
|
|||
if clientAgent == 'deluge':
|
||||
return False
|
||||
if clientAgent == 'sabnzbd':
|
||||
if "http" in core.SABNZBDHOST:
|
||||
baseURL = "%s:%s/api" % (core.SABNZBDHOST, core.SABNZBDPORT)
|
||||
else:
|
||||
baseURL = "http://%s:%s/api" % (core.SABNZBDHOST, core.SABNZBDPORT)
|
||||
url = baseURL
|
||||
params = {}
|
||||
|
@ -819,6 +822,9 @@ def find_download(clientAgent, download_id):
|
|||
def get_nzoid(inputName):
|
||||
nzoid = None
|
||||
logger.debug("Searching for nzoid from SAbnzbd ...")
|
||||
if "http" in core.SABNZBDHOST:
|
||||
baseURL = "%s:%s/api" % (core.SABNZBDHOST, core.SABNZBDPORT)
|
||||
else:
|
||||
baseURL = "http://%s:%s/api" % (core.SABNZBDHOST, core.SABNZBDPORT)
|
||||
url = baseURL
|
||||
params = {}
|
||||
|
@ -1057,7 +1063,7 @@ def server_responding(baseURL):
|
|||
|
||||
def plex_update(category):
|
||||
if core.PLEXSSL:
|
||||
ulr = 'https://'
|
||||
url = 'https://'
|
||||
else:
|
||||
url = 'http://'
|
||||
url = url + core.PLEXHOST + ':' + core.PLEXPORT + '/library/sections/'
|
||||
|
|
|
@ -277,8 +277,6 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd.extend(['-c:a:' + str(used_audio), core.ACODEC])
|
||||
else:
|
||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||
if core.ACODEC == 'aac':
|
||||
audio_cmd.extend(['-strict', '-2'])
|
||||
elif audio3: # just pick the default audio track
|
||||
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
||||
a_mapped.extend([audio3[0]["index"]])
|
||||
|
@ -292,8 +290,6 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd.extend(['-c:a:' + str(used_audio), core.ACODEC])
|
||||
else:
|
||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||
if core.ACODEC == 'aac':
|
||||
audio_cmd.extend(['-strict', '-2'])
|
||||
|
||||
if core.ACHANNELS and channels and channels > core.ACHANNELS:
|
||||
audio_cmd.extend(['-ac:a:' + str(used_audio), str(core.ACHANNELS)])
|
||||
|
@ -307,6 +303,8 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd.extend(['-q:a:' + str(used_audio), str(core.OUTPUTQUALITYPERCENT)])
|
||||
if audio_cmd[1] == 'copy':
|
||||
audio_cmd[1] = core.ACODEC
|
||||
if audio_cmd[1] == 'aac':
|
||||
audio_cmd[2:2] = ['-strict', '-2']
|
||||
|
||||
if core.ACODEC2_ALLOW:
|
||||
used_audio += 1
|
||||
|
@ -334,8 +332,6 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd2.extend(['-c:a:' + str(used_audio), core.ACODEC2])
|
||||
else:
|
||||
audio_cmd2.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||
if core.ACODEC2 == 'aac':
|
||||
audio_cmd2.extend(['-strict', '-2'])
|
||||
elif audio3: # just pick the default audio track
|
||||
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
||||
a_mapped.extend([audio3[0]["index"]])
|
||||
|
@ -349,8 +345,6 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd2.extend(['-c:a:' + str(used_audio), core.ACODEC2])
|
||||
else:
|
||||
audio_cmd2.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||
if core.ACODEC2 == 'aac':
|
||||
audio_cmd2.extend(['-strict', '-2'])
|
||||
|
||||
if core.ACHANNELS2 and channels and channels > core.ACHANNELS2:
|
||||
audio_cmd2.extend(['-ac:a:' + str(used_audio), str(core.ACHANNELS2)])
|
||||
|
@ -364,6 +358,8 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd2.extend(['-q:a:' + str(used_audio), str(core.OUTPUTQUALITYPERCENT)])
|
||||
if audio_cmd2[1] == 'copy':
|
||||
audio_cmd2[1] = core.ACODEC2
|
||||
if audio_cmd2[1] == 'aac':
|
||||
audio_cmd2[2:2] = ['-strict', '-2']
|
||||
audio_cmd.extend(audio_cmd2)
|
||||
|
||||
if core.AINCLUDE and audio3 and core.ACODEC3:
|
||||
|
@ -386,8 +382,6 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd3.extend(['-c:a:' + str(used_audio), core.ACODEC3])
|
||||
else:
|
||||
audio_cmd3.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||
if core.ACODEC3 == 'aac':
|
||||
audio_cmd3.extend(['-strict', '-2'])
|
||||
|
||||
if core.ACHANNELS3 and channels and channels > core.ACHANNELS3:
|
||||
audio_cmd3.extend(['-ac:a:' + str(used_audio), str(core.ACHANNELS3)])
|
||||
|
@ -401,6 +395,8 @@ def buildCommands(file, newDir, movieName, bitbucket):
|
|||
audio_cmd3.extend(['-q:a:' + str(used_audio), str(core.OUTPUTQUALITYPERCENT)])
|
||||
if audio_cmd3[1] == 'copy':
|
||||
audio_cmd3[1] = core.ACODEC3
|
||||
if audio_cmd3[1] == 'aac':
|
||||
audio_cmd3[2:2] = ['-strict', '-2']
|
||||
audio_cmd.extend(audio_cmd3)
|
||||
|
||||
s_mapped = []
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
# Media Extensions
|
||||
#
|
||||
# This is a list of media extensions that are used to verify that the download does contain valid media.
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.ts
|
||||
|
||||
## Posix
|
||||
|
||||
|
|
|
@ -301,7 +301,7 @@
|
|||
# Media Extensions
|
||||
#
|
||||
# This is a list of media extensions that are used to verify that the download does contain valid media.
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.ts
|
||||
|
||||
## Posix
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
# Media Extensions
|
||||
#
|
||||
# This is a list of media extensions that are used to verify that the download does contain valid media.
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.ts
|
||||
|
||||
## Posix
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
# Media Extensions
|
||||
#
|
||||
# This is a list of media extensions that are used to verify that the download does contain valid media.
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso
|
||||
#mediaExtensions=.mkv,.avi,.divx,.xvid,.mov,.wmv,.mp4,.mpg,.mpeg,.vob,.iso,.ts
|
||||
|
||||
## Posix
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue