Все мои mp3-файлы хранятся в каталоге D:My music. Каждый альбом или сборка в отдельном подкаталоге. Думаю, что у большинства дело обстоит так же. В каждом каталоге с mp3-файлами у меня хранится m3u-плейлист. Однако бывают такие каталоги, содержимое которых постоянно меняется. В результате запустив старый плейлист в нем могут быть уже утерянные позиции, а новые еще не будут присутствовать. Нужно обновить плейлист, а это даже с Total Commander занимает несколько кликов. Поэтому я решил написать скрипт, который будет делать это автоматически.
Вы запускаете скрипт .parse() передавая ему два параметра. Первый параметр обязательный и является директорией, которую нужно пропарсить, второй параметр - опциональный и может равнятся "1" если вы хотите, чтобы пути в плейлистах были абсолютные.
Вот примеры
.parse("D:My music")
.parse("D:My music", "1")
Первый создаст плейлисты с относительными путями, второй - с абсолютными.
Теперь собственно скрипт, который состоит из двух файлов parse.txt и q.txt, которые нужно сохранить в директории Scripts или ее поддиректории.
parse.txt
- Код: выделить все
; (c) Ergo. Directory PLaylist Maker
; run as .parser("D:My music") to playlist D:My music
; run as .parser("D:My music", "1") to do the same with absolute paths
Ergo_Temp = arg(1) ++ "allfiles.tmp"
handle = File.Open(Ergo_Temp , "w")
file.allfiles (arg(1), "file.writeline(handle,'"|'")", "1")
file.close(handle)
handle = File.Open(Ergo_Temp, "r")
str_before ="No matter"
if (handle > 0) Do
str = File.Readline(handle)
for (lineNum=1;1;LineNum=LineNum+1)
str = File.Readstring(handle)
str= select(str,revindex(str,"")-1)
if (not (str == str_before)) Do
ErgoName = str ++ "" ++remove (str,revindex(str,"")) ++ ".m3u"
fd = File.Open(ErgoName , "w")
fName = str ++ "*.mp3"
if (fd > 0) Do
if (arg(2) == "1") Do
file.allfiles (fName, "file.writeline(fd,'"|'")")
Else
file.allfiles (fName, ".q('"|'")")
Endif
file.close(fd)
Endif
str_before = str
endif
if (File.Eof(handle))
break
endfor
file.closeall
file.delete (Ergo_Temp)
endif
q.txt
- Код: выделить все
hh = arg(1)
hh = remove(hh,revindex(hh,""))
Debug &(hh)
file.writeline(fd,hh)
Теперь очень удобно вызывать список плейлистов командой
*Menu Folder D:My Music !`noext .m3u nosubmenu
Более удобного управления плейлистами и mp3-файлами в сочетании с другими скриптами для Winamp-а я уже не представляю <!--emo&:)--><!--endemo-->
Для работы этого скрипта необходим плагин file, который процентов на 90 у вас уже установлен и версия Windows PowerPro поновее. Я проверял его на Windows PowerPro 3.6.05. Но скорее всего будет работать и на версиях начиная с Windows PowerPro 3.6.01
Как всегда жду багрепортов, комментариев, отзывов, пожеланий и предложений <!--emo&:)--><!--endemo-->