Ich habe 1,8 000 verschiedene Künstler in meiner Bibliothek mit 3,6 000 Songs. Ich möchte meine Künstler in der Reihenfolge sortieren, von denen ich die meisten Tracks habe, beginnend mit dem Künstler mit den meisten Tracks bis zum niedrigsten.
Ich möchte jedoch auch, dass diese Gesamtzahl Songs enthält, bei denen sie nicht der ursprüngliche Künstler, sondern der Remixer sind (also ihr Name im Titel steht) und wenn sie ein Mitarbeiter sind (also ihr Name und der eines anderen der Künstler ist). Titel). Meine Songs sind nicht sowohl mit dem Originalkünstler als auch mit dem Remixer als Künstler gekennzeichnet.
Wie kann ich meine Musikbibliothek auf diese Weise sortieren? Welche Software kann das für mich tun? Ich bin auf Windows.
Ich kann damit mit ein paar Zeilen Python beginnen , es ist für Windows verfügbar , und die Mutagen- Bibliothek zum Lesen der ID3-Tags kann mit dieser installiert werdenpip install mutagen
.
Dann ein paar Zeilen Python:
import os
import collections
import mutagen
tracks = 0 # Track Counter
counter = collections.defaultdict(int) # Counter for the tracks by each artist
for root, dirs, names in os.walk(r'/path/to/your/collection'): # Walks the directory tree
for n in names:
if n.split('.')[-1].lower() in ['mp3', ]: # Filter for mp3 files
p = os.path.join(root, n)
try:
info = mutagen.easyid3.EasyID3(p) # Get the track info
tracks += 1
if info.has_key('artist'):
for a in info['artist']:
counter[a] += 1
except Exception, e: # NOT best practice
print e
# Wait a few seconds
print ('Tracks Scanned', tracks) # In my test this gave 4854 in
byf = [(c, n) for (n, c) in counter.iteritems()] # Convert dictionary to list
byf.sort(reverse=True) # Sort into descending order
for n in xrange(10): # Print top 10
print (byf[n])
Natürlich zählt dies allein nicht die Remixer, aber ohne die Namenskonvention zu kennen, müsste ich raten, wie man den Namen des Künstlers aus dem Track-Dateinamen extrahiert, ich würde denken, dass reguläre Ausdrücke ausreichen sollten.
(Foo Bar Remix)
fast ausschließlich in formatiert. Ich würde denken, dass a (in JS) .indexOf
für eine grobe Schätzung gut funktionieren würde
Steve Barnes
Zach Saucier