Тема: AHK:Оффлайн радио-Создание CUE
Около года назад открыл для себя программу Audacity. С тех пор постоянно нахаляву качаю радио на свой компьютер. По принципу: на ночь включил и всю ночь музыка пишется в формате flac. Качество хорошее но и вес тоже неплохой: сейчас у меня ~100ГБ. Все бы хорошо, но треки большие по 6-8 ГБ. Поэтому вроде музыки много а толку мало, так как надоест такой трек.
Вот я и придумал себе помощника который на каждый имеющийся в папке файл *.flac напишет мне файл *.cue, с разбивкой на 10-минутные треки. Потом папку загружаешь в плейлист AIMP, включаешь случайный выбор и кайфуешь. Чувство новизны!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Оффлайн радио-Создание CUE ;;;
;;; Claus555, 11/03/2018г. ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Данный скрипт позволяет разбить большие flac файлы на треки по 10 минут
;путем создания одноименных файлов .cue
;При добавлении обработанной таким образом папки с файлами flac
;в плейлист AIMP-плеера, в нем будут созданы треки по 10 минут,
;которые можно проигрывать в случайном порядке!
;Есть два режима работы скрипта: 1)Работа с отдельным файлом
;2)Пакетный режим(работа с папкой)
;Рекомендую сперва выбрать пакетный режим, а недочеты исправлять в первом режиме
;Меры предосторожности: в пакетном режиме
;если файл CUE с данным именем уже существует, он переписываться НЕ БУДЕТ
;все останется как есть.
InputBox, mod, Выберите режим (файл`,пакетный),
(
Какой режим вы выбираете?`nфайл-введите "1"
пакетный(папка)-введите "2"
)
if (mod = "") ;если не выбран режим-выход
ExitApp
SizeTrek:=116300 ;кБ - вес 10 минут , надо определять опытным путем
InputBox, Size, Введите вес трека (кБ/10мин) ,
(
Высчитать вес трека можно по формуле:
SizeTrek=(Размер Файла(кБ)/Общее время звучания(мин))*10
По умолчанию %SizeTrek%кБ
)
if (Size != "")
SizeTrek:=Size
if (mod=1)
Gosub, s1
else if (mod=2)
Gosub, s2
ExitApp
s1:
t1=---------------------------------------------Выберите файл(*.flac)
t2=для разбивки -----------------------------------
FileSelectFile, File, , ,%t1% %t2%
if (File="") ;если не выбран файл-выход
Return
SplitPath, File, Name ;имя файла + расширение
SplitPath, File,, Dir ;путь до файла
FileName:=SubStr(Name, 1, InStr(Name, ".") -1) ;чистое имя (без расширения)
IfExist, %Dir%\%Name%.cue ;если файл cue существует
{
MsgBox , 4, , Файл *.cue существует, переписать его?
IfMsgBox Yes
{
FileDelete, %Dir%\%FileName%.cue
Gosub, s3
}
else
ExitApp
}
s3:
FileGetSize, FileSize, %File%, K
if (FileSize<=SizeTrek) ; если размер файла меньше размера трека
ExitApp
SumTrek:=Floor(FileSize/SizeTrek) ;количество 10-минутных треков в файле
Rec=
(
FILE `"%Name%`" WAVE
TRACK 1 AUDIO
INDEX 01 00:00:00
)
FileAppend, %Rec%`n, %Dir%\%FileName%.cue
Loop, % SumTrek
{
NTrek:=A_Index+1
Trek_Min:=(NTrek-1)*10
Rec=
(
TRACK %NTrek% AUDIO
INDEX 01 %Trek_Min%:00:00
)
FileAppend, %Rec%`n, %Dir%\%FileName%.cue
}
ExitApp
s2:
txt:=" Выберите папку с файлами FLAC `n в ней для каждого файла flac будет создан свой cue `n с разбивкой на треки по 10 мин"
FileSelectFolder, Folder , , , %txt%
if (Folder="") ;если не выбрана папка-выход
return
;Просмотр содержимого папки
Loop, %Folder%\*.flac ;, , 1 Рекурсия: Просмотр всех папок, в том числе вложенных(Выведено).
{
FileName:=SubStr(A_LoopFileName, 1, InStr(A_LoopFileName, ".") -1) ;чистое имя (без расширения)
IfExist, %A_LoopFileDir%\%FileName%.cue ;если файл cue существует
continue ;прокрутка цикла вперед
if (A_LoopFileSizeKB<=SizeTrek) ; если размер файла меньше размера трека
continue ;прокрутка цикла вперед
SumTrek:=Floor(A_LoopFileSizeKB/SizeTrek) ;количество 10-минутных треков в файле
Rec=
(
FILE `"%A_LoopFileName%`" WAVE
TRACK 1 AUDIO
INDEX 01 00:00:00
)
FileAppend, %Rec%`n, %A_LoopFileDir%\%FileName%.cue
Loop, % SumTrek
{
NTrek:=A_Index+1
Trek_Min:=(NTrek-1)*10
Rec=
(
TRACK %NTrek% AUDIO
INDEX 01 %Trek_Min%:00:00
)
FileAppend, %Rec%`n, %A_LoopFileDir%\%FileName%.cue
}
}
ExitApp
Таким же макаром можно и MP3 и другие форматы обрабатывать только нужно немножко скрипт подогнать под нужное расширение.