Fix file comparison for Spotify import, fix GH-261

This commit is contained in:
krateng 2023-10-30 12:21:14 +01:00
parent f375ba7a31
commit 6c2c89c205
3 changed files with 20 additions and 7 deletions

View File

@ -18,3 +18,7 @@ minor_release_name: "Nicole"
- "[Bugfix] Disabled DB maintenance while not running main server" - "[Bugfix] Disabled DB maintenance while not running main server"
- "[Bugfix] Removed some nonsensical ephemereal database entry creations" - "[Bugfix] Removed some nonsensical ephemereal database entry creations"
- "[Bugfix] Fixed API endpoint for track charts with no artist provided" - "[Bugfix] Fixed API endpoint for track charts with no artist provided"
- "[Technical] Bumped Python and SQLAlchemy versions"
- "[Distribution] Removed build of arm/v7 image"
3.2.1:
notes: []

View File

@ -133,7 +133,9 @@ def import_scrobbles(inputf):
def parse_spotify_lite_legacy(inputf): def parse_spotify_lite_legacy(inputf):
pth = os.path pth = os.path
inputfolder = pth.relpath(pth.dirname(pth.abspath(inputf))) # use absolute paths internally for peace of mind. just change representation for console output
inputf = pth.abspath(inputf)
inputfolder = pth.dirname(inputf)
filenames = re.compile(r'StreamingHistory[0-9]+\.json') filenames = re.compile(r'StreamingHistory[0-9]+\.json')
inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)] inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)]
@ -143,8 +145,9 @@ def parse_spotify_lite_legacy(inputf):
if inputfiles != [inputf]: if inputfiles != [inputf]:
print("Spotify files should all be imported together to identify duplicates across the whole dataset.") print("Spotify files should all be imported together to identify duplicates across the whole dataset.")
if not ask("Import " + ", ".join(col['yellow'](i) for i in inputfiles) + "?",default=True): if not ask("Import " + ", ".join(col['yellow'](pth.basename(i)) for i in inputfiles) + "?",default=True):
inputfiles = [inputf] inputfiles = [inputf]
print("Only importing", col['yellow'](pth.basename(inputf)))
for inputf in inputfiles: for inputf in inputfiles:
@ -183,7 +186,9 @@ def parse_spotify_lite_legacy(inputf):
def parse_spotify_lite(inputf): def parse_spotify_lite(inputf):
pth = os.path pth = os.path
inputfolder = pth.relpath(pth.dirname(pth.abspath(inputf))) # use absolute paths internally for peace of mind. just change representation for console output
inputf = pth.abspath(inputf)
inputfolder = pth.dirname(inputf)
filenames = re.compile(r'Streaming_History_Audio.+\.json') filenames = re.compile(r'Streaming_History_Audio.+\.json')
inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)] inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)]
@ -193,8 +198,9 @@ def parse_spotify_lite(inputf):
if inputfiles != [inputf]: if inputfiles != [inputf]:
print("Spotify files should all be imported together to identify duplicates across the whole dataset.") print("Spotify files should all be imported together to identify duplicates across the whole dataset.")
if not ask("Import " + ", ".join(col['yellow'](i) for i in inputfiles) + "?",default=True): if not ask("Import " + ", ".join(col['yellow'](pth.basename(i)) for i in inputfiles) + "?",default=True):
inputfiles = [inputf] inputfiles = [inputf]
print("Only importing", col['yellow'](pth.basename(inputf)))
for inputf in inputfiles: for inputf in inputfiles:
@ -239,7 +245,9 @@ def parse_spotify_lite(inputf):
def parse_spotify(inputf): def parse_spotify(inputf):
pth = os.path pth = os.path
inputfolder = pth.relpath(pth.dirname(pth.abspath(inputf))) # use absolute paths internally for peace of mind. just change representation for console output
inputf = pth.abspath(inputf)
inputfolder = pth.dirname(inputf)
filenames = re.compile(r'endsong_[0-9]+\.json') filenames = re.compile(r'endsong_[0-9]+\.json')
inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)] inputfiles = [os.path.join(inputfolder,f) for f in os.listdir(inputfolder) if filenames.match(f)]
@ -249,8 +257,9 @@ def parse_spotify(inputf):
if inputfiles != [inputf]: if inputfiles != [inputf]:
print("Spotify files should all be imported together to identify duplicates across the whole dataset.") print("Spotify files should all be imported together to identify duplicates across the whole dataset.")
if not ask("Import " + ", ".join(col['yellow'](i) for i in inputfiles) + "?",default=True): if not ask("Import " + ", ".join(col['yellow'](pth.basename(i)) for i in inputfiles) + "?",default=True):
inputfiles = [inputf] inputfiles = [inputf]
print("Only importing", col['yellow'](pth.basename(inputf)))
# we keep timestamps here as well to remove duplicates because spotify's export # we keep timestamps here as well to remove duplicates because spotify's export
# is messy - this is specific to this import type and should not be mixed with # is messy - this is specific to this import type and should not be mixed with

View File

@ -123,7 +123,7 @@
<h2>Say thanks</h2> <h2>Say thanks</h2>
Donations are never required, but always appreciated. If you really like Maloja, you can fund my next Buttergipfel via Donations are never required, but always appreciated. If you really like Maloja, you can fund my next Buttergipfel via
<a class="textlink" target="_blank" rel="noopener noreferrer" href="https://paypal.me/krateng">PayPal</a>, <a class="textlink" href="bitcoin:1krat8JMniJBTiHftMfR1LtF3Y1w5DAxx">Bitcoin</a> or <a class="textlink" target="_blank" rel="noopener noreferrer" href="https://flattr.com/@Krateng">Flattr</a>. <a class="textlink" target="_blank" rel="noopener noreferrer" href="https://paypal.me/krateng">PayPal</a> or <a class="textlink" href="bitcoin:1krat8JMniJBTiHftMfR1LtF3Y1w5DAxx">Bitcoin</a>.
<br/><br/> <br/><br/>