From 0bf6e80e0710d3f9d089ef3f8cbcf36b75d0de50 Mon Sep 17 00:00:00 2001 From: Krateng Date: Fri, 29 Nov 2019 20:10:14 +0100 Subject: [PATCH] Added transition updater to version 2 --- README.md | 23 ++++++++++------------- info.py | 2 +- maloja | 29 +++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a6f0a41..afb33a1 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ Simple self-hosted music scrobble database to create personal listening statisti You can check [my own Maloja page](https://maloja.krateng.ch) to see what it looks like. +## **IMPORTANT NOTICE** + +**Update to Version 2** + +With the update 2.0, Maloja has been refactored into a Python package and the old update script no longer works. I will keep this repository on the old version for a while so that users with regular updates have a chance to load the transition script. If you have any trouble with updating, simply install Maloja as described below, then manually copy all your user data to your `~/.local/share/maloja` folder. + ## Why not Last.fm / Libre.fm / GNU FM? Maloja is **self-hosted**. You will always be able to access your data in an easily-parseable format. Your library is not synced with any public or official music database, so you can **follow your own tagging schema** or even **group associated artists together** in your charts. @@ -22,25 +28,18 @@ Also neat: You can use your **custom artist or track images**. ## How to install -1) Either install Maloja with the [debian package](https://github.com/krateng/maloja/raw/master/packages/maloja.deb), or download the repository to some arbitrary location. If you pick the manual installation, every command needs to be executed from the Maloja directory and led with `./`. You can also only download the file `maloja` instead of the whole repository and fetch the rest with +1) Install Maloja with - ./maloja install + pip3 install maloja -2) Install required packages with - - pip3 install -r requirements.txt - -3) Start the server with +2) Start the server with maloja start -4) (Recommended) Put your server behind a reverse proxy for SSL encryption. +3) (Recommended) Put your server behind a reverse proxy for SSL encryption. ## How to use -If you didn't install Maloja from the package (and therefore don't have it in `/opt/maloja`), every command needs to be executed from the Maloja directory and led with `./`. Otherwise, all commands work in any location and without the prefix. - - 1) If you would like to import all your previous last.fm scrobbles, use [benfoxall's website](https://benjaminbenben.com/lastfm-to-csv/) ([GitHub page](https://github.com/benfoxall/lastfm-to-csv)). Use the command maloja import *filename* @@ -54,8 +53,6 @@ If you didn't install Maloja from the package (and therefore don't have it in `/ maloja start maloja update - The `update` command will always fetch the latest version, while packages are only offered for release versions. - 3) Various folders have `.info` files with more information on how to use their associated features. 4) If you'd like to implement anything on top of Maloja, visit `/api_explorer`. diff --git a/info.py b/info.py index 941fd4b..9603d4f 100644 --- a/info.py +++ b/info.py @@ -5,6 +5,6 @@ author = { "email":"maloja@krateng.dev", "github": "krateng" } -version = 1,5,15 +version = 1,5,16 versionstr = ".".join(str(n) for n in version) dev = os.path.exists("./.dev") diff --git a/maloja b/maloja index 8019e20..dda79f6 100755 --- a/maloja +++ b/maloja @@ -39,6 +39,34 @@ def yellow(txt): return "\033[93m" + txt + "\033[0m" ## LOADLASTFM GOTODIR - imports csv data ## INSTALLHERE makes this directory valid - UPDATE - INSTALL - SETUP + + +def update_version_2(): + if gotodir(): + try: + DATA_DIR = os.environ["XDG_DATA_HOME"].split(":")[0] + assert os.path.exists(DATA_DIR) + except: + DATA_DIR = os.path.join(os.environ["HOME"],".local/share/") + + DATA_DIR = os.path.join(DATA_DIR,"maloja") + os.makedirs(DATA_DIR,exist_ok=True) + + print(yellow("With version 2.0, Maloja has been refactored into a python package. The updater will attempt to make this transition smooth.")) + print("Relocating user data...") + + import shutil + for folder in ["clients","images","logs","rules","scrobbles","settings"]: + shutil.copytree(folder,os.path.join(DATA_DIR,folder)) + + print("Installing pip package...") + + os.system("pip3 install maloja --upgrade --no-cache-dir") + + print(yellow("Maloja may now be started from any directory with the command"),blue("maloja start")) + print(yellow("Updates will continue to work with ") + blue("maloja update") + yellow(", but you may also use pip directly")) + print(yellow("Please test your new server installation. If it works correctly with all your scrobbles, rules, settings and custom images, you can delete your old Maloja directory.")) + def gotodir(): if os.path.exists("./server.py"): return True @@ -347,4 +375,5 @@ if __name__ == "__main__": elif sys.argv[1] == "update": update() elif sys.argv[1] == "import": loadlastfm() elif sys.argv[1] == "install": installhere() + elif sys.argv[1] == "update_v2": update_version_2() else: print("Valid commands: start restart stop update import install")