Anna Schumaker
52a36a2f83
This is used to get the sort order for artists or album artists, depending on which is set. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
95 lines
5.2 KiB
Python
95 lines
5.2 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
import base64
|
|
import mutagen
|
|
import mutagen.flac
|
|
import mutagen.id3
|
|
import os
|
|
import subprocess
|
|
|
|
trier = os.path.abspath("trier")
|
|
ffmpeg = "ffmpeg -hide_banner -nostdin -f s16le -i /dev/zero -codec libvorbis -loglevel warning".split()
|
|
|
|
image = mutagen.flac.Picture()
|
|
image.data = open("emmental.png", "rb").read()
|
|
image.type = mutagen.id3.PictureType.COVER_FRONT
|
|
image.mime = u"image/png"
|
|
image.width = 512
|
|
image.height = 512
|
|
image.depth = 16
|
|
encoded_data = base64.b64encode(image.write())
|
|
image_data = encoded_data.decode("ascii")
|
|
|
|
|
|
def generate_track(length, filename, tags={}):
|
|
path = os.path.join(trier, filename)
|
|
if os.path.exists(path):
|
|
return
|
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
subprocess.run(ffmpeg + [ "-t", str(length), path ])
|
|
|
|
fileinfo = mutagen.File(path)
|
|
for (key, value) in tags.items():
|
|
fileinfo[key] = value
|
|
fileinfo["metadata_block_picture"] = [ image_data ]
|
|
fileinfo.save()
|
|
|
|
# Create a bunch of tracks in the Test Album directory
|
|
generate_track( 0, "Test Album/00 - Empty Track.ogg")
|
|
generate_track(10, "Test Album/01 - Test Track.ogg", { "title" : "Test Track",
|
|
"artist" : "Test Artist",
|
|
"artistsort" : "Artist, Test",
|
|
"album" : "Test Album",
|
|
"genre" : "Test",
|
|
"date" : "2019-02",
|
|
"tracknumber" : "1",
|
|
"tracktotal" : "12",
|
|
"discnumber" : "1" })
|
|
generate_track(15, "Test Album/02 - Test {Disc 2}.ogg", { "Title" : "Test {Disc 2}",
|
|
"albumartist" : "Test Album Artist",
|
|
"albumartistsort" : "Album Artist, Test",
|
|
"artist" : "Test Artist",
|
|
"artistsort" : "Artist, Test",
|
|
"album" : "Test Album {Disc 2}",
|
|
"genre" : "Test, Genre, List",
|
|
"originalyear" : "2019",
|
|
"date" : "2020-10-18"})
|
|
generate_track(20, "Test Album/03 - Test [Disk One].ogg", { "Title" : "Test [Disk One]",
|
|
"album" : "Test Album [Disk One]",
|
|
"discnumber" : "2"})
|
|
generate_track(25, "Test Album/04 - Test (Disc Two).ogg", { "Title" : "Test (Disc Two)",
|
|
"album" : "Test Album (Disc Two)" })
|
|
generate_track(30, "Test Album/05 - Test - Disc Three.ogg", { "Title" : "Test - Disc Three",
|
|
"album" : "Test - Disc Three" })
|
|
generate_track(35, "Test Album/06 - Test;CD Four.ogg", { "Title" : "Test;CD Four",
|
|
"album" : "Test;CD Four" })
|
|
generate_track(40, "Test Album/07 - Test;CdFive.ogg", { "Title" : "Test;CdFive",
|
|
"album" : "Test;CdFive" })
|
|
generate_track(45, "Test Album/08 - Test CD 6_10.ogg", { "Title" : "Test CD 6/10",
|
|
"album" : "Test CD 6/10" })
|
|
generate_track(50, "Test Album/09 - Test {Disc 02}.ogg", { "Title" : "Test {Disc 02}",
|
|
"album" : "Test Album {Disc 02}" })
|
|
generate_track(55, "Test Album/10 - Test {Disc 20}.ogg", { "Title" : "Test {Disc 20}",
|
|
"album" : "Test Album {Disc 20}" })
|
|
generate_track(60, "Test Album/11 - Test Track 11.ogg", { "Title" : "Test Track 11",
|
|
"album" : "Test Album 11",
|
|
"discnumber" : "1",
|
|
"tracknumber" : "11" })
|
|
with open(os.path.join(trier, "Test Album/text.txt"), 'w') as f:
|
|
f.write("Test Text")
|
|
|
|
# Create a giant library for testing
|
|
for artistno in range(1, 26):
|
|
artist = f"Test Artist {artistno:02}"
|
|
for albumno in range(1, 6):
|
|
album = f"Test Album {albumno}"
|
|
for trackno in range(1, 11):
|
|
title = f"Test Track {trackno:02}"
|
|
genre = f"Test Genre {albumno}"
|
|
generate_track(trackno, f"Test Library/{artist}/{album}/{trackno:02} - {title}.ogg",
|
|
{ "title" : title,
|
|
"artist" : artist,
|
|
"album" : album,
|
|
"genre" : genre,
|
|
"date" : str(1970 + (albumno * 3)),
|
|
"tracknumber" : f"{trackno:02}" })
|