27 lines
918 B
Python
27 lines
918 B
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
import hashlib
|
|
|
|
album_map = dict()
|
|
|
|
class Album:
|
|
def __init__(self, fileinfo):
|
|
self.album = fileinfo.get("album", [ "Unknown Album" ])[0]
|
|
self.genre = fileinfo.get("genre", [ "Unknown" ])[0]
|
|
self.date = int(fileinfo.get("date", [ 0 ])[0])
|
|
self.tracktotal = int(fileinfo.get("tracktotal", [ 0 ])[0])
|
|
self.albumartist = fileinfo.get("albumartist",
|
|
fileinfo.get("album artist",
|
|
fileinfo.get("artist", [ "Unknown Artist" ])))[0]
|
|
|
|
def hash(self):
|
|
md5 = hashlib.md5()
|
|
md5.update(self.album.encode('utf-8'))
|
|
md5.update(self.albumartist.encode('utf-8'))
|
|
md5.update(str(self.date).encode('utf-8'))
|
|
return md5.hexdigest()
|
|
|
|
|
|
def lookup(fileinfo):
|
|
album = Album(fileinfo)
|
|
return album_map.setdefault(album.hash(), album)
|