@ -1,8 +1,3 @@
from couchpotato import web
from couchpotato . api import api
from couchpotato . core . logger import CPLog
from couchpotato . core . settings import settings
from libs . daemon import createDaemon
from logging import handlers
import argparse
import logging
@ -10,15 +5,30 @@ import os.path
import sys
def cmd_couchpotato ( base_path , argv = None ) :
from libs . daemon import createDaemon
from couchpotato import web
from couchpotato . api import api
from couchpotato . core . logger import CPLog
from couchpotato . core . settings import settings
def cmd_couchpotato ( base_path , argv = None ) :
''' Commandline entry point. '''
# Options
parser = argparse . ArgumentParser ( )
parser . add_argument ( ' -s ' , ' --datadir ' , dest = ' data_dir ' , default = base_path , help = ' Absolute or ~/ path, where settings/logs/database data is saved (default ./) ' )
parser . add_argument ( ' -t ' , ' --test ' , ' --debug ' , action = ' store_true ' , dest = ' debug ' , help = ' Debug mode ' )
parser . add_argument ( ' -q ' , ' --quiet ' , action = ' store_true ' , dest = ' quiet ' , help = " Don ' t log to console " )
parser . add_argument ( ' -d ' , ' --daemon ' , action = ' store_true ' , dest = ' daemonize ' , help = ' Daemonize the app ' )
parser . add_argument ( ' -s ' , ' --datadir ' , dest = ' data_dir ' ,
default = base_path ,
help = " Absolute or ~/ path, where "
" settings/logs/database data is saved (default ./) " )
parser . add_argument ( ' -t ' , ' --test ' , ' --debug ' , action = ' store_true ' ,
dest = ' debug ' , help = ' Debug mode ' )
parser . add_argument ( ' -q ' , ' --quiet ' , action = ' store_true ' , dest = ' quiet ' ,
help = " Don ' t log to console " )
parser . add_argument ( ' -d ' , ' --daemon ' , action = ' store_true ' ,
dest = ' daemonize ' , help = ' Daemonize the app ' )
args = argv if argv else sys . argv [ 1 : ]
options = parser . parse_args ( args )
@ -37,7 +47,7 @@ def cmd_couchpotato(base_path, argv = None):
# Register settings
settings . setFile ( os . path . join ( options . data_dir , ' settings.conf ' ) )
debug = options . debug or settings . get ( ' debug ' , default = False )
debug = options . debug or settings . get ( ' debug ' , default = False )
# Daemonize app
if options . daemonize :
@ -45,7 +55,8 @@ def cmd_couchpotato(base_path, argv = None):
# Logger
logger = logging . getLogger ( )
formatter = logging . Formatter ( ' %(asctime)s %(levelname)s %(message)s ' , ' % H: % M: % S ' )
formatter = logging . Formatter ( ' %(asctime)s %(levelname)s %(message)s ' ,
' % H: % M: % S ' )
level = logging . DEBUG if debug else logging . INFO
logger . setLevel ( level )
@ -56,7 +67,9 @@ def cmd_couchpotato(base_path, argv = None):
logger . addHandler ( hdlr )
# To file
hdlr2 = handlers . RotatingFileHandler ( os . path . join ( log_dir , ' CouchPotato.log ' ) , ' a ' , 5000000 , 4 )
hdlr2 = handlers . RotatingFileHandler ( os . path . join ( log_dir ,
' CouchPotato.log ' ) ,
' a ' , 5000000 , 4 )
hdlr2 . setFormatter ( formatter )
logger . addHandler ( hdlr2 )
@ -71,7 +84,7 @@ def cmd_couchpotato(base_path, argv = None):
# Load configs
from couchpotato . core . settings . loader import SettingsLoader
sl = SettingsLoader ( root = base_path )
sl = SettingsLoader ( root = base_path )
sl . addConfig ( ' couchpotato ' , ' core ' )
sl . run ( )
@ -83,20 +96,20 @@ def cmd_couchpotato(base_path, argv = None):
reloader = debug and not options . daemonize
# Basic config
app . host = settings . get ( ' host ' , default = ' 0.0.0.0 ' )
app . port = settings . get ( ' port ' , default = 5000 )
app . host = settings . get ( ' host ' , default = ' 0.0.0.0 ' )
app . port = settings . get ( ' port ' , default = 5000 )
app . debug = debug
app . secret_key = api_key
app . static_path = url_base + ' static '
# Add static url with url_base
app . add_url_rule ( app . static_path + ' /<path:filename> ' ,
endpoint = ' static ' ,
view_func = app . send_static_file )
endpoint = ' static ' ,
view_func = app . send_static_file )
# Register modules
app . register_module ( web , url_prefix = url_base )
app . register_module ( api , url_prefix = ' %s / %s ' % ( url_base + ' api ' , api_key ) )
app . register_module ( web , url_prefix = url_base )
app . register_module ( api , url_prefix = ' %s / %s ' % ( url_base + ' api ' , api_key ) )
# Go go go!
app . run ( use_reloader = reloader )
app . run ( use_reloader = reloader )