PP Script: Directory Playlist Maker

Те, кто ей начинают пользоваться, уже не в силах остановиться! Она может все. Или почти все!

PP Script: Directory Playlist Maker

Сообщение Ergo » Чт фев 20, 2003 9:02 am

Немного предистории.
Все мои 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-->
<!--coloro:purple--><span style="color:purple"><!--/coloro--><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->I can't stop using<a href="http://wincmd.ru" target="_blank">Total Commander</a> <!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Ergo
Полковник
 
Сообщений: 1357
Зарегистрирован: Чт мар 28, 2002 12:42 pm
Откуда: Brest Fortress
Пункты репутации: 0

Вернуться в Windows PowerPro

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron