mirror of https://github.com/krateng/maloja.git
Compare commits
9 Commits
073448257a
...
93bbaac0e3
Author | SHA1 | Date |
---|---|---|
krateng | 93bbaac0e3 | |
krateng | 00a564c54d | |
krateng | 4330b0294b | |
krateng | b53141f065 | |
krateng | 3ae395f697 | |
krateng | 5466b6c37e | |
krateng | e85861fb79 | |
krateng | a611b78dbc | |
krateng | c3ed5f318d |
|
@ -9,7 +9,7 @@
|
|||
|
||||
Simple self-hosted music scrobble database to create personal listening statistics. No recommendations, no social network, no nonsense.
|
||||
|
||||
![screenshot](screenshot.png?raw=true)
|
||||
![screenshot](https://raw.githubusercontent.com/krateng/maloja/master/screenshot.png)
|
||||
|
||||
You can check [my own Maloja page](https://maloja.krateng.ch) as an example instance.
|
||||
|
||||
|
|
|
@ -34,7 +34,13 @@ minor_release_name: "Soyeon"
|
|||
- "[Feature] Added import for Listenbrainz exports"
|
||||
- "[Bugfix] Sanitized artists and tracks with html-like structure"
|
||||
3.1.5:
|
||||
commit: "4330b0294bc0a01cdb841e2e3db370108da901db"
|
||||
notes:
|
||||
- "[Feature] Made image upload part of regular API"
|
||||
- "[Bugfix] Additional entity name sanitization"
|
||||
- "[Bugfix] Fixed image display on Safari"
|
||||
- "[Bugfix] Fixed entity editing on Firefox"
|
||||
- "[Bugfix] Made compatibile with SQLAlchemy 2.0"
|
||||
upcoming:
|
||||
notes:
|
||||
- "[Bugfix] Fixed configuration of time format"
|
||||
|
|
|
@ -140,6 +140,12 @@ def print_info():
|
|||
print(col['lightblue']("Network: "),f"Dual Stack, Port {conf.malojaconfig['port']}" if conf.malojaconfig['host'] == "*" else f"IPv{ip_address(conf.malojaconfig['host']).version}, Port {conf.malojaconfig['port']}")
|
||||
print(col['lightblue']("Timezone: "),f"UTC{conf.malojaconfig['timezone']:+d}")
|
||||
print()
|
||||
try:
|
||||
import pkg_resources
|
||||
for pkg in ("sqlalchemy","waitress","bottle","doreah","jinja2"):
|
||||
print(col['cyan'] (f"{pkg}:".ljust(13)),pkg_resources.get_distribution(pkg).version)
|
||||
except ImportError:
|
||||
print("Could not determine dependency versions.")
|
||||
print()
|
||||
|
||||
@mainfunction({"l":"level","v":"version","V":"version"},flags=['version','include_images'],shield=True)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# you know what f*ck it
|
||||
# this is hardcoded for now because of that damn project / package name discrepancy
|
||||
# i'll fix it one day
|
||||
VERSION = "3.1.4"
|
||||
VERSION = "3.1.5"
|
||||
HOMEPAGE = "https://github.com/krateng/maloja"
|
||||
|
||||
|
||||
|
|
|
@ -298,7 +298,7 @@ def get_track_id(trackdict,create_new=True,dbconn=None):
|
|||
|
||||
|
||||
op = DB['tracks'].select(
|
||||
DB['tracks'].c.id
|
||||
# DB['tracks'].c.id
|
||||
).where(
|
||||
DB['tracks'].c.title_normalized==ntitle
|
||||
)
|
||||
|
@ -308,7 +308,7 @@ def get_track_id(trackdict,create_new=True,dbconn=None):
|
|||
foundtrackartists = []
|
||||
|
||||
op = DB['trackartists'].select(
|
||||
DB['trackartists'].c.artist_id
|
||||
# DB['trackartists'].c.artist_id
|
||||
).where(
|
||||
DB['trackartists'].c.track_id==row[0]
|
||||
)
|
||||
|
@ -344,7 +344,7 @@ def get_artist_id(artistname,create_new=True,dbconn=None):
|
|||
#print("looking for",nname)
|
||||
|
||||
op = DB['artists'].select(
|
||||
DB['artists'].c.id
|
||||
# DB['artists'].c.id
|
||||
).where(
|
||||
DB['artists'].c.name_normalized==nname
|
||||
)
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
|
||||
<h2>Set up some rules</h2>
|
||||
|
||||
After you've scrobbled for a bit, you might want to check the <a class="textlink" href="/admin_issues">Issues page</a> to see if you need to set up some rules. You can also manually add rules in your server's "rules" directory - just add your own .tsv file and read the instructions on how to declare a rule.
|
||||
You can add some rules in your server's "rules" directory - just add your own .tsv file and read the instructions on how to declare a rule.
|
||||
<br/><br/>
|
||||
|
||||
You can also set up some predefined rulesets right away!
|
||||
|
|
|
@ -716,7 +716,7 @@ table.list td.amount {
|
|||
text-align:right;
|
||||
}
|
||||
table.list td.bar {
|
||||
width:500px;
|
||||
width:400px;
|
||||
/* background-color: var(--base-color); */
|
||||
/* Remove 5er separators for bars */
|
||||
/*border-color:rgba(0,0,0,0)!important;*/
|
||||
|
@ -734,7 +734,7 @@ table.list tr:hover td.bar div {
|
|||
}
|
||||
|
||||
table.list td.chart {
|
||||
width:500px;
|
||||
width:400px;
|
||||
/* background-color: var(--base-color); */
|
||||
/* Remove 5er separators for bars */
|
||||
/*border-color:rgba(0,0,0,0)!important;*/
|
||||
|
|
|
@ -104,7 +104,13 @@ function createTrackCell(trackinfo) {
|
|||
function editEntity() {
|
||||
|
||||
var namefield = document.getElementById('main_entity_name');
|
||||
namefield.contentEditable = "plaintext-only";
|
||||
try {
|
||||
namefield.contentEditable = "plaintext-only"; // not supported by Firefox
|
||||
}
|
||||
catch (e) {
|
||||
namefield.contentEditable = true;
|
||||
}
|
||||
|
||||
|
||||
namefield.addEventListener('keydown',function(e){
|
||||
// dont allow new lines, done on enter
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "malojaserver"
|
||||
version = "3.1.4"
|
||||
version = "3.1.5"
|
||||
description = "Self-hosted music scrobble database"
|
||||
readme = "./README.md"
|
||||
requires-python = ">=3.7"
|
||||
|
@ -21,7 +21,7 @@ classifiers = [
|
|||
dependencies = [
|
||||
"bottle>=0.12.16",
|
||||
"waitress>=2.1.0",
|
||||
"doreah>=1.9.3, <2",
|
||||
"doreah>=1.9.4, <2",
|
||||
"nimrodel>=0.8.0",
|
||||
"setproctitle>=1.1.10",
|
||||
#"pyvips>=2.1.16",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
bottle>=0.12.16
|
||||
waitress>=2.1.0
|
||||
doreah>=1.9.3, <2
|
||||
doreah>=1.9.4, <2
|
||||
nimrodel>=0.8.0
|
||||
setproctitle>=1.1.10
|
||||
jinja2>=3.0.0
|
||||
|
@ -9,4 +9,3 @@ psutil>=5.8.0
|
|||
sqlalchemy>=1.4
|
||||
python-datauri>=1.1.0
|
||||
requests>=2.27.1
|
||||
|
||||
|
|
Loading…
Reference in New Issue