mirror of
https://github.com/krateng/maloja.git
synced 2023-08-10 21:12:55 +03:00
Merge branch 'feature-restructure' into feature-webedit
This commit is contained in:
commit
62208bf668
@ -97,7 +97,7 @@ You must publish a port on your host machine to bind to the container's web port
|
|||||||
An example of a minimum run configuration to access maloja via `localhost:42010`:
|
An example of a minimum run configuration to access maloja via `localhost:42010`:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
docker run -p 42010:42010 -v $PWD/malojadata:/mljdata -e MALOJA_DATA_DIRECTORY=/mljdata maloja
|
docker run -p 42010:42010 -v $PWD/malojadata:/mljdata -e MALOJA_DATA_DIRECTORY=/mljdata krateng/maloja
|
||||||
```
|
```
|
||||||
|
|
||||||
### Extras
|
### Extras
|
||||||
|
@ -28,3 +28,11 @@ minor_release_name: "Yeonhee"
|
|||||||
- "[Feature] Added better feedback to native API endpoints"
|
- "[Feature] Added better feedback to native API endpoints"
|
||||||
- "[Bugfix] Fixed native API receiving superfluous keywords"
|
- "[Bugfix] Fixed native API receiving superfluous keywords"
|
||||||
- "[Bugfix] Fixed crash when importing scrobbles with artists with similar names"
|
- "[Bugfix] Fixed crash when importing scrobbles with artists with similar names"
|
||||||
|
3.0.5:
|
||||||
|
commit: "fe21894c5ecf3a53c9c5c00453abfc7f41c6a83e"
|
||||||
|
notes:
|
||||||
|
- "[Feature] Added notification system for web interface"
|
||||||
|
- "[Bugfix] Fixed crash when encountering error in Lastfm import"
|
||||||
|
3.0.6:
|
||||||
|
notes:
|
||||||
|
- "[Bugfix] Better parsing of featuring artists"
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
|
- "[Architecture] Cleaned up legacy process control"
|
||||||
- "[Feature] Implemented track title and artist name editing from web interface"
|
- "[Feature] Implemented track title and artist name editing from web interface"
|
||||||
- "[Feature] Implemented track and artist merging from web interface"
|
- "[Feature] Implemented track and artist merging from web interface"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# you know what f*ck it
|
# you know what f*ck it
|
||||||
# this is hardcoded for now because of that damn project / package name discrepancy
|
# this is hardcoded for now because of that damn project / package name discrepancy
|
||||||
# i'll fix it one day
|
# i'll fix it one day
|
||||||
VERSION = "3.0.4"
|
VERSION = "3.0.5"
|
||||||
HOMEPAGE = "https://github.com/krateng/maloja"
|
HOMEPAGE = "https://github.com/krateng/maloja"
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,9 +109,9 @@ class CleanerAgent:
|
|||||||
|
|
||||||
|
|
||||||
for d in self.delimiters_feat:
|
for d in self.delimiters_feat:
|
||||||
if re.match(r"(.*) \(" + d + " (.*)\)",a) is not None:
|
if re.match(r"(.*) [\(\[]" + d + " (.*)[\)\]]",a) is not None:
|
||||||
return self.parseArtists(re.sub(r"(.*) \(" + d + " (.*)\)",r"\1",a)) + \
|
return self.parseArtists(re.sub(r"(.*) [\(\[]" + d + " (.*)[\)\]]",r"\1",a)) + \
|
||||||
self.parseArtists(re.sub(r"(.*) \(" + d + " (.*)\)",r"\2",a))
|
self.parseArtists(re.sub(r"(.*) [\(\[]" + d + " (.*)[\)\]]",r"\2",a))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -141,9 +141,11 @@ class CleanerAgent:
|
|||||||
|
|
||||||
t = t.replace("[","(").replace("]",")")
|
t = t.replace("[","(").replace("]",")")
|
||||||
|
|
||||||
t = re.sub(r" \(as made famous by .*?\)","",t)
|
# we'll leave these matching all bracket types so future changes
|
||||||
t = re.sub(r" \(originally by .*?\)","",t)
|
# won't require readaption
|
||||||
t = re.sub(r" \(.*?Remaster.*?\)","",t)
|
t = re.sub(r" [\(\[]as made famous by .*?[\)\]]","",t)
|
||||||
|
t = re.sub(r" [\(\[]originally by .*?[\)\]]","",t)
|
||||||
|
t = re.sub(r" [\(\[].*?Remaster.*?[\)\]]","",t)
|
||||||
|
|
||||||
for s in malojaconfig["REMOVE_FROM_TITLE"]:
|
for s in malojaconfig["REMOVE_FROM_TITLE"]:
|
||||||
if s in t:
|
if s in t:
|
||||||
@ -156,9 +158,9 @@ class CleanerAgent:
|
|||||||
|
|
||||||
def parseTitleForArtists(self,t):
|
def parseTitleForArtists(self,t):
|
||||||
for d in self.delimiters_feat:
|
for d in self.delimiters_feat:
|
||||||
if re.match(r"(.*) \(" + d + " (.*?)\)",t) is not None:
|
if re.match(r"(.*) [\(\[]" + d + " (.*?)[\)\]]",t) is not None:
|
||||||
(title,artists) = self.parseTitleForArtists(re.sub(r"(.*) \(" + d + " (.*?)\)",r"\1",t))
|
(title,artists) = self.parseTitleForArtists(re.sub(r"(.*) [\(\[]" + d + " (.*?)[\)\]]",r"\1",t))
|
||||||
artists += self.parseArtists(re.sub(r"(.*) \(" + d + " (.*?)\).*",r"\2",t))
|
artists += self.parseArtists(re.sub(r"(.*) [\(\[]" + d + " (.*?)[\)\]].*",r"\2",t))
|
||||||
return (title,artists)
|
return (title,artists)
|
||||||
if re.match(r"(.*) - " + d + " (.*)",t) is not None:
|
if re.match(r"(.*) - " + d + " (.*)",t) is not None:
|
||||||
(title,artists) = self.parseTitleForArtists(re.sub(r"(.*) - " + d + " (.*)",r"\1",t))
|
(title,artists) = self.parseTitleForArtists(re.sub(r"(.*) - " + d + " (.*)",r"\1",t))
|
||||||
|
@ -268,11 +268,17 @@ def parse_lastfm(inputf):
|
|||||||
with open(inputf,'r',newline='') as inputfd:
|
with open(inputf,'r',newline='') as inputfd:
|
||||||
reader = csv.reader(inputfd)
|
reader = csv.reader(inputfd)
|
||||||
|
|
||||||
|
line = 0
|
||||||
for row in reader:
|
for row in reader:
|
||||||
|
line += 1
|
||||||
try:
|
try:
|
||||||
artist,album,title,time = row
|
artist,album,title,time = row
|
||||||
except ValueError:
|
except ValueError:
|
||||||
yield ('FAIL',None,f"{row} does not look like a valid entry. Scrobble not imported.")
|
yield ('FAIL',None,f"{row} (Line {line}) does not look like a valid entry. Scrobble not imported.")
|
||||||
|
continue
|
||||||
|
|
||||||
|
if time == '':
|
||||||
|
yield ('FAIL',None,f"{row} (Line {line}) is missing a timestamp.")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -287,7 +293,7 @@ def parse_lastfm(inputf):
|
|||||||
'scrobble_duration':None
|
'scrobble_duration':None
|
||||||
},'')
|
},'')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
yield ('FAIL',None,f"{entry} could not be parsed. Scrobble not imported. ({repr(e)})")
|
yield ('FAIL',None,f"{row} (Line {line}) could not be parsed. Scrobble not imported. ({repr(e)})")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "malojaserver"
|
name = "malojaserver"
|
||||||
version = "3.0.4"
|
version = "3.0.5"
|
||||||
description = "Self-hosted music scrobble database"
|
description = "Self-hosted music scrobble database"
|
||||||
readme = "./README.md"
|
readme = "./README.md"
|
||||||
requires-python = ">=3.6"
|
requires-python = ">=3.6"
|
||||||
|
Loading…
Reference in New Issue
Block a user