mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-11 05:33:37 +00:00
e06e671d67
This fix correctly places the local libraries at the start of the sys.path such that they are loaded instead of any libraries that may already exist on the users system. This prevents the issue where a system library that isn't supported by SickGear is loaded and causes errors during operation.
201 lines
6.5 KiB
Python
Executable file
201 lines
6.5 KiB
Python
Executable file
#!/usr/bin/env python2
|
|
import sys
|
|
import os
|
|
import time
|
|
import ConfigParser
|
|
import logging
|
|
|
|
sickbeardPath = os.path.split(os.path.split(sys.argv[0])[0])[0]
|
|
sys.path.insert(1, os.path.join(sickbeardPath, 'lib'))
|
|
sys.path.insert(1, sickbeardPath)
|
|
configFilename = os.path.join(sickbeardPath, 'config.ini')
|
|
|
|
try:
|
|
import requests
|
|
except ImportError:
|
|
print ('You need to install python requests library')
|
|
sys.exit(1)
|
|
|
|
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 Release Name'
|
|
time.sleep(3)
|
|
sys.exit()
|
|
|
|
dirName = sys.argv[1]
|
|
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'
|
|
login_url = protocol + host + ':' + port + web_root + '/login'
|
|
|
|
scriptlogger.debug('Opening URL: ' + url + ' with params=' + str(params))
|
|
print 'Opening URL: ' + url + ' with params=' + str(params)
|
|
|
|
try:
|
|
sess = requests.Session()
|
|
sess.post(login_url, data={'username': username, 'password': password}, stream=True, verify=False)
|
|
response = sess.get(url, auth=(username, password), params=params, verify=False, allow_redirects=False)
|
|
except Exception, e:
|
|
scriptlogger.error(u': Unknown exception raised when opening url: ' + str(e))
|
|
time.sleep(3)
|
|
sys.exit()
|
|
|
|
if response.status_code == 401:
|
|
scriptlogger.error(u'Verify and use correct username and password in autoProcessTV.cfg')
|
|
print 'Verify and use correct username and password in autoProcessTV.cfg'
|
|
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()
|