mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-01 08:53:37 +00:00
221 lines
6.9 KiB
Python
221 lines
6.9 KiB
Python
|
#!/usr/bin/env python2
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import time
|
||
|
import ConfigParser
|
||
|
import logging
|
||
|
|
||
|
#Needed for importing logging & requests module
|
||
|
sickbeardPath = os.path.split(os.path.split(sys.argv[0])[0])[0]
|
||
|
sys.path.append(os.path.join( sickbeardPath, 'lib'))
|
||
|
sys.path.append(sickbeardPath)
|
||
|
configFilename = os.path.join(sickbeardPath, "config.ini")
|
||
|
|
||
|
import requests
|
||
|
|
||
|
config = ConfigParser.ConfigParser()
|
||
|
|
||
|
try:
|
||
|
fp = open(configFilename, "r")
|
||
|
config.readfp(fp)
|
||
|
fp.close()
|
||
|
except IOError, e:
|
||
|
print "Could not find/read Sickbeard config.ini: " + str(e)
|
||
|
print 'Possibly wrong mediaToSickbeard.py location. Ensure the file is in the autoProcessTV subdir of your Sickbeard installation'
|
||
|
time.sleep(3)
|
||
|
sys.exit(1)
|
||
|
|
||
|
scriptlogger = logging.getLogger('mediaToSickbeard')
|
||
|
formatter = logging.Formatter('%(asctime)s %(levelname)-8s MEDIATOSICKBEARD :: %(message)s', '%b-%d %H:%M:%S')
|
||
|
|
||
|
# Get the log dir setting from SB config
|
||
|
logdirsetting = config.get("General", "log_dir") if config.get("General", "log_dir") else 'Logs'
|
||
|
# put the log dir inside the SickBeard dir, unless an absolute path
|
||
|
logdir = os.path.normpath(os.path.join(sickbeardPath, logdirsetting))
|
||
|
logfile = os.path.join(logdir, 'sickbeard.log')
|
||
|
|
||
|
try:
|
||
|
handler = logging.FileHandler(logfile)
|
||
|
except:
|
||
|
print 'Unable to open/create the log file at ' + logfile
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
handler.setFormatter(formatter)
|
||
|
scriptlogger.addHandler(handler)
|
||
|
scriptlogger.setLevel(logging.DEBUG)
|
||
|
|
||
|
|
||
|
def utorrent():
|
||
|
# print 'Calling utorrent'
|
||
|
if len(sys.argv) < 2:
|
||
|
scriptlogger.error('No folder supplied - is this being called from uTorrent?')
|
||
|
print "No folder supplied - is this being called from uTorrent?"
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
dirName = sys.argv[1]
|
||
|
nzbName = sys.argv[2]
|
||
|
|
||
|
return (dirName, nzbName)
|
||
|
|
||
|
def transmission():
|
||
|
|
||
|
dirName = os.getenv('TR_TORRENT_DIR')
|
||
|
nzbName = os.getenv('TR_TORRENT_NAME')
|
||
|
|
||
|
return (dirName, nzbName)
|
||
|
|
||
|
def deluge():
|
||
|
|
||
|
if len(sys.argv) < 4:
|
||
|
scriptlogger.error('No folder supplied - is this being called from Deluge?')
|
||
|
print "No folder supplied - is this being called from Deluge?"
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
dirName = sys.argv[3]
|
||
|
nzbName = sys.argv[2]
|
||
|
|
||
|
return (dirName, nzbName)
|
||
|
|
||
|
def blackhole():
|
||
|
|
||
|
if None != os.getenv('TR_TORRENT_DIR'):
|
||
|
scriptlogger.debug('Processing script triggered by Transmission')
|
||
|
print "Processing script triggered by Transmission"
|
||
|
scriptlogger.debug(u'TR_TORRENT_DIR: ' + os.getenv('TR_TORRENT_DIR'))
|
||
|
scriptlogger.debug(u'TR_TORRENT_NAME: ' + os.getenv('TR_TORRENT_NAME'))
|
||
|
dirName = os.getenv('TR_TORRENT_DIR')
|
||
|
nzbName = os.getenv('TR_TORRENT_NAME')
|
||
|
else:
|
||
|
if len(sys.argv) < 2:
|
||
|
scriptlogger.error('No folder supplied - Your client should invoke the script with a Dir and a Relese Name')
|
||
|
print "No folder supplied - Your client should invoke the script with a Dir and a Relese Name"
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
dirName = sys.argv[1]
|
||
|
nzbName = sys.argv[2]
|
||
|
|
||
|
return (dirName, nzbName)
|
||
|
|
||
|
#def sabnzb():
|
||
|
# if len(sys.argv) < 2:
|
||
|
# scriptlogger.error('No folder supplied - is this being called from SABnzbd?')
|
||
|
# print "No folder supplied - is this being called from SABnzbd?"
|
||
|
# sys.exit()
|
||
|
# elif len(sys.argv) >= 3:
|
||
|
# dirName = sys.argv[1]
|
||
|
# nzbName = sys.argv[2]
|
||
|
# else:
|
||
|
# dirName = sys.argv[1]
|
||
|
#
|
||
|
# return (dirName, nzbName)
|
||
|
#
|
||
|
#def hella():
|
||
|
# if len(sys.argv) < 4:
|
||
|
# scriptlogger.error('No folder supplied - is this being called from HellaVCR?')
|
||
|
# print "No folder supplied - is this being called from HellaVCR?"
|
||
|
# sys.exit()
|
||
|
# else:
|
||
|
# dirName = sys.argv[3]
|
||
|
# nzbName = sys.argv[2]
|
||
|
#
|
||
|
# return (dirName, nzbName)
|
||
|
|
||
|
def main():
|
||
|
|
||
|
scriptlogger.info(u'Starting external PostProcess script ' + __file__)
|
||
|
|
||
|
host = config.get("General", "web_host")
|
||
|
port = config.get("General", "web_port")
|
||
|
username = config.get("General", "web_username")
|
||
|
password = config.get("General", "web_password")
|
||
|
try:
|
||
|
ssl = int(config.get("General", "enable_https"))
|
||
|
except (ConfigParser.NoOptionError, ValueError):
|
||
|
ssl = 0
|
||
|
|
||
|
try:
|
||
|
web_root = config.get("General", "web_root")
|
||
|
except ConfigParser.NoOptionError:
|
||
|
web_root = ""
|
||
|
|
||
|
tv_dir = config.get("General", "tv_download_dir")
|
||
|
use_torrents = int(config.get("General", "use_torrents"))
|
||
|
torrent_method = config.get("General", "torrent_method")
|
||
|
|
||
|
if not use_torrents:
|
||
|
scriptlogger.error(u'Enable Use Torrent on Sickbeard to use this Script. Aborting!')
|
||
|
print u'Enable Use Torrent on Sickbeard to use this Script. Aborting!'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if not torrent_method in ['utorrent', 'transmission', 'deluge', 'blackhole']:
|
||
|
scriptlogger.error(u'Unknown Torrent Method. Aborting!')
|
||
|
print u'Unknown Torrent Method. Aborting!'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
dirName, nzbName = eval(locals()['torrent_method'])()
|
||
|
|
||
|
if dirName is None:
|
||
|
scriptlogger.error(u'MediaToSickbeard script need a dir to be run. Aborting!')
|
||
|
print u'MediaToSickbeard script need a dir to be run. Aborting!'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if not os.path.isdir(dirName):
|
||
|
scriptlogger.error(u'Folder ' + dirName + ' does not exist. Aborting AutoPostProcess.')
|
||
|
print u'Folder ' + dirName + ' does not exist. Aborting AutoPostProcess.'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if nzbName and os.path.isdir(os.path.join(dirName, nzbName)):
|
||
|
dirName = os.path.join(dirName, nzbName)
|
||
|
|
||
|
params = {}
|
||
|
|
||
|
params['quiet'] = 1
|
||
|
|
||
|
params['dir'] = dirName
|
||
|
if nzbName != None:
|
||
|
params['nzbName'] = nzbName
|
||
|
|
||
|
if ssl:
|
||
|
protocol = "https://"
|
||
|
else:
|
||
|
protocol = "http://"
|
||
|
|
||
|
if host == '0.0.0.0':
|
||
|
host = 'localhost'
|
||
|
|
||
|
url = protocol + host + ":" + port + web_root + "/home/postprocess/processEpisode"
|
||
|
|
||
|
scriptlogger.debug("Opening URL: " + url + ' with params=' + str(params))
|
||
|
print "Opening URL: " + url + ' with params=' + str(params)
|
||
|
|
||
|
try:
|
||
|
response = requests.get(url, auth=(username, password), params=params)
|
||
|
except Exception, e:
|
||
|
scriptlogger.error(u': Unknown exception raised when opening url: ' + ex(e))
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if response.status_code == 401:
|
||
|
scriptlogger.error(u'Invalid Sickbeard Username or Password, check your config')
|
||
|
print 'Invalid Sickbeard Username or Password, check your config'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if response.status_code == 200:
|
||
|
scriptlogger.info(u'Script ' + __file__ + ' Succesfull')
|
||
|
print 'Script ' + __file__ + ' Succesfull'
|
||
|
time.sleep(3)
|
||
|
sys.exit()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|