ein programm zum erzeugen solcher listen könnte so aussehen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# Copyright (c) 2001-2005 Jochen Kupperschmidt <webmaster@homework.nwsnet.de>
# Released under the terms of the GNU General Public License
import glob
import os.path
# Find direct subdirectories.
dirs = []
for entry in os.listdir(os.getcwd()):
if os.path.isdir(entry):
dirs.append(entry)
# Add files in subdirectories to list.
fnames = []
for dir in dirs:
fnames += glob.glob(os.path.join(dir, '*.mp3'))
# Generate playlist from track list.
num = 0
f = open('playlist.pls', 'w')
f.write('[playlist]\n')
for fname in fnames:
num += 1
f.write('File%d=%s\n' % (num, fname))
f.write('Title%d=%s\n' % (num, '.'.join(os.path.basename(fname).split('.')[:-1])))
f.write('Length%d=-1\n' % (num))
f.write('NumberOfEntries=%d\n' % num)
f.write('Version=2\n')
f.close()
|
es liest in einem verzeichnis die tracks in den unterverzeichnissen aus und generiert eine playlist aller dieser tracks. das ganze braucht man nun nur noch in eine schleife für alle verzeichnisse der nächsthöheren ebene zu verpacken und schon erhält man in jedem interpreten-unterverzeichnis eine playlist aller tracks (genauer: mp3s) des interpreten (bzw. der, die sich unterhalb dieses verzeichnisses befinden).
laut den specs ist eine negative tracklänge erlaubt (macht z.b. bei streams sinn) und der player sollte den length-eintrag in dem fall ignorieren.
der title-eintrag sollte aus dem id3-tag ausgelesen werden. ist dieses nicht vorhanden, sollte der dateiname ohne die endung verwendet werden.
beide fallbacks habe ich der einfachheit halber verwendet, ein kleines
id3-auslese-modul (mit optionaler gui) habe ich aber auch mal geschrieben.
Update:
PLS-Playlist-Generator