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

98 lines
5.0 KiB
Markdown
Raw Normal View History

2018-11-27 18:31:52 +03:00
# Maloja
Simple self-hosted music scrobble database to create personal listening statistics. No recommendations, no social network, no nonsense.
You can check [my own Maloja page](https://maloja.krateng.ch) to see what it looks like.
2019-05-17 16:05:17 +03:00
## Why not Last.fm / Libre.fm / GNU FM?
2018-11-27 18:31:52 +03:00
2019-04-04 21:55:12 +03:00
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.
2018-11-27 18:31:52 +03:00
2019-04-04 21:55:12 +03:00
Maloja also gets **rid of all the extra stuff**: social networking, radios, recommendations, etc. It only keeps track of your listening history and lets you analyze it.
2018-11-27 18:31:52 +03:00
2019-04-04 21:55:12 +03:00
Maloja's database has one big advantage: It supports **multiple artists per track**. This means artists who are often just "featuring" in the track title get a place in your charts, and **collaborations between several artists finally get credited to all participants**. This allows you to get an actual idea of your artist preferences over time.
Also neat: You can use your **custom artist or track images**.
2018-11-27 18:31:52 +03:00
2019-02-17 18:27:55 +03:00
## Requirements
2018-12-06 15:36:42 +03:00
* [python3](https://www.python.org/) - [GitHub](https://github.com/python/cpython)
* [bottle.py](https://bottlepy.org/) - [GitHub](https://github.com/bottlepy/bottle)
* [waitress](https://docs.pylonsproject.org/projects/waitress/) - [GitHub](https://github.com/Pylons/waitress)
2019-05-23 15:16:44 +03:00
* [doreah](https://pypi.org/project/doreah/) - [GitHub](https://github.com/krateng/doreah) (at least Version 0.9.1)
* [nimrodel](https://pypi.org/project/nimrodel/) - [GitHub](https://github.com/krateng/nimrodel) (at least Version 0.4.9)
* [setproctitle](https://pypi.org/project/setproctitle/) - [GitHub](https://github.com/dvarrazzo/py-setproctitle)
* 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!
2018-12-06 15:36:42 +03:00
2019-02-17 18:27:55 +03:00
## How to install
2019-05-10 15:02:34 +03:00
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
2019-02-17 18:27:55 +03:00
2019-04-11 14:36:26 +03:00
./maloja install
2019-03-07 02:31:23 +03:00
2) Install required packages with
2019-02-16 23:43:57 +03:00
pip3 install -r requirements.txt
3) Start the server with
2019-03-24 15:45:59 +03:00
maloja start
2018-12-06 15:36:42 +03:00
4) (Recommended) Put your server behind a reverse proxy for SSL encryption.
2019-02-17 18:27:55 +03:00
## How to use
2019-03-08 13:52:59 +03:00
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.
2019-02-16 23:43:57 +03:00
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
2019-02-16 23:43:57 +03:00
2019-03-07 02:31:23 +03:00
maloja import *filename*
2019-03-24 15:45:59 +03:00
2019-03-07 02:31:23 +03:00
to import the downloaded file into Maloja.
2) You can interact with the server at any time with the commands
2019-03-24 15:45:59 +03:00
2019-03-07 02:31:23 +03:00
maloja stop
maloja restart
maloja start
maloja update
2019-03-24 15:45:59 +03:00
2019-03-10 20:14:50 +03:00
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.
2019-05-23 14:13:42 +03:00
4) If you'd like to implement anything on top of Maloja, visit `/api_explorer`.
## How to scrobble
### Native API
2019-05-20 18:38:05 +03:00
If you use Plex Web or Youtube Music on Chromium, you can use the included extension (also available on the [Chrome Web Store](https://chrome.google.com/webstore/detail/maloja-scrobbler/cfnbifdmgbnaalphodcbandoopgbfeeh)). Make sure to enter the random key Maloja generates on first startup in the extension settings.
2019-05-23 14:13:42 +03:00
If you want to implement your own method of scrobbling, it's very simple: You only need one POST request to `/api/newscrobble` with the keys `artist`, `title` and `key` - either as from-data or json.
### Standard-compliant API
You can use any third-party scrobbler that supports the audioscrobbler (GNUFM) or the ListenBrainz protocol. This is still very experimental, but give it a try with these settings:
GNU FM |  
------ | ---------
Gnukebox URL | Your Maloja URL followed by `/api/s/audioscrobbler`
Username | Any name, doesn't matter
Password | Any of your API keys
ListenBrainz |  
------ | ---------
API URL | Your Maloja URL followed by `/api/s/listenbrainz`
Username | Any name, doesn't matter
Auth Token | Any of your API keys
2019-05-17 16:05:17 +03:00
These are tested with the Pano Scrobbler and the Simple Last.fm Scrobbler for Android. I'm thankful for any feedback whether other scrobblers work!
It is recommended to define a different API key for every scrobbler you use in `clients/authenticated_machines.tsv` in your Maloja folder.
2019-05-14 14:04:05 +03:00
### Manual
2019-05-17 16:05:17 +03:00
If you can't automatically scrobble your music, you can always do it manually on the `/manual` page of your Maloja server.