Added optional auto-update feature.

This commit is contained in:
echel0n 2014-04-12 08:08:47 -07:00
commit 4b29cc9d04
2 changed files with 30 additions and 5 deletions

View file

@ -2,6 +2,7 @@
# For more information, visit https://github.com/clinton-hall/nzbToMedia/wiki # For more information, visit https://github.com/clinton-hall/nzbToMedia/wiki
[General] [General]
auto_update = 0
git_path = git_path =
git_user = git_user =
git_branch = git_branch =

View file

@ -1,4 +1,5 @@
import os import os
import subprocess
import sys import sys
import platform import platform
from nzbtomedia import logger, versionCheck from nzbtomedia import logger, versionCheck
@ -6,7 +7,6 @@ from nzbtomedia.nzbToMediaConfig import config
from nzbtomedia.nzbToMediaUtil import WakeUp from nzbtomedia.nzbToMediaUtil import WakeUp
# sabnzbd constants # sabnzbd constants
SABNZB_NO_OF_ARGUMENTS = 8 SABNZB_NO_OF_ARGUMENTS = 8
SABNZB_0717_NO_OF_ARGUMENTS = 9 SABNZB_0717_NO_OF_ARGUMENTS = 9
@ -38,8 +38,10 @@ CONFIG_SPEC_FILE = ''
CONFIG_MOVIE_FILE = '' CONFIG_MOVIE_FILE = ''
CONFIG_TV_FILE = '' CONFIG_TV_FILE = ''
SYS_ENCODING = '' SYS_ENCODING = ''
SYSV_ARGS = ''
# version constants # version constants
AUTO_UPDATE = None
NZBTOMEDIA_VERSION = None NZBTOMEDIA_VERSION = None
NZBTOMEDIA_BRANCH = None NZBTOMEDIA_BRANCH = None
NEWEST_VERSION = None NEWEST_VERSION = None
@ -87,11 +89,11 @@ def initialize():
global NZBGET_POSTPROCESS_ERROR, NZBGET_POSTPROCESS_NONE, NZBGET_POSTPROCESS_PARCHECK, NZBGET_POSTPROCESS_SUCCESS, \ global NZBGET_POSTPROCESS_ERROR, NZBGET_POSTPROCESS_NONE, NZBGET_POSTPROCESS_PARCHECK, NZBGET_POSTPROCESS_SUCCESS, \
NZBTOMEDIA_TIMEOUT, FORKS, FORK_DEFAULT, FORK_FAILED_TORRENT, FORK_FAILED, SICKBEARD_TORRENT, SICKBEARD_FAILED, \ NZBTOMEDIA_TIMEOUT, FORKS, FORK_DEFAULT, FORK_FAILED_TORRENT, FORK_FAILED, SICKBEARD_TORRENT, SICKBEARD_FAILED, \
PROGRAM_DIR, CFG, CFG_LOGGING, CONFIG_FILE, CONFIG_MOVIE_FILE, CONFIG_SPEC_FILE, LOG_DIR, NZBTOMEDIA_BRANCH, \ PROGRAM_DIR, CFG, CFG_LOGGING, CONFIG_FILE, CONFIG_MOVIE_FILE, CONFIG_SPEC_FILE, LOG_DIR, NZBTOMEDIA_BRANCH, \
CONFIG_TV_FILE, LOG_FILE, NZBTOMEDIA_VERSION, NEWEST_VERSION, NEWEST_VERSION_STRING, VERSION_NOTIFY, \ CONFIG_TV_FILE, LOG_FILE, NZBTOMEDIA_VERSION, NEWEST_VERSION, NEWEST_VERSION_STRING, VERSION_NOTIFY, SYSV_ARGS, \
SABNZB_NO_OF_ARGUMENTS, SABNZB_0717_NO_OF_ARGUMENTS, CATEGORIES, CLIENTAGENT, USELINK, OUTPUTDIRECTORY, NOFLATTEN, \ SABNZB_NO_OF_ARGUMENTS, SABNZB_0717_NO_OF_ARGUMENTS, CATEGORIES, CLIENTAGENT, USELINK, OUTPUTDIRECTORY, NOFLATTEN, \
UTORRENTPWD, UTORRENTUSR, UTORRENTWEBUI, DELUGEHOST, DELUGEPORT, DELUGEUSR, DELUGEPWD, TRANSMISSIONHOST, TRANSMISSIONPORT, \ UTORRENTPWD, UTORRENTUSR, UTORRENTWEBUI, DELUGEHOST, DELUGEPORT, DELUGEUSR, DELUGEPWD, TRANSMISSIONHOST, TRANSMISSIONPORT, \
TRANSMISSIONPWD, TRANSMISSIONUSR, COMPRESSEDCONTAINER, MEDIACONTAINER, METACONTAINER, MINSAMPLESIZE, SAMPLEIDS, \ TRANSMISSIONPWD, TRANSMISSIONUSR, COMPRESSEDCONTAINER, MEDIACONTAINER, METACONTAINER, MINSAMPLESIZE, SAMPLEIDS, \
SECTIONS, SUBSECTIONS, USER_SCRIPT_CATEGORIES, __INITIALIZED__, GIT_PATH, GIT_USER, GIT_BRANCH SECTIONS, SUBSECTIONS, USER_SCRIPT_CATEGORIES, __INITIALIZED__, GIT_PATH, GIT_USER, GIT_BRANCH, AUTO_UPDATE
if __INITIALIZED__: if __INITIALIZED__:
return False return False
@ -99,7 +101,7 @@ def initialize():
# add our custom libs to the system path # add our custom libs to the system path
sys.path.insert(0, os.path.abspath(os.path.join(PROGRAM_DIR, 'lib'))) sys.path.insert(0, os.path.abspath(os.path.join(PROGRAM_DIR, 'lib')))
# init paths and filenames # init preliminaries
PROGRAM_DIR = os.path.dirname(os.path.normpath(os.path.abspath(os.path.join(__file__, os.pardir)))) PROGRAM_DIR = os.path.dirname(os.path.normpath(os.path.abspath(os.path.join(__file__, os.pardir))))
LOG_DIR = os.path.join(PROGRAM_DIR, 'logs') LOG_DIR = os.path.join(PROGRAM_DIR, 'logs')
LOG_FILE = os.path.join(LOG_DIR, 'postprocess.log') LOG_FILE = os.path.join(LOG_DIR, 'postprocess.log')
@ -107,6 +109,7 @@ def initialize():
CONFIG_SPEC_FILE = os.path.join(PROGRAM_DIR, "autoProcessMedia.cfg.spec") CONFIG_SPEC_FILE = os.path.join(PROGRAM_DIR, "autoProcessMedia.cfg.spec")
CONFIG_MOVIE_FILE = os.path.join(PROGRAM_DIR, "autoProcessMovie.cfg") CONFIG_MOVIE_FILE = os.path.join(PROGRAM_DIR, "autoProcessMovie.cfg")
CONFIG_TV_FILE = os.path.join(PROGRAM_DIR, "autoProcessTv.cfg") CONFIG_TV_FILE = os.path.join(PROGRAM_DIR, "autoProcessTv.cfg")
SYSV_ARGS = sys.argv[1:]
if not nzbToMediaUtil.makeDir(LOG_DIR): if not nzbToMediaUtil.makeDir(LOG_DIR):
logger.error("!!! No log folder, logging to screen only!") logger.error("!!! No log folder, logging to screen only!")
@ -129,7 +132,14 @@ def initialize():
# check for newer version # check for newer version
versionCheck.CheckVersion().find_installed_version() versionCheck.CheckVersion().find_installed_version()
logger.info('nzbToMedia Version:' + NZBTOMEDIA_VERSION + ' Branch:' + NZBTOMEDIA_BRANCH + ' (' + platform.system() + '; ' + platform.release() + ')') logger.info('nzbToMedia Version:' + NZBTOMEDIA_VERSION + ' Branch:' + NZBTOMEDIA_BRANCH + ' (' + platform.system() + '; ' + platform.release() + ')')
versionCheck.CheckVersion().check_for_new_version() if CFG['General']['auto_update'] == 1 and versionCheck.CheckVersion().check_for_new_version():
logger.MESSAGE("Auto-Updating nzbToMedia, Please wait ...")
updated = versionCheck.CheckVersion().update()
if updated:
# restart nzbToMedia
restart()
else:
logger.ERROR("Update wasn't successful, not restarting. Check your log for more information.")
WakeUp() WakeUp()
@ -170,4 +180,18 @@ def initialize():
__INITIALIZED__ = True __INITIALIZED__ = True
return True return True
def restart():
install_type = versionCheck.CheckVersion().install_type
popen_list = []
if install_type in ('git', 'source'):
popen_list = [sys.executable, PROGRAM_DIR]
if popen_list:
popen_list += SYSV_ARGS
logger.log(u"Restarting nzbToMedia with " + str(popen_list))
logger.close()
subprocess.Popen(popen_list, cwd=os.getcwd())
os._exit(0)