mirror of
https://github.com/krateng/maloja.git
synced 2023-08-10 21:12:55 +03:00
parent
2ce2e2f682
commit
9b10ca4a5d
@ -135,6 +135,7 @@ If you would like to import your previous scrobbles, use the command `maloja imp
|
|||||||
|
|
||||||
* a Last.fm export generated by [benfoxall's website](https://benjaminbenben.com/lastfm-to-csv/) ([GitHub page](https://github.com/benfoxall/lastfm-to-csv))
|
* a Last.fm export generated by [benfoxall's website](https://benjaminbenben.com/lastfm-to-csv/) ([GitHub page](https://github.com/benfoxall/lastfm-to-csv))
|
||||||
* an official [Spotify data export file](https://www.spotify.com/us/account/privacy/)
|
* an official [Spotify data export file](https://www.spotify.com/us/account/privacy/)
|
||||||
|
* an official [ListenBrainz export file](https://listenbrainz.org/profile/export/)
|
||||||
* the export of another Maloja instance
|
* the export of another Maloja instance
|
||||||
|
|
||||||
⚠️ 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.
|
⚠️ 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.
|
||||||
|
@ -49,6 +49,11 @@ def import_scrobbles(inputf):
|
|||||||
typeid,typedesc = "maloja","Maloja"
|
typeid,typedesc = "maloja","Maloja"
|
||||||
importfunc = parse_maloja
|
importfunc = parse_maloja
|
||||||
|
|
||||||
|
# username_lb-YYYY-MM-DD.json
|
||||||
|
elif re.match(".*_lb-[0-9-]+\.json",filename):
|
||||||
|
typeid,typedesc = "listenbrainz","ListenBrainz"
|
||||||
|
importfunc = parse_listenbrainz
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("File",inputf,"could not be identified as a valid import source.")
|
print("File",inputf,"could not be identified as a valid import source.")
|
||||||
return result
|
return result
|
||||||
@ -308,6 +313,28 @@ def parse_lastfm(inputf):
|
|||||||
yield ('FAIL',None,f"{row} (Line {line}) 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
|
||||||
|
|
||||||
|
def parse_listenbrainz(inputf):
|
||||||
|
|
||||||
|
with open(inputf,'r') as inputfd:
|
||||||
|
data = json.load(inputfd)
|
||||||
|
|
||||||
|
for entry in data:
|
||||||
|
|
||||||
|
try:
|
||||||
|
track_metadata = entry['track_metadata']
|
||||||
|
additional_info = track_metadata.get('additional_info', {})
|
||||||
|
|
||||||
|
yield ("CONFIDENT_IMPORT",{
|
||||||
|
'track_title': track_metadata['track_name'],
|
||||||
|
'track_artists': additional_info.get('artist_names') or track_metadata['artist_name'],
|
||||||
|
'track_length': int(additional_info.get('duration_ms', 0) / 1000) or additional_info.get('duration'),
|
||||||
|
'album_name': track_metadata.get('release_name'),
|
||||||
|
'scrobble_time': entry['listened_at'],
|
||||||
|
'scrobble_duration': None,
|
||||||
|
},'')
|
||||||
|
except Exception as e:
|
||||||
|
yield ('FAIL',None,f"{entry} could not be parsed. Scrobble not imported. ({repr(e)})")
|
||||||
|
continue
|
||||||
|
|
||||||
def parse_maloja(inputf):
|
def parse_maloja(inputf):
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user