mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-13 21:05:11 -05:00
0d9fbc1ad7
This version of SickBeard uses both TVDB and TVRage to search and gather it's series data from allowing you to now have access to and download shows that you couldn't before because of being locked into only what TheTVDB had to offer. Also this edition is based off the code we used in our XEM editon so it does come with scene numbering support as well as all the other features our XEM edition has to offer. Please before using this with your existing database (sickbeard.db) please make a backup copy of it and delete any other database files such as cache.db and failed.db if present, we HIGHLY recommend starting out with no database files at all to make this a fresh start but the choice is at your own risk! Enjoy!
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()
|