REFACTOR: ITEM REVOLUTION #91
This commit is contained in:
175
util.py
175
util.py
@ -62,181 +62,6 @@ def get_recursive_file_list_sorted(path):
|
||||
filelist.sort()
|
||||
return filelist
|
||||
|
||||
|
||||
def get_music_path(music):
|
||||
uri = ''
|
||||
if music["type"] == "url":
|
||||
uri = music['path']
|
||||
elif music["type"] == "file":
|
||||
uri = var.music_folder + music["path"]
|
||||
elif music["type"] == "radio":
|
||||
uri = music['url']
|
||||
|
||||
return uri
|
||||
|
||||
def attach_item_id(item):
|
||||
if item['type'] == 'url':
|
||||
item['id'] = hashlib.md5(item['url'].encode()).hexdigest()
|
||||
elif item['type'] == 'file':
|
||||
item['id'] = hashlib.md5(item['path'].encode()).hexdigest()
|
||||
elif item['type'] == 'radio':
|
||||
item['id'] = hashlib.md5(item['url'].encode()).hexdigest()
|
||||
return item
|
||||
|
||||
def attach_music_tag_info(music):
|
||||
music = attach_item_id(music)
|
||||
|
||||
if "path" in music:
|
||||
uri = get_music_path(music)
|
||||
|
||||
if os.path.isfile(uri):
|
||||
match = re.search("(.+)\.(.+)", uri)
|
||||
if match is None:
|
||||
return music
|
||||
|
||||
file_no_ext = match[1]
|
||||
ext = match[2]
|
||||
|
||||
try:
|
||||
im = None
|
||||
path_thumbnail = file_no_ext + ".jpg"
|
||||
if os.path.isfile(path_thumbnail):
|
||||
im = Image.open(path_thumbnail)
|
||||
|
||||
if ext == "mp3":
|
||||
# title: TIT2
|
||||
# artist: TPE1, TPE2
|
||||
# album: TALB
|
||||
# cover artwork: APIC:
|
||||
tags = mutagen.File(uri)
|
||||
if 'TIT2' in tags:
|
||||
music['title'] = tags['TIT2'].text[0]
|
||||
if 'TPE1' in tags: # artist
|
||||
music['artist'] = tags['TPE1'].text[0]
|
||||
|
||||
if im is None:
|
||||
if "APIC:" in tags:
|
||||
im = Image.open(BytesIO(tags["APIC:"].data))
|
||||
|
||||
elif ext == "m4a" or ext == "m4b" or ext == "mp4" or ext == "m4p":
|
||||
# title: ©nam (\xa9nam)
|
||||
# artist: ©ART
|
||||
# album: ©alb
|
||||
# cover artwork: covr
|
||||
tags = mutagen.File(uri)
|
||||
if '©nam' in tags:
|
||||
music['title'] = tags['©nam'][0]
|
||||
if '©ART' in tags: # artist
|
||||
music['artist'] = tags['©ART'][0]
|
||||
|
||||
if im is None:
|
||||
if "covr" in tags:
|
||||
im = Image.open(BytesIO(tags["covr"][0]))
|
||||
|
||||
if im:
|
||||
im.thumbnail((100, 100), Image.ANTIALIAS)
|
||||
buffer = BytesIO()
|
||||
im = im.convert('RGB')
|
||||
im.save(buffer, format="JPEG")
|
||||
music['thumbnail'] = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
uri = music['url']
|
||||
|
||||
# if nothing found
|
||||
if 'title' not in music:
|
||||
match = re.search("([^\.]+)\.?.*", os.path.basename(uri))
|
||||
music['title'] = match[1]
|
||||
|
||||
return music
|
||||
|
||||
|
||||
def format_song_string(music):
|
||||
display = ''
|
||||
source = music["type"]
|
||||
title = music["title"] if "title" in music else "Unknown title"
|
||||
artist = music["artist"] if "artist" in music else "Unknown artist"
|
||||
|
||||
if source == "radio":
|
||||
display = constants.strings("now_playing_radio",
|
||||
url=music["url"],
|
||||
title=media.radio.get_radio_title(music["url"]),
|
||||
name=music["name"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "url" and 'from_playlist' in music:
|
||||
display = constants.strings("now_playing_from_playlist",
|
||||
title=title,
|
||||
url=music['url'],
|
||||
playlist_url=music["playlist_url"],
|
||||
playlist=music["playlist_title"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "url":
|
||||
display = constants.strings("now_playing_url",
|
||||
title=title,
|
||||
url=music["url"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "file":
|
||||
display = constants.strings("now_playing_file",
|
||||
title=title,
|
||||
artist=artist,
|
||||
user=music["user"]
|
||||
)
|
||||
|
||||
return display
|
||||
|
||||
|
||||
def format_debug_song_string(music):
|
||||
display = ''
|
||||
source = music["type"]
|
||||
title = music["title"] if "title" in music else "??"
|
||||
artist = music["artist"] if "artist" in music else "??"
|
||||
|
||||
if source == "radio":
|
||||
display = "[radio] {name} ({url}) by {user}".format(
|
||||
name=music["name"],
|
||||
url=music["url"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "url" and 'from_playlist' in music:
|
||||
display = "[url] {title} ({url}) from playlist {playlist} by {user}".format(
|
||||
title=title,
|
||||
url=music["url"],
|
||||
playlist=music["playlist_title"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "url":
|
||||
display = "[url] {title} ({url}) by {user}".format(
|
||||
title=title,
|
||||
url=music["url"],
|
||||
user=music["user"]
|
||||
)
|
||||
elif source == "file":
|
||||
display = "[file] {artist} - {title} ({path}) by {user}".format(
|
||||
title=title,
|
||||
artist=artist,
|
||||
path=music["path"],
|
||||
user=music["user"]
|
||||
)
|
||||
|
||||
return display
|
||||
|
||||
|
||||
def format_current_playing():
|
||||
music = var.playlist.current_item()
|
||||
display = format_song_string(music)
|
||||
|
||||
if 'thumbnail' in music:
|
||||
thumbnail_html = '<img width="80" src="data:image/jpge;base64,' + \
|
||||
music['thumbnail'] + '"/>'
|
||||
return display + "<br />" + thumbnail_html
|
||||
|
||||
return display
|
||||
|
||||
|
||||
# - zips all files of the given zippath (must be a directory)
|
||||
# - returns the absolute path of the created zip file
|
||||
# - zip file will be in the applications tmp folder (according to configuration)
|
||||
|
Reference in New Issue
Block a user