Interpreten nach Anzahl der Tracks sortieren, einschließlich Remixe

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.

Wie werden die aktuellen Informationen zu Künstler(n), Remixer gespeichert, dh im Verzeichnisnamen, Titelnamen oder in den MP3-Tags?
@SteveBarnes Die Originalkünstler werden im Künstler-Meta gespeichert, nicht im Titelnamen. Remixer werden nur im Tracknamen gespeichert

Antworten (1)

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.

Die Remixe sind (Foo Bar Remix)fast ausschließlich in formatiert. Ich würde denken, dass a (in JS) .indexOffür eine grobe Schätzung gut funktionieren würde
@ZachSaucier - Natürlich hilft Ihnen das Obige nicht dabei, herauszufinden, welche Tracks einem bestimmten Künstler gutgeschrieben werden, aber Sie können problemlos ein Wörterbuch mit Pfaden und Tracktiteln gleichzeitig mit den Künstlernamen erstellen und speichern. Ich werde den obigen Code ein wenig anpassen, um das und die Foo Bar-Tags hinzuzufügen.