malojaserver 3.2.2__py3-none-any.whl → 3.2.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- maloja/__main__.py +1 -94
- maloja/__pkginfo__.py +1 -1
- maloja/apis/_base.py +26 -19
- maloja/apis/_exceptions.py +1 -1
- maloja/apis/audioscrobbler.py +35 -7
- maloja/apis/audioscrobbler_legacy.py +5 -5
- maloja/apis/listenbrainz.py +8 -5
- maloja/apis/native_v1.py +43 -26
- maloja/cleanup.py +9 -7
- maloja/data_files/config/rules/predefined/krateng_kpopgirlgroups.tsv +2 -2
- maloja/database/__init__.py +68 -23
- maloja/database/associated.py +10 -6
- maloja/database/exceptions.py +28 -3
- maloja/database/sqldb.py +216 -168
- maloja/dev/profiler.py +3 -4
- maloja/images.py +6 -0
- maloja/malojauri.py +2 -0
- maloja/pkg_global/conf.py +30 -28
- maloja/proccontrol/tasks/export.py +2 -1
- maloja/proccontrol/tasks/import_scrobbles.py +110 -47
- maloja/server.py +11 -10
- maloja/setup.py +29 -17
- maloja/web/jinja/abstracts/base.jinja +1 -1
- maloja/web/jinja/admin_albumless.jinja +2 -0
- maloja/web/jinja/admin_issues.jinja +2 -2
- maloja/web/jinja/admin_overview.jinja +3 -3
- maloja/web/jinja/admin_setup.jinja +3 -3
- maloja/web/jinja/partials/album_showcase.jinja +1 -1
- maloja/web/jinja/snippets/entityrow.jinja +2 -2
- maloja/web/jinja/snippets/links.jinja +3 -1
- maloja/web/static/css/maloja.css +8 -2
- maloja/web/static/css/startpage.css +2 -2
- maloja/web/static/js/manualscrobble.js +2 -2
- maloja/web/static/js/notifications.js +16 -8
- maloja/web/static/js/search.js +18 -12
- maloja/web/static/js/upload.js +1 -1
- {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/METADATA +24 -72
- {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/RECORD +42 -42
- {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/WHEEL +1 -1
- /maloja/data_files/state/{scrobbles → import}/dummy +0 -0
- {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/LICENSE +0 -0
- {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/entry_points.txt +0 -0
@@ -24,7 +24,7 @@
|
|
24
24
|
keys = "filename=" + encodeURIComponent(filename);
|
25
25
|
console.log(keys);
|
26
26
|
var xhttp = new XMLHttpRequest();
|
27
|
-
xhttp.open("POST","/
|
27
|
+
xhttp.open("POST","/apis/mlj_1/importrules", true);
|
28
28
|
xhttp.send(keys);
|
29
29
|
|
30
30
|
e.innerHTML = e.innerHTML.replace("Add","Remove");
|
@@ -36,7 +36,7 @@
|
|
36
36
|
keys = "remove&filename=" + encodeURIComponent(filename);
|
37
37
|
|
38
38
|
var xhttp = new XMLHttpRequest();
|
39
|
-
xhttp.open("POST","/
|
39
|
+
xhttp.open("POST","/apis/mlj_1/importrules", true);
|
40
40
|
xhttp.send(keys);
|
41
41
|
|
42
42
|
e.innerHTML = e.innerHTML.replace("Remove","Add");
|
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
If you use a Chromium-based browser and listen to music on Plex, Spotify, Soundcloud, Bandcamp or YouTube Music, download the extension and simply enter the server URL as well as your API key in the relevant fields. They will turn green if the server is accessible.
|
58
58
|
<br/><br/>
|
59
|
-
You can also use any standard-compliant scrobbler. For GNUFM (audioscrobbler) scrobblers, enter <span class="stats"><span name="serverurl">yourserver.tld</span>/apis/audioscrobbler</span> as your Gnukebox server and your API key as the password. For Listenbrainz scrobblers, use <span class="stats"><span name="serverurl">yourserver.tld</span>/apis/listenbrainz</span> as the API URL and your API key as token.
|
59
|
+
You can also use any standard-compliant scrobbler. For GNUFM (audioscrobbler) scrobblers, enter <span class="stats"><span name="serverurl">yourserver.tld</span>/apis/audioscrobbler</span> as your Gnukebox server and your API key as the password. For Listenbrainz scrobblers, use <span class="stats"><span name="serverurl">yourserver.tld</span>/apis/listenbrainz</span> as the API URL (depending on the implementation, you might need to add a <span class="stats">/1</span> at the end) and your API key as token.
|
60
60
|
<br/><br/>
|
61
61
|
If you use another browser or another music player, you could try to code your own extension. The API is super simple! Just send a POST HTTP request to
|
62
62
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
{% for entry in dbc.get_charts_albums(filterkeys,limitkeys,{'only_own_albums':False}) %}
|
30
30
|
|
31
31
|
|
32
|
-
{% if artist not in (entry.album.artists or []) %}
|
32
|
+
{% if info.artist not in (entry.album.artists or []) %}
|
33
33
|
|
34
34
|
{%- set cert = None -%}
|
35
35
|
{%- if entry.scrobbles >= settings.scrobbles_gold_album -%}{% set cert = 'gold' %}{%- endif -%}
|
@@ -20,11 +20,11 @@
|
|
20
20
|
<td class='searchProvider'>{{ links.link_search(entity) }}</td>
|
21
21
|
{% endif %}
|
22
22
|
<td class='track'>
|
23
|
-
<span class='artist_in_trackcolumn'>{{ links.links(entity.artists) }}</span> – {{ links.link(entity) }}
|
23
|
+
<span class='artist_in_trackcolumn'>{{ links.links(entity.artists, restrict_amount=True) }}</span> – {{ links.link(entity) }}
|
24
24
|
</td>
|
25
25
|
{% elif entity is mapping and 'albumtitle' in entity %}
|
26
26
|
<td class='album'>
|
27
|
-
<span class='
|
27
|
+
<span class='artist_in_albumcolumn'>{{ links.links(entity.artists, restrict_amount=True) }}</span> – {{ links.link(entity) }}
|
28
28
|
</td>
|
29
29
|
{% else %}
|
30
30
|
<td class='artist'>{{ links.link(entity) }}
|
@@ -8,9 +8,11 @@
|
|
8
8
|
<a href="{{ url(entity) }}">{{ name | e }}</a>
|
9
9
|
{%- endmacro %}
|
10
10
|
|
11
|
-
{% macro links(entities) -%}
|
11
|
+
{% macro links(entities, restrict_amount=False) -%}
|
12
12
|
{% if entities is none or entities == [] %}
|
13
13
|
{{ settings["DEFAULT_ALBUM_ARTIST"] }}
|
14
|
+
{% elif entities.__len__() > 3 and restrict_amount %}
|
15
|
+
{{ link(entities[0]) }} et al.
|
14
16
|
{% else %}
|
15
17
|
{% for entity in entities -%}
|
16
18
|
{{ link(entity) }}{{ ", " if not loop.last }}
|
maloja/web/static/css/maloja.css
CHANGED
@@ -363,12 +363,14 @@ div#notification_area {
|
|
363
363
|
right:20px;
|
364
364
|
}
|
365
365
|
div#notification_area div.notification {
|
366
|
-
background-color:
|
366
|
+
background-color:black;
|
367
367
|
width:400px;
|
368
368
|
min-height:50px;
|
369
369
|
margin-bottom:7px;
|
370
370
|
padding:9px;
|
371
|
-
opacity:0.
|
371
|
+
opacity:0.5;
|
372
|
+
border-left: 8px solid var(--notification-color);
|
373
|
+
border-radius: 3px;
|
372
374
|
}
|
373
375
|
div#notification_area div.notification:hover {
|
374
376
|
opacity:0.95;
|
@@ -781,6 +783,9 @@ table.list td.artists,td.artist,td.title,td.track {
|
|
781
783
|
table.list td.track span.artist_in_trackcolumn {
|
782
784
|
color: var(--text-color-secondary);
|
783
785
|
}
|
786
|
+
table.list td.album span.artist_in_albumcolumn {
|
787
|
+
color: var(--text-color-secondary);
|
788
|
+
}
|
784
789
|
|
785
790
|
table.list td.searchProvider {
|
786
791
|
width: 20px;
|
@@ -987,6 +992,7 @@ table.misc td {
|
|
987
992
|
|
988
993
|
|
989
994
|
div.tiles {
|
995
|
+
max-height: 600px;
|
990
996
|
display: grid;
|
991
997
|
grid-template-columns: repeat(18, calc(100% / 18));
|
992
998
|
grid-template-rows: repeat(6, calc(100% / 6));
|
@@ -22,8 +22,8 @@ div#startpage {
|
|
22
22
|
|
23
23
|
@media (min-width: 1401px) and (max-width: 2200px) {
|
24
24
|
div#startpage {
|
25
|
-
grid-template-columns:
|
26
|
-
grid-template-rows:
|
25
|
+
grid-template-columns: repeat(2, 45vw);
|
26
|
+
grid-template-rows: repeat(3, 45vh);
|
27
27
|
|
28
28
|
grid-template-areas:
|
29
29
|
"charts_artists lastscrobbles"
|
@@ -126,7 +126,7 @@ function scrobble(artists,title,albumartists,album,timestamp) {
|
|
126
126
|
lastArtists = artists;
|
127
127
|
lastTrack = title;
|
128
128
|
lastAlbum = album;
|
129
|
-
lastAlbumartists = albumartists;
|
129
|
+
lastAlbumartists = albumartists || [];
|
130
130
|
|
131
131
|
var payload = {
|
132
132
|
"artists":artists,
|
@@ -186,7 +186,7 @@ function search_manualscrobbling(searchfield) {
|
|
186
186
|
else {
|
187
187
|
xhttp = new XMLHttpRequest();
|
188
188
|
xhttp.onreadystatechange = searchresult_manualscrobbling;
|
189
|
-
xhttp.open("GET","/
|
189
|
+
xhttp.open("GET","/apis/mlj_1/search?max=5&query=" + encodeURIComponent(txt), true);
|
190
190
|
xhttp.send();
|
191
191
|
}
|
192
192
|
}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
// JS for feedback to the user whenever any XHTTP action is taken
|
2
2
|
|
3
3
|
const colors = {
|
4
|
-
|
4
|
+
'error': 'red',
|
5
|
+
'warning':'#8ACC26',
|
5
6
|
'info':'green'
|
6
7
|
}
|
7
8
|
|
9
|
+
|
8
10
|
const notification_template = info => `
|
9
|
-
<div class="notification" style="
|
11
|
+
<div class="notification" style="--notification-color: ${colors[info.notification_type]};">
|
10
12
|
<b>${info.title}</b><br/>
|
11
13
|
<span>${info.body}</span>
|
12
14
|
|
@@ -35,18 +37,24 @@ function notify(title,msg,notification_type='info',reload=false) {
|
|
35
37
|
}
|
36
38
|
|
37
39
|
function notifyCallback(request) {
|
38
|
-
var
|
40
|
+
var response = request.response;
|
39
41
|
var status = request.status;
|
40
42
|
|
41
43
|
if (status == 200) {
|
42
|
-
|
44
|
+
if (response.hasOwnProperty('warnings') && response.warnings.length > 0) {
|
45
|
+
var notification_type = 'warning';
|
46
|
+
}
|
47
|
+
else {
|
48
|
+
var notification_type = 'info';
|
49
|
+
}
|
50
|
+
|
43
51
|
var title = "Success!";
|
44
|
-
var msg =
|
52
|
+
var msg = response.desc || response;
|
45
53
|
}
|
46
54
|
else {
|
47
|
-
var notification_type = '
|
48
|
-
var title = "Error: " +
|
49
|
-
var msg =
|
55
|
+
var notification_type = 'error';
|
56
|
+
var title = "Error: " + response.error.type;
|
57
|
+
var msg = response.error.desc || "";
|
50
58
|
}
|
51
59
|
|
52
60
|
|
maloja/web/static/js/search.js
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
var searches = []
|
1
|
+
var searches = [];
|
2
|
+
var debounceTimer;
|
2
3
|
|
3
4
|
function search(searchfield) {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
clearTimeout(debounceTimer);
|
6
|
+
debounceTimer = setTimeout(() => {
|
7
|
+
const txt = searchfield.value;
|
8
|
+
if (txt == "") {
|
9
|
+
reallyclear();
|
10
|
+
}
|
11
|
+
else {
|
12
|
+
const xhttp = new XMLHttpRequest();
|
13
|
+
searches.push(xhttp);
|
14
|
+
xhttp.onreadystatechange = searchresult
|
15
|
+
xhttp.open("GET","/apis/mlj_1/search?max=5&query=" + encodeURIComponent(txt), true);
|
16
|
+
xhttp.send();
|
17
|
+
}
|
18
|
+
}, 1000);
|
19
|
+
|
20
|
+
|
15
21
|
}
|
16
22
|
|
17
23
|
|
maloja/web/static/js/upload.js
CHANGED
@@ -1,27 +1,29 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.3
|
2
2
|
Name: malojaserver
|
3
|
-
Version: 3.2.
|
3
|
+
Version: 3.2.4
|
4
4
|
Summary: Self-hosted music scrobble database
|
5
5
|
Keywords: scrobbling,music,selfhosted,database,charts,statistics
|
6
6
|
Author-email: Johannes Krattenmacher <maloja@dev.krateng.ch>
|
7
|
-
Requires-Python:
|
7
|
+
Requires-Python: ==3.12.*
|
8
8
|
Description-Content-Type: text/markdown
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
10
10
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
11
11
|
Classifier: Operating System :: OS Independent
|
12
|
-
Requires-Dist: bottle
|
13
|
-
Requires-Dist: waitress
|
14
|
-
Requires-Dist: doreah
|
15
|
-
Requires-Dist: nimrodel
|
16
|
-
Requires-Dist: setproctitle
|
17
|
-
Requires-Dist: jinja2
|
18
|
-
Requires-Dist: lru-dict
|
19
|
-
Requires-Dist: psutil
|
20
|
-
Requires-Dist: sqlalchemy
|
21
|
-
Requires-Dist: python-datauri
|
22
|
-
Requires-Dist:
|
23
|
-
Requires-Dist:
|
24
|
-
Requires-Dist:
|
12
|
+
Requires-Dist: bottle==0.13.*
|
13
|
+
Requires-Dist: waitress==3.0.*
|
14
|
+
Requires-Dist: doreah==2.0.*
|
15
|
+
Requires-Dist: nimrodel==0.8.*
|
16
|
+
Requires-Dist: setproctitle==1.3.*
|
17
|
+
Requires-Dist: jinja2==3.1.*
|
18
|
+
Requires-Dist: lru-dict==1.3.*
|
19
|
+
Requires-Dist: psutil==5.9.*
|
20
|
+
Requires-Dist: sqlalchemy==2.0
|
21
|
+
Requires-Dist: python-datauri==3.0.*
|
22
|
+
Requires-Dist: python-magic==0.4.*
|
23
|
+
Requires-Dist: requests==2.32.*
|
24
|
+
Requires-Dist: toml==0.10.*
|
25
|
+
Requires-Dist: PyYAML==6.0.*
|
26
|
+
Requires-Dist: pyvips==2.2.* ; extra == "full"
|
25
27
|
Project-URL: documentation, https://github.com/krateng/maloja
|
26
28
|
Project-URL: homepage, https://github.com/krateng/maloja
|
27
29
|
Project-URL: repository, https://github.com/krateng/maloja
|
@@ -69,15 +71,8 @@ You can check [my own Maloja page](https://maloja.krateng.ch) as an example inst
|
|
69
71
|
|
70
72
|
## How to install
|
71
73
|
|
72
|
-
|
73
|
-
|
74
|
-
Maloja should run on any x86 or ARM machine that runs Python.
|
75
|
-
|
76
|
-
It is highly recommended to use **Docker** or **Podman**.
|
77
|
-
|
78
|
-
Your CPU should have a single core passmark score of at the very least 1500. 500 MB RAM should give you a decent experience, but performance will benefit greatly from up to 2 GB.
|
79
|
-
|
80
|
-
### Docker / Podman
|
74
|
+
To avoid issues with version / dependency mismatches, Maloja should only be used in **Docker** or **Podman**, not on bare metal.
|
75
|
+
I cannot offer any help for bare metal installations (but using venv should help).
|
81
76
|
|
82
77
|
Pull the [latest image](https://hub.docker.com/r/krateng/maloja) or check out the repository and use the included Containerfile.
|
83
78
|
|
@@ -96,11 +91,7 @@ An example of a minimum run configuration to access maloja via `localhost:42010`
|
|
96
91
|
docker run -p 42010:42010 -v $PWD/malojadata:/mljdata -e MALOJA_DATA_DIRECTORY=/mljdata krateng/maloja
|
97
92
|
```
|
98
93
|
|
99
|
-
|
100
|
-
|
101
|
-
**NOTE:** If you are using [rootless containers with Podman](https://developers.redhat.com/blog/2020/09/25/rootless-containers-with-podman-the-basics#why_podman_) this DOES NOT apply to you.
|
102
|
-
|
103
|
-
If you are running Docker on a **Linux Host** you should specify `user:group` ids of the user who owns the folder on the host machine bound to `MALOJA_DATA_DIRECTORY` in order to avoid [docker file permission problems.](https://ikriv.com/blog/?p=4698) These can be specified using the [environmental variables **PUID** and **PGID**.](https://docs.linuxserver.io/general/understanding-puid-and-pgid)
|
94
|
+
If you are using [rootless containers with Podman](https://developers.redhat.com/blog/2020/09/25/rootless-containers-with-podman-the-basics#why_podman_) the following DOES NOT apply to you, but if you are running **Docker** on a **Linux Host** you should specify `user:group` ids of the user who owns the folder on the host machine bound to `MALOJA_DATA_DIRECTORY` in order to avoid [docker file permission problems.](https://ikriv.com/blog/?p=4698) These can be specified using the [environmental variables **PUID** and **PGID**.](https://docs.linuxserver.io/general/understanding-puid-and-pgid)
|
104
95
|
|
105
96
|
To get the UID and GID for the current user run these commands from a terminal:
|
106
97
|
|
@@ -113,33 +104,6 @@ The modified run command with these variables would look like:
|
|
113
104
|
docker run -e PUID=1000 -e PGID=1001 -p 42010:42010 -v $PWD/malojadata:/mljdata -e MALOJA_DATA_DIRECTORY=/mljdata krateng/maloja
|
114
105
|
```
|
115
106
|
|
116
|
-
### PyPI
|
117
|
-
|
118
|
-
You can install Maloja with
|
119
|
-
|
120
|
-
```console
|
121
|
-
pip install malojaserver
|
122
|
-
```
|
123
|
-
|
124
|
-
To make sure all dependencies are installed, you can also use one of the included scripts in the `install` folder.
|
125
|
-
|
126
|
-
### From Source
|
127
|
-
|
128
|
-
Clone this repository and enter the directory with
|
129
|
-
|
130
|
-
```console
|
131
|
-
git clone https://github.com/krateng/maloja
|
132
|
-
cd maloja
|
133
|
-
```
|
134
|
-
|
135
|
-
Then install all the requirements and build the package, e.g.:
|
136
|
-
|
137
|
-
```console
|
138
|
-
sh ./install/install_dependencies_alpine.sh
|
139
|
-
pip install -r requirements.txt
|
140
|
-
pip install .
|
141
|
-
```
|
142
|
-
|
143
107
|
|
144
108
|
### Extras
|
145
109
|
|
@@ -152,30 +116,18 @@ Then install all the requirements and build the package, e.g.:
|
|
152
116
|
|
153
117
|
### Basic control
|
154
118
|
|
155
|
-
When not running in a container, you can run the application with `maloja run`.
|
156
|
-
`maloja start` and `maloja stop`, but this might not be supported in the future.
|
119
|
+
When not running in a container, you can run the application with `maloja run`.
|
157
120
|
|
158
121
|
|
159
122
|
### Data
|
160
123
|
|
161
|
-
If you would like to import your previous scrobbles,
|
124
|
+
If you would like to import your previous scrobbles, copy them into the import folder in your data directory. This works on:
|
162
125
|
|
163
|
-
* a Last.fm export generated by [
|
126
|
+
* a Last.fm export generated by [ghan64's website](https://lastfm.ghan.nl/export/)
|
164
127
|
* an official [Spotify data export file](https://www.spotify.com/us/account/privacy/)
|
165
128
|
* an official [ListenBrainz export file](https://listenbrainz.org/profile/export/)
|
166
129
|
* the export of another Maloja instance
|
167
130
|
|
168
|
-
⚠️ Never import your data while maloja is running. When you need to do import inside docker container start it in shell mode instead and perform import before starting the container as mentioned above.
|
169
|
-
|
170
|
-
```console
|
171
|
-
docker run -it --entrypoint sh -v $PWD/malojadata:/mljdata -e MALOJA_DATA_DIRECTORY=/mljdata krateng/maloja
|
172
|
-
cd /mljdata
|
173
|
-
maloja import my_last_fm_export.csv
|
174
|
-
```
|
175
|
-
|
176
|
-
|
177
|
-
To backup your data, run `maloja backup`, optional with `--include_images`.
|
178
|
-
|
179
131
|
### Customization
|
180
132
|
|
181
133
|
* Have a look at the [available settings](settings.md) and specifiy your choices in `/etc/maloja/settings.ini`. You can also set each of these settings as an environment variable with the prefix `MALOJA_` (e.g. `MALOJA_SKIP_SETUP`).
|
@@ -1,21 +1,21 @@
|
|
1
1
|
maloja/__init__.py,sha256=ZMck_-0sLKrjUCt5PTqxFEnJ5L5Qq6K0QSEHz-B_77s,110
|
2
|
-
maloja/__main__.py,sha256=
|
3
|
-
maloja/__pkginfo__.py,sha256=
|
4
|
-
maloja/cleanup.py,sha256=
|
5
|
-
maloja/images.py,sha256=
|
2
|
+
maloja/__main__.py,sha256=jCdvg3zKYuCXsoesBBPFgisH-TOr5bzGXk-gm2dRwg0,3321
|
3
|
+
maloja/__pkginfo__.py,sha256=rGbkAMCF8qB1ViE8X9Dw5TO1oV6ILoAVgONVoSugem8,392
|
4
|
+
maloja/cleanup.py,sha256=bLwYYVtGPxnrZFQnl0vvbeBFrgwcbe-YJn5in9CDLwo,6889
|
5
|
+
maloja/images.py,sha256=yz8XxP8WKMbcxSkuz7RXGhN2mr6K4RY4yaWpB-MLQnc,13455
|
6
6
|
maloja/malojatime.py,sha256=dp-Q8ienlfxyFUyCQYK6H9wDx8VBrW70H0jCpLncuzs,16692
|
7
|
-
maloja/malojauri.py,sha256=
|
8
|
-
maloja/server.py,sha256=
|
9
|
-
maloja/setup.py,sha256=
|
7
|
+
maloja/malojauri.py,sha256=jbYsvpZjLlKz8kU3jNytzupsYxJf-V-HYsHSnUa6QBA,6482
|
8
|
+
maloja/server.py,sha256=zwg_WnUoJvrgxHU8hH1r6xKBXLvxyWwHfxfhGtCBbN4,7423
|
9
|
+
maloja/setup.py,sha256=LKWyJFfOGVhM2RRScsR_RuOyzkLBdf4ZF-6-GWtHqhc,3412
|
10
10
|
maloja/upgrade.py,sha256=2OtUMobInRRFRN0p7znGkWZ0Dq0wbN29xi06EiKA2k8,3291
|
11
11
|
maloja/apis/__init__.py,sha256=2EhXgqfFRcTo7-71dR20rZ4P1mW1g_LVmmkd0GT5bv4,1441
|
12
12
|
maloja/apis/_apikeys.py,sha256=htt8bnwfhpmhJAXcldmyXTT1QFlYR7LxnT4vG6duxzY,751
|
13
|
-
maloja/apis/_base.py,sha256=
|
14
|
-
maloja/apis/_exceptions.py,sha256=
|
15
|
-
maloja/apis/audioscrobbler.py,sha256=
|
16
|
-
maloja/apis/audioscrobbler_legacy.py,sha256=
|
17
|
-
maloja/apis/listenbrainz.py,sha256=
|
18
|
-
maloja/apis/native_v1.py,sha256=
|
13
|
+
maloja/apis/_base.py,sha256=fCe_8qVQQu_Cxp7VpbFZiIYuR805yRnOwPq-dRqGkeg,3192
|
14
|
+
maloja/apis/_exceptions.py,sha256=LoTHoTkG_ZQDnUmKeF1ngENOY1hyzrUVYq05cOYJqgk,218
|
15
|
+
maloja/apis/audioscrobbler.py,sha256=2gFSAMmA_9z5A3-8VVQ7dKb3hqe4dvwcMfti4l6uoMk,4097
|
16
|
+
maloja/apis/audioscrobbler_legacy.py,sha256=pJIIK-MpNahAEzVjNyULcFsnRnFBAVskfS8432AvZs8,3507
|
17
|
+
maloja/apis/listenbrainz.py,sha256=5HEGv2Qd-Q6CpPI3DeoJUXW9kc85EDePMxWp0xBVl5Y,3279
|
18
|
+
maloja/apis/native_v1.py,sha256=I_BkWM_mvo9fxtSRqbbjWBiQbdUieCDz1xB1lRC5xFE,26438
|
19
19
|
maloja/data_files/cache/.maloja_cache_sentinel,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
maloja/data_files/cache/images/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
maloja/data_files/config/.maloja_config_sentinel,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -30,7 +30,7 @@ maloja/data_files/config/rules/predefined/krateng_firefly-soundtrack.tsv,sha256=
|
|
30
30
|
maloja/data_files/config/rules/predefined/krateng_jeremysoule.tsv,sha256=O11ELp68x69VUjq9yvZ2jRTYw7uvhOvJ4H2_jZcjInY,513
|
31
31
|
maloja/data_files/config/rules/predefined/krateng_jpop.tsv,sha256=ywZywqzgg8uaL4W1bRfj-yFvmqujVFYBxd286MyTswE,606
|
32
32
|
maloja/data_files/config/rules/predefined/krateng_kpop.tsv,sha256=sP2kuS8xvv6CdsUmAohlpxX13DFl5UMDS-ZIJ9sC9zQ,99
|
33
|
-
maloja/data_files/config/rules/predefined/krateng_kpopgirlgroups.tsv,sha256=
|
33
|
+
maloja/data_files/config/rules/predefined/krateng_kpopgirlgroups.tsv,sha256=_-ov3o6Zh-DULPsff2etbZxUFla7QpJDbV0XGKlL30E,6738
|
34
34
|
maloja/data_files/config/rules/predefined/krateng_lotr-soundtrack.tsv,sha256=wJ7lPHs18lecaI7CegaeHab7dNolbjbmiruzSQjR7p0,1502
|
35
35
|
maloja/data_files/config/rules/predefined/krateng_masseffect.tsv,sha256=WZmARBh_EuRTqEq2PPxYDH-PlZLPfEYtsqhNvPKoeO8,1386
|
36
36
|
maloja/data_files/config/rules/predefined/krateng_memes.tsv,sha256=UPmpfg-8U7ro6eYdFCPKWlCeBWcTZrkQR02tFppVz2s,139
|
@@ -49,26 +49,26 @@ maloja/data_files/state/images/images.info,sha256=fnzMHHdpmWBRfZTXOFIYoMguunAyRO
|
|
49
49
|
maloja/data_files/state/images/albums/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
50
|
maloja/data_files/state/images/artists/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
51
|
maloja/data_files/state/images/tracks/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
|
-
maloja/data_files/state/
|
53
|
-
maloja/database/__init__.py,sha256=
|
54
|
-
maloja/database/associated.py,sha256=
|
52
|
+
maloja/data_files/state/import/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
+
maloja/database/__init__.py,sha256=JdR4OGFI7byuboFKCo-X-1fw8516aAvjENdwEDQU-3U,31802
|
54
|
+
maloja/database/associated.py,sha256=xde_CCDpHBSOOwgaNa7hc-4nH8PhKjdHQJaXIe3w4Wg,1680
|
55
55
|
maloja/database/dbcache.py,sha256=TbppBv7NoMZcpmNycdoxKyQ3eNGGcg38THOF9GmsM2Q,4455
|
56
|
-
maloja/database/exceptions.py,sha256=
|
56
|
+
maloja/database/exceptions.py,sha256=7e4n85Ed7fn-oECVy8oleX7PYjGoZMReUWiCRXI2lTI,1436
|
57
57
|
maloja/database/jinjaview.py,sha256=GhkD7NiW3ayM8x3b9oYO-cLMW7SsS65jNihWZxMkpGw,1472
|
58
|
-
maloja/database/sqldb.py,sha256=
|
58
|
+
maloja/database/sqldb.py,sha256=pLcF1xU_VlFqP4Irxyn5BTEHnHnljRUahIeyw-ZFH2A,58937
|
59
59
|
maloja/dev/__init__.py,sha256=igUIatHDbXERzAO2LZ03I99dtHgEN4napkrmQl2VRgw,104
|
60
60
|
maloja/dev/apidebug.py,sha256=hNbMpFHjgWBY_NdRTJ9H7jBqHte8kaEa6bsFn-29Aks,515
|
61
61
|
maloja/dev/generate.py,sha256=MlQYBts0f6OSVb063YxeDTWsODG49p-_aKRrRjm0PTY,2953
|
62
|
-
maloja/dev/profiler.py,sha256=
|
62
|
+
maloja/dev/profiler.py,sha256=m2tagSaXe1ngGPdjmCZn7ZKEg2O9nr0qtCsUL6TJ2TI,1611
|
63
63
|
maloja/jinjaenv/context.py,sha256=tVGVgW1g4LeYA5VmPlUmRy27fqV2tWb-bRTpJZcw8vk,3838
|
64
64
|
maloja/jinjaenv/filters.py,sha256=IgUB4PeqvEqY1UpXwfmLyEvQVTMn6vYAav0L_6aY8_s,1477
|
65
|
-
maloja/pkg_global/conf.py,sha256=
|
65
|
+
maloja/pkg_global/conf.py,sha256=qjZ61n5Abbysdgf_EHUWXmu-tEUyrh0Dves40OOpdqE,17294
|
66
66
|
maloja/pkg_global/monkey.py,sha256=ocxp6wpyYuUcdF4g4Tz2Pmo_pysxYrmWunOPEw8cZrU,585
|
67
67
|
maloja/proccontrol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
68
|
maloja/proccontrol/tasks/__init__.py,sha256=-DRlzLIkYqbeDCWPaFXleOcceGXj-OUQWm6_4T8s1ds,166
|
69
69
|
maloja/proccontrol/tasks/backup.py,sha256=sLqrX5Zzf7vYfsv4YG7yv0WS7E55gggo-nIxg8Fz05I,1322
|
70
|
-
maloja/proccontrol/tasks/export.py,sha256=
|
71
|
-
maloja/proccontrol/tasks/import_scrobbles.py,sha256=
|
70
|
+
maloja/proccontrol/tasks/export.py,sha256=uloufUcqEzhedpANBwohkcPPwYboXRjqTCoo0YUdsDo,794
|
71
|
+
maloja/proccontrol/tasks/import_scrobbles.py,sha256=MrRWs8yMoLfHXBVveD5TINzMveYScqQ07meZ5rO8UaU,16369
|
72
72
|
maloja/proccontrol/tasks/parse_albums.py,sha256=co09x9lyi0ZCqJ2QRtUHbmNgku_VNEIXCWCM7nYSals,4111
|
73
73
|
maloja/thirdparty/__init__.py,sha256=FMnnHatVj5flaio7J8o01MwPz6TyiY_ngwxtEqgOruI,9571
|
74
74
|
maloja/thirdparty/audiodb.py,sha256=2vmyZmKZNL4Um4JVC200oN9mrvXIIeYXhny5AeOuF-I,814
|
@@ -78,14 +78,14 @@ maloja/thirdparty/maloja.py,sha256=TawGPEA_bJmV9brkkKE-gMTBKsWcRLtFpmntyak1aHs,8
|
|
78
78
|
maloja/thirdparty/musicbrainz.py,sha256=kmyqteFnNTFeYUTq4kaLB-MYKjxnicQQTmbYWJ5Bpbk,3078
|
79
79
|
maloja/thirdparty/spotify.py,sha256=yVTCpoyEekCYFPbC3e1-SUGhei413dSrsK7Y2BYlQLc,2018
|
80
80
|
maloja/web/jinja/about.jinja,sha256=2idNqp8k43KKda94sWyD1fN9YB3TFCSgRE7ro2zdf3s,1779
|
81
|
-
maloja/web/jinja/admin_albumless.jinja,sha256=
|
81
|
+
maloja/web/jinja/admin_albumless.jinja,sha256=QBYEwIFSagh-AAQ5BeNJpG1x4Aqgo4qe-OCX4RhvnLA,400
|
82
82
|
maloja/web/jinja/admin_apikeys.jinja,sha256=QFWZdkcVks6_80-N_h2sxABkdD8XD9Wgj6DbnoQSDk0,314
|
83
83
|
maloja/web/jinja/admin_import.jinja,sha256=VlfGqfisYkDXnSRPrUvuUheFw341RFGQXcCNrmi95ag,809
|
84
|
-
maloja/web/jinja/admin_issues.jinja,sha256=
|
84
|
+
maloja/web/jinja/admin_issues.jinja,sha256=gXXU6Oyrn_lK-X5qJrHr7XfQlopwtglQ0Oq1JivOUD0,2485
|
85
85
|
maloja/web/jinja/admin_manual.jinja,sha256=H8txrBoPPao_8TKAgADxShc7wSSvV2Qp7rmHBpPYwks,2317
|
86
|
-
maloja/web/jinja/admin_overview.jinja,sha256=
|
86
|
+
maloja/web/jinja/admin_overview.jinja,sha256=SV3R7timLMquMZ_m_Qtb6fu_YNOk5RJ74sXEZ2m7GbQ,3626
|
87
87
|
maloja/web/jinja/admin_settings.jinja,sha256=6jNVteSN-2PQalDn8e-pWW7xAN0vIWESgQjaYRN2CRw,183
|
88
|
-
maloja/web/jinja/admin_setup.jinja,sha256=
|
88
|
+
maloja/web/jinja/admin_setup.jinja,sha256=vEalQCiSIoXS-PAr_n2bXZtuZpRtRVybgdZvQPbCsMY,5282
|
89
89
|
maloja/web/jinja/album.jinja,sha256=KjPuTxVy_p94k7cmWI0JWPCdyXjJeXdNczAtCJK4pDw,4158
|
90
90
|
maloja/web/jinja/artist.jinja,sha256=DkekMGX5bfvy8MWCgFZi9mwuhHQB--7BoztbiAdYmKs,4914
|
91
91
|
maloja/web/jinja/charts_albums.jinja,sha256=uJTS8oy1-pMTG6NuHQPsrqNuJBfEoa7Q_BQOzz16lPM,1389
|
@@ -102,7 +102,7 @@ maloja/web/jinja/top_tracks.jinja,sha256=Q0uSLCR52YqoNTyfYDWSpekSerU5BTE1hxPHpNX
|
|
102
102
|
maloja/web/jinja/track.jinja,sha256=LFtKsMaGoOTqo3dqkreFqphlFXgGjF8sqDvMh3Hs00g,4110
|
103
103
|
maloja/web/jinja/wait.jinja,sha256=qmEkmMMdgDfnSmso4yNZiaaBMMhVvkC1nWXLZOobVk0,900
|
104
104
|
maloja/web/jinja/abstracts/admin.jinja,sha256=270MfT7_aOCUvLFoATOY3cmrtvZfscNg2CX014bcYbQ,1011
|
105
|
-
maloja/web/jinja/abstracts/base.jinja,sha256=
|
105
|
+
maloja/web/jinja/abstracts/base.jinja,sha256=hMHjeJYrNNxZFpaoWnBGvo0IvfqmAcoqiRlk3CXJrIc,3152
|
106
106
|
maloja/web/jinja/icons/LICENSE-material,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
107
107
|
maloja/web/jinja/icons/LICENSE-octicons,sha256=91bfCphObzc9El6vOSlFG3zBBo82_R44cv1Ck021ago,1068
|
108
108
|
maloja/web/jinja/icons/add_album.jinja,sha256=iKjcVBI8C-BmjWol3_Msb-fLWtFPY3X1Wvcz3qO6tGY,822
|
@@ -126,7 +126,7 @@ maloja/web/jinja/icons/remove_album.jinja,sha256=9-dRj4HILCLBcByhwzdAP5wA950aZz9
|
|
126
126
|
maloja/web/jinja/icons/remove_artist.jinja,sha256=I1OKuZDpjbmNvobPAHall8Z1_rUlweUePtw0syPPVHM,591
|
127
127
|
maloja/web/jinja/icons/reparse.jinja,sha256=-eocvdkZv3zv4MTTE7K88UXvqCkG5pFB4Ytw-oLgo7o,442
|
128
128
|
maloja/web/jinja/icons/settings.jinja,sha256=rvLkbvxzEqVqYIg-UELFpnEmJSN3mY0egEBItkGXGms,1193
|
129
|
-
maloja/web/jinja/partials/album_showcase.jinja,sha256=
|
129
|
+
maloja/web/jinja/partials/album_showcase.jinja,sha256=keRl53xLJLHdyTonZoEILmIzqzGJK1zx2Ldwb9N4t1M,1855
|
130
130
|
maloja/web/jinja/partials/awards_album.jinja,sha256=GpySZTqGOqBcyA86GRm-KS6dEtoz8X8X3tSUtPhdk4g,2034
|
131
131
|
maloja/web/jinja/partials/awards_artist.jinja,sha256=_ku1_JJcxdxxvn4QuXD-UEOcRWzyUWdAN-WhHmZzRbM,2808
|
132
132
|
maloja/web/jinja/partials/awards_track.jinja,sha256=fOnjxSZK1Mgu-bXMLPpGKd6vkIpsPPLChRsOq8VTyKU,1257
|
@@ -146,9 +146,9 @@ maloja/web/jinja/partials/scrobbles.jinja,sha256=MFBfeX8un7d6-HVCfQV6tz4ZyFlI-Ta
|
|
146
146
|
maloja/web/jinja/partials/top_albums.jinja,sha256=udKQOczCBB5jcl5Vwn-8NjXbfH2nBQEkQV860C-7rQ0,975
|
147
147
|
maloja/web/jinja/partials/top_artists.jinja,sha256=XERMJbzVRBG3Rena2Hndx6MUW7umnifbQN3xJqfAIXE,1384
|
148
148
|
maloja/web/jinja/partials/top_tracks.jinja,sha256=BOTcgu8hcTpIqMAO3hIyR6sHlfl7jRy-PzLXZCDl6bY,975
|
149
|
-
maloja/web/jinja/snippets/entityrow.jinja,sha256=
|
149
|
+
maloja/web/jinja/snippets/entityrow.jinja,sha256=OXGjiy4oOdR2OHmjbpmEOMOhrkLfor7_x-ujpCFS9lE,1490
|
150
150
|
maloja/web/jinja/snippets/filterdescription.jinja,sha256=-5-k29NQsWhpyMC5hWz6VywSd24Zu2JzqrsZ0dUGQKk,652
|
151
|
-
maloja/web/jinja/snippets/links.jinja,sha256=
|
151
|
+
maloja/web/jinja/snippets/links.jinja,sha256=Sh19OMbpQNr5oUmdDMysxP3cI6lTr_r1YKTvOHP4U0A,3314
|
152
152
|
maloja/web/jinja/snippets/pagination.jinja,sha256=RsVQvfqGdENLFhhvUS13zhk_eue1LgxUGScuDf4w398,1153
|
153
153
|
maloja/web/jinja/snippets/timeselection.jinja,sha256=3N5y_tNqQyRuluwW70ZHxA1xNqeoTHx8q33ASkjE44k,3321
|
154
154
|
maloja/web/jinja/startpage_modules/charts_albums.jinja,sha256=WlojY89gnnJoU_y3IFqiwlQqRBAOT85XEdCI2kJS454,603
|
@@ -159,8 +159,8 @@ maloja/web/jinja/startpage_modules/lastscrobbles.jinja,sha256=RTBvxx3WuESBogyO7O
|
|
159
159
|
maloja/web/jinja/startpage_modules/pulse.jinja,sha256=bcYx8lgXNh9XOSdjFUc-fIHDNB5cD6pVPFy4-4gnqks,615
|
160
160
|
maloja/web/static/css/grisons.css,sha256=Wk0j_Bi4sZV2zIVGl_iqdO_hEFhclBz7-CTjcOD-YIk,2818
|
161
161
|
maloja/web/static/css/grisonsfont.css,sha256=m0eDNPTdHyibrw3JTc4ezxIV5KTHxFtWkkcFwbvpQLA,195
|
162
|
-
maloja/web/static/css/maloja.css,sha256=
|
163
|
-
maloja/web/static/css/startpage.css,sha256=
|
162
|
+
maloja/web/static/css/maloja.css,sha256=8UUSygXDGxt0GiVAkGw7Fx9-kesPTVRA4oYcxWNl2rw,21298
|
163
|
+
maloja/web/static/css/startpage.css,sha256=ygO-x4zt7sZCnBQ6bz-5sPvWhK-QYEBwBXflSmX_9ak,970
|
164
164
|
maloja/web/static/css/themes/constantinople.css,sha256=BHOjZuGQHq7jUsPGa4pxskAXuwDNIIgJmBqEefloGLs,681
|
165
165
|
maloja/web/static/css/themes/kda.css,sha256=z5481_8VmBS3Juo81dj4D5O6A1A5nApQSTpuP-LPOwM,681
|
166
166
|
maloja/web/static/css/themes/maloja.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -169,12 +169,12 @@ maloja/web/static/ico/favicon_old.ico,sha256=Xch-fUCuGwBdUP3-kFgQZgXBj-jvVTW7tii
|
|
169
169
|
maloja/web/static/js/datechange.js,sha256=TZfsi-9nzGHmieJALipW6qrFKNsmkOCQW1xX1UwJ_KA,921
|
170
170
|
maloja/web/static/js/edit.js,sha256=cF9JyB_3I8pYlWzC-s7zBsGaREvFvI2M9cEWxCXSw_A,13544
|
171
171
|
maloja/web/static/js/lazyload17-8-2.min.js,sha256=sO6HPavoXo796Zp_bq6ts4qHOoEqfydXEXSX5NojP48,8893
|
172
|
-
maloja/web/static/js/manualscrobble.js,sha256=
|
172
|
+
maloja/web/static/js/manualscrobble.js,sha256=3R-QqEpa1rNpUjTng5dc4BH1XLgEDQDeO1ObST5uR4A,6357
|
173
173
|
maloja/web/static/js/neopolitan.js,sha256=KHUpclvGsvGWc6OHu4e-UNwOmt_A-leNgbY1e3mtb00,5721
|
174
|
-
maloja/web/static/js/notifications.js,sha256=
|
175
|
-
maloja/web/static/js/search.js,sha256=
|
174
|
+
maloja/web/static/js/notifications.js,sha256=Svf3u9XcJ0bUlDZca4Z2BEblK7DdKs3wR4EVZaG7-70,1405
|
175
|
+
maloja/web/static/js/search.js,sha256=2kXEWwzVBP5B3n_yU7vDv8X5U_o3QGgw_HbVHvhRUfo,3769
|
176
176
|
maloja/web/static/js/statselect.js,sha256=UyHo7bjXKwhG_q5DgJDaoEgCRcsYRIQoV8S2beIBo_0,1750
|
177
|
-
maloja/web/static/js/upload.js,sha256=
|
177
|
+
maloja/web/static/js/upload.js,sha256=DtoNOxs2EjViIO4QI7SkrWC6NC5yIaebMTybGARNiI0,119
|
178
178
|
maloja/web/static/png/chartpos_bronze.png,sha256=ObhVuxMfM5LQZoMIjHaBfTHxrUsbKpmDKUHI4zfDmBQ,244
|
179
179
|
maloja/web/static/png/chartpos_gold.png,sha256=1zzoKe8QVBnTyoirF-d4s-uyZdeFzZ5jN9Rmjcmxy2o,239
|
180
180
|
maloja/web/static/png/chartpos_normal.png,sha256=SbdVtmwCezOnCoKyID5N_E0BGJn3MCD90209qOGFamI,245
|
@@ -197,8 +197,8 @@ maloja/web/static/ttf/Ubuntu-Medium.ttf,sha256=DWhfUcO8OU8CyMIYVlukI5cs-zXCVChx4
|
|
197
197
|
maloja/web/static/ttf/Ubuntu-MediumItalic.ttf,sha256=bcsuSGcaFmv1YGT0BikSt61Bov3ylg786wJC2_N8pUs,309648
|
198
198
|
maloja/web/static/ttf/Ubuntu-Regular.ttf,sha256=Zv6pwACR8l64pSZUgCO2FUeFh2qQCvLY9HKSJolpgWM,299684
|
199
199
|
maloja/web/static/txt/robots.txt,sha256=Mx6pCQ2wyfb1l72YQP1bFxgw9uCzuhyyTfqR8Mla7cE,26
|
200
|
-
malojaserver-3.2.
|
201
|
-
malojaserver-3.2.
|
202
|
-
malojaserver-3.2.
|
203
|
-
malojaserver-3.2.
|
204
|
-
malojaserver-3.2.
|
200
|
+
malojaserver-3.2.4.dist-info/entry_points.txt,sha256=LrZkF8oW67Jx5Gp2GBG-WhUqW_ALwmCgfr7sVMTOu0k,47
|
201
|
+
malojaserver-3.2.4.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
202
|
+
malojaserver-3.2.4.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
203
|
+
malojaserver-3.2.4.dist-info/METADATA,sha256=InxNxathNK9a2Ix2OGeFdpGPsCd-WLNGm1WpLctdPyY,8526
|
204
|
+
malojaserver-3.2.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|