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.
Files changed (42) hide show
  1. maloja/__main__.py +1 -94
  2. maloja/__pkginfo__.py +1 -1
  3. maloja/apis/_base.py +26 -19
  4. maloja/apis/_exceptions.py +1 -1
  5. maloja/apis/audioscrobbler.py +35 -7
  6. maloja/apis/audioscrobbler_legacy.py +5 -5
  7. maloja/apis/listenbrainz.py +8 -5
  8. maloja/apis/native_v1.py +43 -26
  9. maloja/cleanup.py +9 -7
  10. maloja/data_files/config/rules/predefined/krateng_kpopgirlgroups.tsv +2 -2
  11. maloja/database/__init__.py +68 -23
  12. maloja/database/associated.py +10 -6
  13. maloja/database/exceptions.py +28 -3
  14. maloja/database/sqldb.py +216 -168
  15. maloja/dev/profiler.py +3 -4
  16. maloja/images.py +6 -0
  17. maloja/malojauri.py +2 -0
  18. maloja/pkg_global/conf.py +30 -28
  19. maloja/proccontrol/tasks/export.py +2 -1
  20. maloja/proccontrol/tasks/import_scrobbles.py +110 -47
  21. maloja/server.py +11 -10
  22. maloja/setup.py +29 -17
  23. maloja/web/jinja/abstracts/base.jinja +1 -1
  24. maloja/web/jinja/admin_albumless.jinja +2 -0
  25. maloja/web/jinja/admin_issues.jinja +2 -2
  26. maloja/web/jinja/admin_overview.jinja +3 -3
  27. maloja/web/jinja/admin_setup.jinja +3 -3
  28. maloja/web/jinja/partials/album_showcase.jinja +1 -1
  29. maloja/web/jinja/snippets/entityrow.jinja +2 -2
  30. maloja/web/jinja/snippets/links.jinja +3 -1
  31. maloja/web/static/css/maloja.css +8 -2
  32. maloja/web/static/css/startpage.css +2 -2
  33. maloja/web/static/js/manualscrobble.js +2 -2
  34. maloja/web/static/js/notifications.js +16 -8
  35. maloja/web/static/js/search.js +18 -12
  36. maloja/web/static/js/upload.js +1 -1
  37. {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/METADATA +24 -72
  38. {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/RECORD +42 -42
  39. {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/WHEEL +1 -1
  40. /maloja/data_files/state/{scrobbles → import}/dummy +0 -0
  41. {malojaserver-3.2.2.dist-info → malojaserver-3.2.4.dist-info}/LICENSE +0 -0
  42. {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","/api/importrules", true);
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","/api/importrules", true);
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='artist_in_trackcolumn'>{{ links.links(entity.artists) }}</span> – {{ links.link(entity) }}
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 }}
@@ -363,12 +363,14 @@ div#notification_area {
363
363
  right:20px;
364
364
  }
365
365
  div#notification_area div.notification {
366
- background-color:white;
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.4;
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: 45vw 45vw;
26
- grid-template-rows: 45vh 45vh 45vh;
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","/api/search?max=5&query=" + encodeURIComponent(txt), true);
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
- 'warning':'red',
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="background-color:${colors[info.notification_type]};">
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 body = request.response;
40
+ var response = request.response;
39
41
  var status = request.status;
40
42
 
41
43
  if (status == 200) {
42
- var notification_type = 'info';
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 = body.desc || body;
52
+ var msg = response.desc || response;
45
53
  }
46
54
  else {
47
- var notification_type = 'warning';
48
- var title = "Error: " + body.error.type;
49
- var msg = body.error.desc || "";
55
+ var notification_type = 'error';
56
+ var title = "Error: " + response.error.type;
57
+ var msg = response.error.desc || "";
50
58
  }
51
59
 
52
60
 
@@ -1,17 +1,23 @@
1
- var searches = []
1
+ var searches = [];
2
+ var debounceTimer;
2
3
 
3
4
  function search(searchfield) {
4
- txt = searchfield.value;
5
- if (txt == "") {
6
- reallyclear()
7
- }
8
- else {
9
- xhttp = new XMLHttpRequest();
10
- searches.push(xhttp)
11
- xhttp.onreadystatechange = searchresult
12
- xhttp.open("GET","/api/search?max=5&query=" + encodeURIComponent(txt), true);
13
- xhttp.send();
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
 
@@ -1,3 +1,3 @@
1
1
  function upload(encodedentity,b64) {
2
- neo.xhttprequest("/api/addpicture?" + encodedentity,{"b64":b64},"POST")
2
+ neo.xhttprequest("/apis/mlj_1/addpicture?" + encodedentity,{"b64":b64},"POST")
3
3
  }
@@ -1,27 +1,29 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: malojaserver
3
- Version: 3.2.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: >=3.10
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>=0.12.16
13
- Requires-Dist: waitress>=2.1.0
14
- Requires-Dist: doreah>=1.9.4, <2
15
- Requires-Dist: nimrodel>=0.8.0
16
- Requires-Dist: setproctitle>=1.1.10
17
- Requires-Dist: jinja2>=3.0.0
18
- Requires-Dist: lru-dict>=1.1.6
19
- Requires-Dist: psutil>=5.8.0
20
- Requires-Dist: sqlalchemy>=2.0
21
- Requires-Dist: python-datauri>=1.1.0
22
- Requires-Dist: requests>=2.27.1
23
- Requires-Dist: setuptools>68.0.0
24
- Requires-Dist: pyvips>=2.1 ; extra == "full"
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
- ### Requirements
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
- #### Linux Host
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`. You can also run it in the background with
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, use the command `maloja import *filename*`. This works on:
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 [benfoxall's website](https://benjaminbenben.com/lastfm-to-csv/) ([GitHub page](https://github.com/benfoxall/lastfm-to-csv))
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=fqTnEye4OZI0wLgd-VqNKnMQS8cwEgfNn9MYecWCaIo,5606
3
- maloja/__pkginfo__.py,sha256=uTLOvFIoMXJHQdv1GGrV8YpgQvGcIzUCTRYkJUqUGNg,392
4
- maloja/cleanup.py,sha256=mUyAhH2NGeaJqIqVa1DNV2gZAXkeYKTcUWKiAiY5AEg,6841
5
- maloja/images.py,sha256=tY-AauHx9qjYi6P4tFKX0aFO4_N3huV0cas3DAz608s,13182
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=5JqXU5y67cnSJz7uJdZXL6XohbYBnPgYI4kKx6XMQBU,6319
8
- maloja/server.py,sha256=YqUPnzNaewaAP7F0K3bJJ3KLuRt_3Opl4FNzzp-65Sw,7312
9
- maloja/setup.py,sha256=HTXmc8_AXkJVd5MIsI-3G9uXL3rzTtMzuzvFsyOz-fo,3041
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=kJMv5rDLq52MBMCiwBD6iJpYnJ1pV-IDXOHM6QgINUE,2954
14
- maloja/apis/_exceptions.py,sha256=_MwhmPANOhSnthV9BhRHMf8CO9SfVWVxtp9uy-FLmlA,260
15
- maloja/apis/audioscrobbler.py,sha256=VRKMd5IxR8INOPG4UZND3pwD7PYb732f-6tOFrSEIjo,3224
16
- maloja/apis/audioscrobbler_legacy.py,sha256=V_zFVXzeNOhPoHxSHm6eWFoEfBSR2Jnx1GB4djm1dEA,3507
17
- maloja/apis/listenbrainz.py,sha256=QEHs6xL8H4Or_TOXWxBfHnUub98pgyuIinpzM_qm_5k,3052
18
- maloja/apis/native_v1.py,sha256=AXOZ6soEan1dKDCO4trZPq0XiqZ5SfbYI8BQ4pB54jY,25747
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=4CrcrblY8mzfWFkq7Ott5NiRT9-x59TCtZddg0FiHzQ,6753
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/scrobbles/dummy,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- maloja/database/__init__.py,sha256=lvnc_3fWw5z2X6Qdt6FxWk19JhZf5T8kbu-SsQGI5u8,30806
54
- maloja/database/associated.py,sha256=TlOXsvP5VX8EqDuaUsruIFAoePN6NeJswTvitiKPpC0,1631
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=Qza5xoudxXWmNkDdbV31CUC_zEwzzAqABcNgbrqoIgA,1079
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=UbSLFMC6j5OcdJTDrxVskaIYXUevEwqzC4thgE_zyb8,56318
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=OXNZ0w0UiOB4KsmefpJkODgM3JYDaKdjGhyK-H937WY,1628
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=IQruc-0aJI0wT0XWz1qfQ_ZR7letCoIAx4BKrU-I3ug,16732
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=40_8mgy1eE0gahHk-tNYjy62at7YJ0z8HjCZUX58bbk,590
71
- maloja/proccontrol/tasks/import_scrobbles.py,sha256=u981XB99uv19PMhhp9zVOfRFRDszH5Zty5eVLPE1dNM,14713
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=O-WOBl78oKHcUVdGMRD5A-nR50lomejoAtx9n3GqUhU,342
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=1ZhxhwC0VSLQL5LftmP500GO150IMiY3MGPgu1zHDiQ,2471
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=Iw0zv9gpzpsDc-9NPpiBV6CnfnMuAaxGO7Jk1RWzTxQ,3603
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=Ejp_YzHR0af322oYx1PAzLTaFIQxJsGwVUB2m4KHi9A,5168
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=gJEA9diLjyWm9_upOn3qQA-YAxkW4YKuMqS5YF4J7Ig,3145
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=bo68ZGHG2WyjvR4tPnUIByRElSHJO4xmF0HIQjJLsEs,1850
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=geMfIo8OSNCpm5jpWl6xgsUtkEK7o1KiDkeRufKyU8U,1446
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=8x_SW5zb5r9gRi9LMrfUKmRB0kvS7ga66d8Nj7L8Asg,3200
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=KPAqYR371iAspmgZN-WNiELI--N4_hFbnM3AAXmFRo0,21115
163
- maloja/web/static/css/startpage.css,sha256=VF_d6r9B2WJanQuQKUJKZZOpi3VKdL3-BEcqvLRdAKg,963
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=0bNtOpilsyj1rmyr77ubkYuJXFL0QZlJ1Wt3UcOT-Uo,6344
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=L0SmcRTb7rSw6A2o2-s3zZ5FyG4EjOzTR_0EdkctnKg,1199
175
- maloja/web/static/js/search.js,sha256=2BedwlSbE3L1Q7InX_RoC6SigJmJQ4wLpYEzh2iWt40,3545
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=z0LjPSGw86Up1ozq-EsZkmJX_hKlgPSirgH9-qMYwac,112
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.2.dist-info/entry_points.txt,sha256=LrZkF8oW67Jx5Gp2GBG-WhUqW_ALwmCgfr7sVMTOu0k,47
201
- malojaserver-3.2.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
202
- malojaserver-3.2.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
203
- malojaserver-3.2.2.dist-info/METADATA,sha256=3wezz2IzbtiPkqmerD6iQdu0Z_r54g_7RCJHk1TWI1E,9764
204
- malojaserver-3.2.2.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.9.0
2
+ Generator: flit 3.10.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
File without changes