remove package: 'SABnzbd-Suite', moving to unofficial

This commit is contained in:
Stefan Saraev 2013-07-12 20:08:47 +03:00 committed by Stephan Raue
parent ab2f126f6a
commit 4cc624fe64
16 changed files with 0 additions and 1007 deletions

View File

@ -1,49 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
cp -PR $PKG_DIR/config/settings.xml* $ADDON_BUILD/$PKG_ADDON_ID/settings-default.xml
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
cp $BUILD/par2cmdline-*/par2 $ADDON_BUILD/$PKG_ADDON_ID/bin
cp $BUILD/unrar/unrar $ADDON_BUILD/$PKG_ADDON_ID/bin
cp $BUILD/unzip*/unzip $ADDON_BUILD/$PKG_ADDON_ID/bin
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/pylib
cp -R $BUILD/Cheetah*/.install/usr/lib/python*/site-packages/* $ADDON_BUILD/$PKG_ADDON_ID/pylib
cp -R $BUILD/pyOpenSSL*/.install/usr/lib/python*/site-packages/* $ADDON_BUILD/$PKG_ADDON_ID/pylib
cp -R $BUILD/yenc*/.install/usr/lib/python*/site-packages/* $ADDON_BUILD/$PKG_ADDON_ID/pylib
cp -R $BUILD/configobj*/.install/usr/lib/python*/site-packages/* $ADDON_BUILD/$PKG_ADDON_ID/pylib
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/SABnzbd
cp -PR $BUILD/SABnzbd-*/* $ADDON_BUILD/$PKG_ADDON_ID/SABnzbd
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/SickBeard
cp -PR $BUILD/SickBeard-*/* $ADDON_BUILD/$PKG_ADDON_ID/SickBeard
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/CouchPotatoServer
cp -PR $BUILD/CouchPotatoServer-*/* $ADDON_BUILD/$PKG_ADDON_ID/CouchPotatoServer
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/Headphones
cp -PR $BUILD/Headphones-*/* $ADDON_BUILD/$PKG_ADDON_ID/Headphones

View File

@ -1,127 +0,0 @@
3.1.1
- rebuild for OpenELEC-3.2
3.0.9
- update to CouchPotatoServe-5c0d8a7
- update to Headphones-452cf15
- remove CouchPotato (v1)
3.0.8
- update to CouchPotatoServe-f1dde5c
- update to Headphones-ebbe908
- update to SickBeard-fb37d33
3.0.7
- update to CouchPotatoServe-5a23be2
- update to SickBeard-ebec1de
- fix executehttpapi startup error
3.0.6
- fix configobj error n startup
3.0.5
- rebuild. configobj included
3.0.4
- update to SickBeard-4e57625
- update to CouchPotatoServer-a49a00a
- fix keep awake option
3.0.3
- update to SABnzbd-0.7.11
- update to CouchPotatoServer-811f35b
- update to SickBeard-6cb5e76
- added option to restart the suite on suspend / resume
3.0.2
- Fixed bug causing configobj to throw an exception with Couchpotato v2s config
- corrected a bug causing most of the suite to crash on first launch in certain circumstances
- update to SABnzbd-0.7.9
- update to CouchPotatoServer-393c14d
- update to Headphones-263272c
- update to SickBeard-e6dcfb3
3.0.1
- bump addon version
2.1.8
- update to SABnzbd-0.7.3
- update to CouchPotato-806bed6
- update to CouchPotatoServer-e1d7440
- update to Headphones-d07dc39
- update to SickBeard-b7cf06e
2.1.7
- update to SABnzbd-0.7.0
- update to Headphones-89c2a8c
- perform "Keep awake while downloading" and "Wake up periodically" only if sabnzbd is enabled
- updated Turkish translation
2.1.6
- fixed another startup bug
2.1.5
- fixed bug in startup (caused by couchpotatoserver / configobj)
- add possibilty to start / stop addon from addon manager with enable / disable
2.1.4
- fixes bug in sleep control
- added couchpotato v2
- added ability to enable or disable parts of the Suite from the addon settings page
2.1.3
- fix so python dont steal xbmc's webserver port (again)
- add option to wake up periodically
- update to SickBeard-a24eac6
- update to Headphones-298463a
2.1.2
- improve startup script
2.1.1
- update to addon version 2.1
- update to SABnzbd-0.6.15
- update to SickBeard-a24eac6
- update to CouchPotato-46dbb59
- update to Headphones-818458e
2.0.1
- fix so python dont steal xbmc's webserver port
2.0.0
- prepare for OpenELEC-2.0 release
- update to SABnzbd-0.6.14
- update to SickBeard-9b43f71
- update to CouchPotato-75f12fa
- update to Headphones-8d80c6d
1.90.2
- depends on xbmc.python API 2.0
1.90.1
- rebuild for OpenSSL upgrade
1.90.0
- prepare for OpenELEC-1.90 release
1.0.0
- update to unrar-4.0.7
- update to CouchPotato-4eec8e0
- update to Headphones-e9a1e55
- update to SickBeard-9f64728
- update to SABnzbd-0.6.10
- prepare for OpenELEC-1.0 release
0.99.4
- add Headphones-ee3326e
0.99.3
- rebuild against fixed 'yenc', 'Cheetah' and 'pyOpenSSL'
0.99.2
- update to SABnzbd-0.6.7
- update to SickBeard-e0e8f0e
- update to CouchPotato-6cd66ae
0.99.1
- initial version SABnzbd-Suite

View File

@ -1,13 +0,0 @@
<settings>
<setting id="SABNZBD_IP" value="0.0.0.0" />
<setting id="SABNZBD_PWD" value="" />
<setting id="SABNZBD_USER" value="" />
<setting id="SABNZBD_KEEP_AWAKE" value="false" />
<setting id="SABNZBD_PERIODIC_WAKE" value="false" />
<setting id="SABNZBD_WAKE_AT" value="1" />
<setting id="SABNZBD_LAUNCH" value="true" />
<setting id="SICKBEARD_LAUNCH" value="true" />
<setting id="COUCHPOTATO_LAUNCH" value="true" />
<setting id="HEADPHONES_LAUNCH" value="true" />
<setting id="RESTART_ON_RESUME" value="false" />
</settings>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,38 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="SABnzbd-Suite"
PKG_VERSION="3.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.openelec.tv"
PKG_URL=""
PKG_DEPENDS="Python"
PKG_BUILD_DEPENDS="toolchain Python SABnzbd SickBeard Headphones CouchPotatoServer"
PKG_PRIORITY="optional"
PKG_SECTION="service/downloadmanager"
PKG_SHORTDESC="SABnzbd-Suite is a Metapackage which combines SABnzbd, SickBeard, Couchpotato and Headphones in one Addon"
PKG_LONGDESC="SABnzbd-Suite makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add a .nzb file. SABnzbd+ takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction."
PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="xbmc.service"
PKG_AUTORECONF="no"

View File

@ -1,466 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2012 Lukas Heiniger
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# Initializes and launches SABnzbd, Couchpotato, Sickbeard and Headphones
import os
import shutil
import xbmc
import signal
import subprocess
import urllib2
import hashlib
import sys
from xml.dom.minidom import parseString
import logging
import traceback
logging.basicConfig(filename='/var/log/sabnzbd-suite.log',
filemode='w',
format='%(asctime)s SABnzbd-Suite: %(message)s',
level=logging.WARNING)
# helper functions
# ----------------
def createDir(dir):
if not os.path.isdir(dir):
os.makedirs(dir)
def getAddonSetting(doc,id):
for element in doc.getElementsByTagName('setting'):
if element.getAttribute('id')==id:
return element.getAttribute('value')
def loadWebInterface(url,user,pwd):
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, pwd)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
pagehandle = urllib2.urlopen(url)
return pagehandle.read()
# define some things that we're gonna need, mainly paths
# ------------------------------------------------------
# addon
pAddon = os.path.expanduser('~/.xbmc/addons/service.downloadmanager.SABnzbd-Suite')
pAddonHome = os.path.expanduser('~/.xbmc/userdata/addon_data/service.downloadmanager.SABnzbd-Suite')
# settings
pDefaultSuiteSettings = os.path.join(pAddon, 'settings-default.xml')
pSuiteSettings = os.path.join(pAddonHome, 'settings.xml')
pXbmcSettings = '/storage/.xbmc/userdata/guisettings.xml'
pSabNzbdSettings = os.path.join(pAddonHome, 'sabnzbd.ini')
pSickBeardSettings = os.path.join(pAddonHome, 'sickbeard.ini')
pCouchPotatoServerSettings = os.path.join(pAddonHome, 'couchpotatoserver.ini')
pHeadphonesSettings = os.path.join(pAddonHome, 'headphones.ini')
pTransmission_Addon_Settings ='/storage/.xbmc/userdata/addon_data/service.downloadmanager.transmission/settings.xml'
# directories
pSabNzbdComplete = '/storage/downloads'
pSabNzbdCompleteMov = '/storage/downloads/movies'
pSabNzbdCompleteMusic = '/storage/downloads/music'
pSabNzbdIncomplete = '/storage/downloads/incomplete'
pSickBeardTvScripts = os.path.join(pAddon, 'SickBeard/autoProcessTV')
pSabNzbdScripts = os.path.join(pAddonHome, 'scripts')
# pylib
pPylib = os.path.join(pAddon, 'pylib')
# service commands
sabnzbd = ['python', os.path.join(pAddon, 'SABnzbd/SABnzbd.py'),
'-d', '-f', pSabNzbdSettings, '-l 0']
sickBeard = ['python', os.path.join(pAddon, 'SickBeard/SickBeard.py'),
'--daemon', '--datadir', pAddonHome, '--config', pSickBeardSettings]
couchPotatoServer = ['python', os.path.join(pAddon, 'CouchPotatoServer/CouchPotato.py'),
'--daemon', '--pid_file', os.path.join(pAddonHome, 'couchpotato.pid'), '--config_file', pCouchPotatoServerSettings]
headphones = ['python', os.path.join(pAddon, 'Headphones/Headphones.py'),
'-d', '--datadir', pAddonHome, '--config', pHeadphonesSettings]
# Other stuff
sabNzbdHost = '127.0.0.1:8081'
addonId = 'service.downloadmanager.SABnzbd-Suite'
# create directories and settings on first launch
# -----------------------------------------------
firstLaunch = not os.path.exists(pSabNzbdSettings)
if firstLaunch:
logging.debug('First launch, creating directories')
createDir(pAddonHome)
createDir(pSabNzbdComplete)
createDir(pSabNzbdCompleteMov)
createDir(pSabNzbdCompleteMusic)
createDir(pSabNzbdIncomplete)
createDir(pSabNzbdScripts)
shutil.copy(os.path.join(pSickBeardTvScripts,'sabToSickBeard.py'), pSabNzbdScripts)
shutil.copy(os.path.join(pSickBeardTvScripts,'autoProcessTV.py'), pSabNzbdScripts)
os.chmod(os.path.join(pSabNzbdScripts,'sabToSickBeard.py'), 0755)
# the settings file already exists if the user set settings before the first launch
if not os.path.exists(pSuiteSettings):
shutil.copy(pDefaultSuiteSettings, pSuiteSettings)
# make utilities executable
for utility in {'par2','unrar','unzip'}:
try:
os.chmod(os.path.join(pAddon, 'bin', utility), 0755)
except:
pass
# read addon and xbmc settings
# ----------------------------
# Transmission-Daemon
if os.path.exists(pTransmission_Addon_Settings):
fTransmission_Addon_Settings = open(pTransmission_Addon_Settings, 'r')
data = fTransmission_Addon_Settings.read()
fTransmission_Addon_Settings.close
transmission_addon_settings = parseString(data)
transuser = getAddonSetting(transmission_addon_settings, 'TRANSMISSION_USER')
transpwd = getAddonSetting(transmission_addon_settings, 'TRANSMISSION_PWD')
transauth = getAddonSetting(transmission_addon_settings, 'TRANSMISSION_AUTH')
else:
transauth = 'false'
# SABnzbd-Suite
fSuiteSettings = open(pSuiteSettings, 'r')
data = fSuiteSettings.read()
fSuiteSettings.close
suiteSettings = parseString(data)
user = getAddonSetting(suiteSettings, 'SABNZBD_USER')
pwd = getAddonSetting(suiteSettings, 'SABNZBD_PWD')
host = getAddonSetting(suiteSettings, 'SABNZBD_IP')
sabNzbdKeepAwake = getAddonSetting(suiteSettings, 'SABNZBD_KEEP_AWAKE')
sabnzbd_launch = getAddonSetting(suiteSettings, 'SABNZBD_LAUNCH')
sickbeard_launch = getAddonSetting(suiteSettings, 'SICKBEARD_LAUNCH')
couchpotato_launch = getAddonSetting(suiteSettings, 'COUCHPOTATO_LAUNCH')
headphones_launch = getAddonSetting(suiteSettings, 'HEADPHONES_LAUNCH')
# merge defaults
fDefaultSuiteSettings = open(pDefaultSuiteSettings, 'r')
data = fDefaultSuiteSettings.read()
fDefaultSuiteSettings.close
DefaultSuiteSettings = parseString(data)
if not sabnzbd_launch:
sabnzbd_launch = getAddonSetting(DefaultSuiteSettings, 'SABNZBD_LAUNCH')
if not sickbeard_launch:
sickbeard_launch = getAddonSetting(DefaultSuiteSettings, 'SICKBEARD_LAUNCH')
if not couchpotato_launch:
couchpotato_launch = getAddonSetting(DefaultSuiteSettings, 'COUCHPOTATO_LAUNCH')
if not headphones_launch:
headphones_launch = getAddonSetting(DefaultSuiteSettings, 'HEADPHONES_LAUNCH')
# XBMC
fXbmcSettings = open(pXbmcSettings, 'r')
data = fXbmcSettings.read()
fXbmcSettings.close
xbmcSettings = parseString(data)
xbmcServices = xbmcSettings.getElementsByTagName('services')[0]
xbmcPort = xbmcServices.getElementsByTagName('webserverport')[0].firstChild.data
try:
xbmcUser = xbmcServices.getElementsByTagName('webserverusername')[0].firstChild.data
except:
xbmcUser = ''
try:
xbmcPwd = xbmcServices.getElementsByTagName('webserverpassword')[0].firstChild.data
except:
xbmcPwd = ''
# prepare execution environment
# -----------------------------
signal.signal(signal.SIGCHLD, signal.SIG_DFL)
os.environ['PYTHONPATH'] = str(os.environ.get('PYTHONPATH')) + ':' + pPylib
sys.path.append(pPylib)
from configobj import ConfigObj
# SABnzbd start
try:
# write SABnzbd settings
# ----------------------
sabNzbdConfig = ConfigObj(pSabNzbdSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['misc'] = {}
defaultConfig['misc']['disable_api_key'] = '0'
defaultConfig['misc']['check_new_rel'] = '0'
defaultConfig['misc']['auto_browser'] = '0'
defaultConfig['misc']['username'] = user
defaultConfig['misc']['password'] = pwd
defaultConfig['misc']['port'] = '8081'
defaultConfig['misc']['https_port'] = '9081'
defaultConfig['misc']['https_cert'] = 'server.cert'
defaultConfig['misc']['https_key'] = 'server.key'
defaultConfig['misc']['host'] = host
defaultConfig['misc']['web_dir'] = 'Plush'
defaultConfig['misc']['web_dir2'] = 'Plush'
defaultConfig['misc']['web_color'] = 'gold'
defaultConfig['misc']['web_color2'] = 'gold'
defaultConfig['misc']['log_dir'] = 'logs'
defaultConfig['misc']['admin_dir'] = 'admin'
defaultConfig['misc']['nzb_backup_dir'] = 'backup'
defaultConfig['misc']['script_dir'] = 'scripts'
if firstLaunch:
defaultConfig['misc']['download_dir'] = pSabNzbdIncomplete
defaultConfig['misc']['complete_dir'] = pSabNzbdComplete
servers = {}
servers['localhost'] = {}
servers['localhost']['host'] = 'localhost'
servers['localhost']['port'] = '119'
servers['localhost']['enable'] = '0'
categories = {}
categories['tv'] = {}
categories['tv']['name'] = 'tv'
categories['tv']['script'] = 'sabToSickBeard.py'
categories['tv']['priority'] = '-100'
categories['movies'] = {}
categories['movies']['name'] = 'movies'
categories['movies']['dir'] = 'movies'
categories['movies']['priority'] = '-100'
categories['music'] = {}
categories['music']['name'] = 'music'
categories['music']['dir'] = 'music'
categories['music']['priority'] = '-100'
defaultConfig['servers'] = servers
defaultConfig['categories'] = categories
sabNzbdConfig.merge(defaultConfig)
sabNzbdConfig.write()
# also keep the autoProcessTV config up to date
autoProcessConfig = ConfigObj(os.path.join(pSabNzbdScripts, 'autoProcessTV.cfg'), create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['SickBeard'] = {}
defaultConfig['SickBeard']['host'] = 'localhost'
defaultConfig['SickBeard']['port'] = '8082'
defaultConfig['SickBeard']['username'] = user
defaultConfig['SickBeard']['password'] = pwd
autoProcessConfig.merge(defaultConfig)
autoProcessConfig.write()
# launch SABnzbd and get the API key
# ----------------------------------
if firstLaunch or "true" in sabnzbd_launch:
logging.debug('Launching SABnzbd...')
subprocess.call(sabnzbd,close_fds=True)
logging.debug('...done')
# SABnzbd will only complete the .ini file when we first access the web interface
if firstLaunch:
loadWebInterface('http://' + sabNzbdHost,user,pwd)
sabNzbdConfig.reload()
sabNzbdApiKey = sabNzbdConfig['misc']['api_key']
logging.debug('SABnzbd api key: ' + sabNzbdApiKey)
if firstLaunch and "false" in sabnzbd_launch:
urllib2.urlopen('http://' + sabNzbdHost + '/api?mode=shutdown&apikey=' + sabNzbdApiKey)
except Exception,e:
print 'SABnzbd: exception occurred:', e
print traceback.format_exc()
# SABnzbd end
# SickBeard start
try:
# write SickBeard settings
# ------------------------
sickBeardConfig = ConfigObj(pSickBeardSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['version_notify'] = '0'
defaultConfig['General']['log_dir'] = 'logs'
defaultConfig['General']['web_port'] = '8082'
defaultConfig['General']['web_host'] = host
defaultConfig['General']['web_username'] = user
defaultConfig['General']['web_password'] = pwd
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd'] = {}
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = 'http://' + sabNzbdHost + '/'
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['use_xbmc'] = '1'
defaultConfig['XBMC']['xbmc_host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['xbmc_username'] = xbmcUser
defaultConfig['XBMC']['xbmc_password'] = xbmcPwd
if firstLaunch:
defaultConfig['General']['metadata_xbmc'] = '1|1|1|1|1|1'
defaultConfig['General']['nzb_method'] = 'sabnzbd'
defaultConfig['General']['keep_processed_dir'] = '0'
defaultConfig['General']['use_banner'] = '1'
defaultConfig['General']['rename_episodes'] = '1'
defaultConfig['General']['naming_ep_name'] = '0'
defaultConfig['General']['naming_use_periods'] = '1'
defaultConfig['General']['naming_sep_type'] = '1'
defaultConfig['General']['naming_ep_type'] = '1'
defaultConfig['General']['root_dirs'] = '0|/storage/tvshows'
defaultConfig['SABnzbd']['sab_category'] = 'tv'
# workaround: on first launch, sick beard will always add
# 'http://' and trailing '/' on its own
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['XBMC']['xbmc_notify_ondownload'] = '1'
defaultConfig['XBMC']['xbmc_update_library'] = '1'
defaultConfig['XBMC']['xbmc_update_full'] = '1'
sickBeardConfig.merge(defaultConfig)
sickBeardConfig.write()
# launch SickBeard
# ----------------
if "true" in sickbeard_launch:
logging.debug('Launching SickBeard...')
subprocess.call(sickBeard,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'SickBeard: exception occurred:', e
print traceback.format_exc()
# SickBeard end
# CouchPotatoServer start
try:
# empty password hack
if pwd == '':
md5pwd = ''
else:
#convert password to md5
md5pwd = hashlib.md5(str(pwd)).hexdigest()
# write CouchPotatoServer settings
# --------------------------
couchPotatoServerConfig = ConfigObj(pCouchPotatoServerSettings,create_empty=True, list_values=False)
defaultConfig = ConfigObj()
defaultConfig['core'] = {}
defaultConfig['core']['username'] = user
defaultConfig['core']['password'] = md5pwd
defaultConfig['core']['port'] = '8083'
defaultConfig['core']['launch_browser'] = '0'
defaultConfig['core']['host'] = host
defaultConfig['core']['data_dir'] = pAddonHome
defaultConfig['core']['permission_folder'] = '0644'
defaultConfig['core']['permission_file'] = '0644'
defaultConfig['core']['show_wizard'] = '0'
defaultConfig['core']['debug'] = '0'
defaultConfig['core']['development'] = '0'
defaultConfig['updater'] = {}
defaultConfig['updater']['enabled'] = '0'
defaultConfig['updater']['notification'] = '0'
defaultConfig['updater']['automatic'] = '0'
if "true" in sabnzbd_launch:
defaultConfig['Sabnzbd'] = {}
defaultConfig['Sabnzbd']['username'] = user
defaultConfig['Sabnzbd']['password'] = pwd
defaultConfig['Sabnzbd']['api_key'] = sabNzbdApiKey
defaultConfig['Sabnzbd']['host'] = sabNzbdHost
defaultConfig['xbmc'] = {}
defaultConfig['xbmc']['enabled'] = '1'
defaultConfig['xbmc']['host'] = '127.0.0.1:' + xbmcPort
defaultConfig['xbmc']['username'] = xbmcUser
defaultConfig['xbmc']['password'] = xbmcPwd
if 'true' in transauth:
defaultConfig['transmission'] = {}
defaultConfig['transmission']['username'] = transuser
defaultConfig['transmission']['password'] = transpwd
defaultConfig['transmission']['directory'] = pSabNzbdCompleteMov
defaultConfig['transmission']['host'] = 'localhost:9091'
if firstLaunch:
defaultConfig['xbmc']['xbmc_update_library'] = '1'
defaultConfig['xbmc']['xbmc_update_full'] = '1'
defaultConfig['xbmc']['xbmc_notify_onsnatch'] = '1'
defaultConfig['xbmc']['xbmc_notify_ondownload'] = '1'
defaultConfig['Sabnzbd']['category'] = 'movies'
defaultConfig['Sabnzbd']['pp_directory'] = pSabNzbdCompleteMov
defaultConfig['Renamer'] = {}
defaultConfig['Renamer']['enabled'] = '1'
defaultConfig['Renamer']['download'] = pSabNzbdCompleteMov
defaultConfig['Renamer']['destination'] = '/storage/videos'
defaultConfig['Renamer']['separator'] = '.'
defaultConfig['Renamer']['cleanup'] = '0'
couchPotatoServerConfig.merge(defaultConfig)
couchPotatoServerConfig.write()
# launch CouchPotatoServer
# ------------------
if "true" in couchpotato_launch:
logging.debug('Launching CouchPotatoServer...')
subprocess.call(couchPotatoServer,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'CouchPotatoServer: exception occurred:', e
print traceback.format_exc()
# CouchPotatoServer end
# Headphones start
try:
# write Headphones settings
# -------------------------
headphonesConfig = ConfigObj(pHeadphonesSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['http_port'] = '8084'
defaultConfig['General']['http_host'] = host
defaultConfig['General']['http_username'] = user
defaultConfig['General']['http_password'] = pwd
defaultConfig['General']['check_github'] = '0'
defaultConfig['General']['check_github_on_startup'] = '0'
defaultConfig['General']['log_dir'] = pAddonHome + '/logs'
defaultConfig['General']['folder_permissions'] = '0644'
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['xbmc_enabled'] = '1'
defaultConfig['XBMC']['xbmc_host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['xbmc_username'] = xbmcUser
defaultConfig['XBMC']['xbmc_password'] = xbmcPwd
defaultConfig['SABnzbd'] = {}
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
if firstLaunch:
defaultConfig['SABnzbd']['sab_category'] = 'music'
defaultConfig['XBMC']['xbmc_update'] = '1'
defaultConfig['XBMC']['xbmc_notify'] = '1'
defaultConfig['General']['music_dir'] = '/storage/music'
defaultConfig['General']['destination_dir'] = '/storage/music'
defaultConfig['General']['download_dir'] = '/storage/downloads/music'
defaultConfig['General']['move_files'] = '1'
defaultConfig['General']['rename_files'] = '1'
headphonesConfig.merge(defaultConfig)
headphonesConfig.write()
# launch Headphones
# -----------------
if "true" in headphones_launch:
logging.debug('Launching Headphones...')
subprocess.call(headphones,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'Headphones: exception occurred:', e
print traceback.format_exc()
# Headphones end

View File

@ -1,2 +0,0 @@
#!/bin/sh
kill `ps | grep -E 'python.*service.downloadmanager.SABnzbd-Suite' | awk '{print $1}'` 2>/dev/null

View File

@ -1,139 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
import os
import sys
import xbmcaddon
import time
import subprocess
import xbmc
import urllib2
import socket
import time
import datetime
__scriptname__ = "SABnzbd Suite"
__author__ = "OpenELEC"
__url__ = "http://www.openelec.tv"
__settings__ = xbmcaddon.Addon(id='service.downloadmanager.SABnzbd-Suite')
__cwd__ = __settings__.getAddonInfo('path')
__start__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "SABnzbd-Suite.py") )
__stop__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "SABnzbd-Suite.stop") )
#make binary files executable in adson bin folder
subprocess.Popen("chmod -R +x " + __cwd__ + "/bin/*" , shell=True, close_fds=True)
checkInterval = 240
timeout = 20
wake_times = ['01:00','03:00','05:00','07:00','09:00','11:00','13:00','15:00','17:00','19:00','21:00','23:00']
idleTimer = 0
# Launch Suite
subprocess.call(['python',__start__])
# check for launching sabnzbd
sabNzbdLaunch = (__settings__.getSetting('SABNZBD_LAUNCH').lower() == 'true')
sys.path.append(os.path.join(__cwd__, 'pylib'))
from configobj import ConfigObj
if sabNzbdLaunch:
# SABnzbd addresses and api key
sabNzbdAddress = '127.0.0.1:8081'
sabNzbdConfigFile = '/storage/.xbmc/userdata/addon_data/service.downloadmanager.SABnzbd-Suite/sabnzbd.ini'
sabConfiguration = ConfigObj(sabNzbdConfigFile)
sabNzbdApiKey = sabConfiguration['misc']['api_key']
sabNzbdUser = sabConfiguration['misc']['username']
sabNzbdPass = sabConfiguration['misc']['password']
sabNzbdQueue = 'http://' + sabNzbdAddress + '/api?mode=queue&output=xml&apikey=' + sabNzbdApiKey + '&ma_username=' + sabNzbdUser + '&ma_password=' + sabNzbdPass
sabNzbdHistory = 'http://' + sabNzbdAddress + '/api?mode=history&output=xml&apikey=' + sabNzbdApiKey + '&ma_username=' + sabNzbdUser + '&ma_password=' + sabNzbdPass
sabNzbdQueueKeywords = ['<status>Downloading</status>', '<status>Fetching</status>', '<priority>Force</priority>']
sabNzbdHistoryKeywords = ['<status>Repairing</status>', '<status>Verifying</status>', '<status>Extracting</status>']
# start checking SABnzbd for activity and prevent sleeping if necessary
socket.setdefaulttimeout(timeout)
# perform some initial checks and log essential settings
shouldKeepAwake = (__settings__.getSetting('SABNZBD_KEEP_AWAKE').lower() == 'true')
wakePeriodically = (__settings__.getSetting('SABNZBD_PERIODIC_WAKE').lower() == 'true')
wakeHourIdx = int(__settings__.getSetting('SABNZBD_WAKE_AT'))
if shouldKeepAwake:
xbmc.log('SABnzbd-Suite: will prevent idle sleep/shutdown while downloading')
if wakePeriodically:
xbmc.log('SABnzbd-Suite: will try to wake system daily at ' + wake_times[wakeHourIdx])
while (not xbmc.abortRequested):
if sabNzbdLaunch:
# reread setting in case it has changed
shouldKeepAwake = (__settings__.getSetting('SABNZBD_KEEP_AWAKE').lower() == 'true')
wakePeriodically = (__settings__.getSetting('SABNZBD_PERIODIC_WAKE').lower() == 'true')
wakeHourIdx = int(__settings__.getSetting('SABNZBD_WAKE_AT'))
# check if SABnzbd is downloading
if shouldKeepAwake:
idleTimer += 1
# check SABnzbd every ~60s (240 cycles)
if idleTimer == checkInterval:
sabIsActive = False
idleTimer = 0
req = urllib2.Request(sabNzbdQueue)
try: handle = urllib2.urlopen(req)
except IOError, e:
xbmc.log('SABnzbd-Suite: could not determine SABnzbds queue status', level=xbmc.LOGERROR)
else:
queue = handle.read()
handle.close()
if any(x in queue for x in sabNzbdQueueKeywords):
sabIsActive = True
req = urllib2.Request(sabNzbdHistory)
try: handle = urllib2.urlopen(req)
except IOError, e:
xbmc.log('SABnzbd-Suite: could not determine SABnzbds history status', level=xbmc.LOGERROR)
else:
history = handle.read()
handle.close()
if any(x in history for x in sabNzbdHistoryKeywords):
sabIsActive = True
# reset idle timer if queue is downloading/reparing/verifying/extracting
if sabIsActive:
xbmc.executebuiltin('InhibitIdleShutdown(true)')
else:
xbmc.executebuiltin('InhibitIdleShutdown(false)')
# calculate and set the time to wake up at (if any)
if wakePeriodically:
wakeHour = wakeHourIdx * 2 + 1
timeOfDay = datetime.time(hour=wakeHour)
now = datetime.datetime.now()
wakeTime = now.combine(now.date(),timeOfDay)
if now.time() > timeOfDay:
wakeTime += datetime.timedelta(days=1)
secondsSinceEpoch = time.mktime(wakeTime.timetuple())
open("/sys/class/rtc/rtc0/wakealarm", "w").write("0")
open("/sys/class/rtc/rtc0/wakealarm", "w").write(str(secondsSinceEpoch))
time.sleep(0.250)
subprocess.Popen(__stop__, shell=True, close_fds=True)

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">Gebruikers instellingen</string>
<string id="1022">Gebruikersnaam</string>
<string id="1023">Wachtwoord</string>
<string id="2010">Netwerk instellingen</string>
<string id="2021">Toegestane IP adressen</string>
</strings>

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">User Settings</string>
<string id="1022">Username</string>
<string id="1023">Password</string>
<string id="1024">Enable SABnzbd</string>
<string id="1025">Enable Sickbeard</string>
<string id="1026">Enable Couchpotato</string>
<string id="1028">Enable Headphones</string>
<string id="2010">Network Settings</string>
<string id="2021">Allowed IP addresses</string>
<string id="3010">Sleep</string>
<string id="3021">Keep awake while downloading</string>
<string id="3030">Wake up periodically</string>
<string id="3031">Wake up at</string>
<string id="3032">Restart on suspend / resume</string>
</strings>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">Préférences utilisateur</string>
<string id="1022">Nom d'utilisateur</string>
<string id="1023">Mot de passe</string>
<string id="2010">Préférences réseau</string>
<string id="2021">Adresses IP autorisées</string>
</strings>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">Benutzer Einstellungen</string>
<string id="1022">Benutzername</string>
<string id="1023">Passwort</string>
<string id="2010">Netzwerk Einstellungen</string>
<string id="2021">Erlaubte IP Adressen</string>
<string id="3010">Ruhezustand</string>
<string id="3021">Verhindere Ruhezustand wenn aktiv</string>
<string id="3030">Periodisch aufwachen</string>
<string id="3031">Aufwachen um</string>
</strings>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">Bruker Instillinger</string>
<string id="1022">Brukernavn</string>
<string id="1023">Passord</string>
<string id="2010">Nettverksinstillinger</string>
<string id="2021">Tilatte IP addresser</string>
</strings>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- SABnzbd-Suite -->
<string id="1000">SABnzbd-Suite</string>
<string id="1010">Kullanıcı Ayarları</string>
<string id="1022">Kullanıcı adı</string>
<string id="1023">Parola</string>
<string id="1024">SABnzbd'yi Etkinleştir</string>
<string id="1025">Sickbeard'ı Etkinleştir</string>
<string id="1026">Couchpotato'yu Etkinleştir</string>
<string id="1028">Headphones'u Etkinleştir</string>
<string id="2010">Ağ Ayarları</string>
<string id="2021">İzin verilen IP adresleri</string>
<string id="3010">Uyku</string>
<string id="3021">İndirilirken uyanık tut</string>
<string id="3030">Düzenli olarak uyandır</string>
<string id="3031">Uyandırma zamanı</string>
</strings>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<!-- SABnzbd-Suite -->
<category label="1000">
<setting label="1010" type="lsep"/>
<setting type="sep" />
<setting id="SABNZBD_USER" type="text" label="1022" default="openelec"/>
<setting id="SABNZBD_PWD" type="text" label="1023" default="openelec"/>
<setting id="SABNZBD_LAUNCH" type="bool" label="1024" default="true" />
<setting id="SICKBEARD_LAUNCH" type="bool" label="1025" default="true" />
<setting id="COUCHPOTATO_LAUNCH" type="bool" label="1026" default="true" />
<setting id="HEADPHONES_LAUNCH" type="bool" label="1028" default="true" />
<setting label="2010" type="lsep"/>
<setting type="sep" />
<setting id="SABNZBD_IP" type="text" label="2021" default="0.0.0.0"/>
<setting label="3010" type="lsep"/>
<setting type="sep" />
<setting id="SABNZBD_KEEP_AWAKE" type="bool" label="3021" default="false" enable="eq(-10,true)" />
<setting id="SABNZBD_PERIODIC_WAKE" type="bool" label="3030" default="false" enable="eq(-11,true)" />
<setting id="SABNZBD_WAKE_AT" type="enum" subsetting="true" enable="eq(-1,true)"
label="3031" default="01"
values="|01:00|03:00|05:00|07:00|09:00|11:00|13:00|15:00|17:00|19:00|21:00|23:00"/>
<setting id="RESTART_ON_RESUME" type="bool" label="3032" default="false" />
</category>
</settings>

View File

@ -1,51 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.downloadmanager.SABnzbd-Suite"
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
RESTART_ON_RESUME=`grep RESTART_ON_RESUME $ADDON_SETTINGS | awk '{print $3}' | sed -e "s,value=,," -e "s,\",,g"`
LOCKFILE="/var/lock/SABnzbd-Suite.sleep"
if [ "$RESTART_ON_RESUME" == "true" ] ; then
case "$1" in
hibernate|suspend)
if [ ! -z "`ps | grep -E 'python.*service.downloadmanager.SABnzbd-Suite' | awk '{print $1}'`" ] ; then
progress "Shutting down SABnzbd-Suite for suspending..."
SABnzbd-Suite.stop
touch $LOCKFILE
fi
;;
thaw|resume)
progress "Restarting SABnzbd-Suite for wakeup..."
if [ -f "$LOCKFILE" ] ; then
rm -rf "$LOCKFILE"
python $HOME/.xbmc/addons/service.downloadmanager.SABnzbd-Suite/bin/SABnzbd-Suite.py
fi
;;
*) exit $NA
;;
esac
fi