mirror of
https://github.com/krateng/maloja.git
synced 2023-08-10 21:12:55 +03:00
Future-proofed update script
This commit is contained in:
95
maloja
95
maloja
@@ -30,10 +30,10 @@ def gotodir():
|
||||
elif os.path.exists("/opt/maloja/server.py"):
|
||||
os.chdir("/opt/maloja/")
|
||||
return True
|
||||
|
||||
|
||||
print("Maloja installation could not be found.")
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def setup():
|
||||
|
||||
@@ -41,7 +41,7 @@ def setup():
|
||||
if os.path.exists("./apikey"):
|
||||
with open("apikey","r") as keyfile:
|
||||
apikey = keyfile.read().replace("\n","")
|
||||
|
||||
|
||||
if apikey == "NONE": print("Currently not using an API key for image display. Only local images will be used.")
|
||||
else:
|
||||
print("Please enter your Last.FM API key. If you do not want to display artist and track images, simply leave this empty and press Enter.")
|
||||
@@ -49,7 +49,7 @@ def setup():
|
||||
if key == "": key = "NONE"
|
||||
with open("apikey","w") as keyfile:
|
||||
keyfile.write(key)
|
||||
|
||||
|
||||
# OWN API KEY
|
||||
if os.path.exists("./clients/authenticated_machines.tsv"):
|
||||
pass
|
||||
@@ -76,13 +76,13 @@ def install():
|
||||
exec("import " + m) #I'm sorry
|
||||
except:
|
||||
toinstall.append(m)
|
||||
|
||||
|
||||
for m in recommendedmodules:
|
||||
try:
|
||||
exec("import " + m)
|
||||
except:
|
||||
toinstallr.append(m)
|
||||
|
||||
|
||||
if toinstall != []:
|
||||
print("The following python modules need to be installed:")
|
||||
for m in toinstall:
|
||||
@@ -91,7 +91,7 @@ def install():
|
||||
print("The following python modules are highly recommended, some features will not work without them:")
|
||||
for m in toinstallr:
|
||||
print("\t" + m)
|
||||
|
||||
|
||||
if toinstall != [] or toinstallr != []:
|
||||
if os.geteuid() != 0:
|
||||
print("Installing python modules should be fairly straight-forward, but Maloja can try to install \
|
||||
@@ -104,7 +104,7 @@ def install():
|
||||
if toinstall != []:
|
||||
print("Attempt to install required modules? [Y/n]")
|
||||
answer = input()
|
||||
|
||||
|
||||
if answer.lower() in ["y","yes","yea","1","positive","true",""]:
|
||||
for m in neededmodules:
|
||||
try:
|
||||
@@ -116,16 +116,16 @@ def install():
|
||||
except:
|
||||
print("Failure!")
|
||||
fail = True
|
||||
|
||||
|
||||
elif answer.lower() in ["n","no","nay","0","negative","false"]:
|
||||
return False #if you dont want to auto install required, you probably dont want to install recommended
|
||||
else:
|
||||
print("What?")
|
||||
return False
|
||||
if toinstallr != []:
|
||||
if toinstallr != []:
|
||||
print("Attempt to install recommended modules? [Y/n]")
|
||||
answer = input()
|
||||
|
||||
|
||||
if answer.lower() in ["y","yes","yea","1","positive","true",""]:
|
||||
for m in recommendedmodules:
|
||||
try:
|
||||
@@ -137,17 +137,17 @@ def install():
|
||||
except:
|
||||
print("Failure!")
|
||||
fail = True
|
||||
|
||||
|
||||
elif answer.lower() in ["n","no","nay","0","negative","false"]:
|
||||
return False
|
||||
else:
|
||||
print("What?")
|
||||
return False
|
||||
|
||||
|
||||
if fail: return False
|
||||
print("All modules successfully installed!")
|
||||
return True
|
||||
|
||||
|
||||
else:
|
||||
print("All necessary modules seem to be installed.")
|
||||
return True
|
||||
@@ -161,18 +161,18 @@ def getInstance():
|
||||
return pid
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def start():
|
||||
if install():
|
||||
|
||||
|
||||
if gotodir():
|
||||
setup()
|
||||
p = subprocess.Popen(["python3","server.py"],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
|
||||
print(green("Maloja started!") + " PID: " + str(p.pid))
|
||||
|
||||
|
||||
print("Visit your server address (Port 42010) to see your web interface. Visit /setup to get started.")
|
||||
print("If you're installing this on your local machine, these links should get you there:")
|
||||
print("\t" + blue("http://localhost:42010"))
|
||||
@@ -183,11 +183,11 @@ def start():
|
||||
# p = subprocess.Popen(["python3","server.py"],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
|
||||
# print("Maloja started! PID: " + str(p.pid))
|
||||
# return True
|
||||
|
||||
|
||||
print("Error while starting Maloja.")
|
||||
return False
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def restart():
|
||||
#pid = getInstance()
|
||||
@@ -196,11 +196,11 @@ def restart():
|
||||
#else:
|
||||
# stop()
|
||||
#start()
|
||||
|
||||
|
||||
wasrunning = stop()
|
||||
start()
|
||||
return wasrunning
|
||||
|
||||
|
||||
def stop():
|
||||
pid = getInstance()
|
||||
if pid == None:
|
||||
@@ -225,33 +225,45 @@ def update():
|
||||
#with urllib.request.urlopen(SOURCE_URL) as response:
|
||||
# with tempfile.NamedTemporaryFile(delete=True) as tmpfile:
|
||||
# shutil.copyfileobj(response,tmpfile)
|
||||
#
|
||||
#
|
||||
# with zipfile.ZipFile(tmpfile.name,"r") as z:
|
||||
#
|
||||
#
|
||||
# for f in z.namelist():
|
||||
# #print("extracting " + f)
|
||||
# z.extract(f)
|
||||
|
||||
|
||||
|
||||
|
||||
os.system("wget " + SOURCE_URL)
|
||||
with zipfile.ZipFile("./master.zip","r") as z:
|
||||
|
||||
for f in z.namelist():
|
||||
#print("extracting " + f)
|
||||
z.extract(f)
|
||||
|
||||
|
||||
# if we ever have a separate directory for the code
|
||||
# (the calling update script is not the same version as the current
|
||||
# remote repository, so we better add this check just in case)
|
||||
if "source/" in z.namelist():
|
||||
for f in z.namelist():
|
||||
if f.startswith("source/"):
|
||||
z.extract(f)
|
||||
for dir,_,files in os.walk("source"):
|
||||
for f in files:
|
||||
origfile = os.path.join(dir,f)
|
||||
newfile = ps.path.join(dir[7:],f)
|
||||
os.renames(origfile,newfile) #also prunes empty directory
|
||||
else:
|
||||
for f in z.namelist():
|
||||
z.extract(f)
|
||||
|
||||
os.remove("./master.zip")
|
||||
|
||||
|
||||
|
||||
|
||||
distutils.dir_util.copy_tree("./maloja-master/","./",verbose=2)
|
||||
shutil.rmtree("./maloja-master")
|
||||
print("Done!")
|
||||
|
||||
|
||||
os.chmod("./maloja",os.stat("./maloja").st_mode | stat.S_IXUSR)
|
||||
|
||||
|
||||
if stop(): start() #stop returns whether it was running before, in which case we restart it
|
||||
|
||||
|
||||
|
||||
|
||||
def loadlastfm():
|
||||
|
||||
try:
|
||||
@@ -260,8 +272,8 @@ def loadlastfm():
|
||||
except:
|
||||
print("Please specify a file!")
|
||||
return
|
||||
|
||||
if gotodir():
|
||||
|
||||
if gotodir():
|
||||
if os.path.exists("./scrobbles/lastfmimport.tsv"):
|
||||
print("Already imported Last.FM data. Overwrite? [y/N]")
|
||||
if input().lower() in ["y","yes","yea","1","positive","true"]:
|
||||
@@ -271,7 +283,7 @@ def loadlastfm():
|
||||
print("Please wait...")
|
||||
os.system("python3 ./lastfmconverter.py " + filename + " ./scrobbles/lastfmimport.tsv")
|
||||
print("Successfully imported your Last.FM scrobbles!")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -281,4 +293,3 @@ if __name__ == "__main__":
|
||||
elif sys.argv[1] == "update": update()
|
||||
elif sys.argv[1] == "import": loadlastfm()
|
||||
else: print("Valid commands: start restart stop update")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user