1
0
mirror of https://github.com/krateng/maloja.git synced 2023-08-10 21:12:55 +03:00

Added backup command

This commit is contained in:
Krateng 2019-12-10 20:05:19 +01:00
parent c99ccd0586
commit 01bf88f83d
4 changed files with 39 additions and 5 deletions

1
.gitignore vendored
View File

@ -5,7 +5,6 @@
*.note *.note
*.xcf *.xcf
nohup.out nohup.out
*.egg-info
# currently not using # currently not using
/screenshot*.png /screenshot*.png

View File

@ -21,7 +21,7 @@ Also neat: You can use your **custom artist or track images**.
## Requirements ## Requirements
* Python 3 * Python 3.5 or higher
* Several Pip packages (automatically downloaded) * Several Pip packages (automatically downloaded)
* If you'd like to display images, you will need API keys for [Last.fm](https://www.last.fm/api/account/create) and [Fanart.tv](https://fanart.tv/get-an-api-key/). These are free of charge! * If you'd like to display images, you will need API keys for [Last.fm](https://www.last.fm/api/account/create) and [Fanart.tv](https://fanart.tv/get-an-api-key/). These are free of charge!

View File

@ -7,7 +7,7 @@ author = {
"email":"maloja@krateng.dev", "email":"maloja@krateng.dev",
"github": "krateng" "github": "krateng"
} }
version = 2,0,7 version = 2,0,8
versionstr = ".".join(str(n) for n in version) versionstr = ".".join(str(n) for n in version)

View File

@ -161,16 +161,51 @@ def loadlastfm(filename):
def direct(): def direct():
from . import server from . import server
def backup(level="full"):
import tarfile
from datetime import date
import glob
@mainfunction({},shield=True)
user_files = {
"minimal":[
"rules/*.tsv",
"scrobbles"
],
"full":[
"clients/authenticated_machines.tsv",
"images/artists",
"images/tracks",
"settings/settings.ini"
]
}
user_files = user_files["minimal"] if level == "minimal" else user_files["minimal"] + user_files["full"]
real_files = []
for g in user_files:
real_files += glob.glob(g)
today = date.today()
datestr = "-".join((str(today.year),str(today.month),str(today.day)))
filename = "maloja_backup_" + datestr + ".tar.gz"
archivefile = os.path.join(origpath,filename)
assert not os.path.exists(archivefile)
with tarfile.open(name=archivefile,mode="x:gz") as archive:
for f in real_files:
archive.add(f)
@mainfunction({"l":"level"},shield=True)
def main(action,*args,**kwargs): def main(action,*args,**kwargs):
actions = { actions = {
"start":restart, "start":restart,
"restart":restart, "restart":restart,
"stop":stop, "stop":stop,
"import":loadlastfm, "import":loadlastfm,
"debug":direct "debug":direct,
"backup":backup
} }
if action in actions: actions[action](*args,**kwargs) if action in actions: actions[action](*args,**kwargs)
else: print("Valid commands: " + " ".join(a for a in actions)) else: print("Valid commands: " + " ".join(a for a in actions))