View previous topic :: View next topic |
Author |
Message |
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Mon Aug 13, 2007 21:23 Post subject: Кнопка на панели инструментов для изменения имени mp3 |
|
|
Подскажите, пожалуйста, как можно сделать на панели инструментов конопку для изменения имени mp3 файла на основании информации из его тега (ID3v1.1 и ID3v2). Чтобы файл автоматически переименовывался в формат: "Исполнитель - Название песни" (или "№№ Исполнитель - Название песни")
В идеале хоелось бы сделать на основе vbs.
Но если есть другой путь... то можно и его попробовать. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Mon Aug 13, 2007 22:16 Post subject: |
|
|
Есть MRt (Ctrl+M), там можно применить плагин AudioInfo / AnyTag. |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Tue Aug 14, 2007 11:26 Post subject: |
|
|
Поробовал применить плагин AudioInfo. Но чтобы переименовать файл необходимо вызывать диалог группового преименования, выбрать там шаблон и только потом переименовывать.
А можно ли сделать просто кнопку на панели инструментов - одно нажатие и файл (файлы) переименован по правилу "Исполнитель - Название песни"? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Tue Aug 14, 2007 13:09 Post subject: |
|
|
Идем сюда - Чтение тегов MP3-файлов (ActiveX, написанный на VBScript). Скачиваем mp3tags.wsc по ссылке, регистрируем.
Для переименования используем vbs-скрипт с параметром %L:
Code: | '==========================================================================
' Переименование файлов по mp3-тегам:
' {Исполнитель} - {Название песни}.mp3
' В качестве входного параметра должно быть передано имя файла-списка
' Параметры вызова из TC:
' %L
'==========================================================================
Option Explicit
' Проверяем число аргументов
If WScript.Arguments.Count = 0 Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
"Переименование файлов по mp3-тегам"
WScript.Quit
End If
Dim FSO, Mp3, List, OTF, File, Result
Set FSO = CreateObject("Scripting.FileSystemObject")
List = WScript.Arguments(0)
If Not FSO.FileExists(List) Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
"Переименование файлов по mp3-тегам"
Set FSO = Nothing
WScript.Quit
End If
Set Mp3 = CreateObject("Scripting.Mp3TagsReader")
Set OTF = FSO.OpenTextFile(List, 1)
' Читаем файл-список
Do While Not OTF.AtEndOfStream
File = OTF.ReadLine
Result = Mp3.Read(File)
' Если без ошибок, то переименовываем
If Result = 0 Then
' Переименовываем, если теги "Artist" и "Title" не пустые
If (Len(Mp3.Artist) > 0) And (Len(Mp3.Title) > 0) Then
' Игнорируем ошибки переименования (обрабатываем по возможности все)
On Error Resume Next
FSO.GetFile(File).Name = Mp3.Artist & " - " & Mp3.Title & ".mp3"
On Error GoTo 0
End If
End If
Loop
OTF.Close
Set OTF = Nothing
Set Mp3 = Nothing
Set FSO = Nothing
WScript.Quit |
Last edited by Batya on Tue Aug 14, 2007 18:36; edited 1 time in total |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
(Separately) Posted: Tue Aug 14, 2007 16:29 Post subject: |
|
|
mp3tags.wsc - неплохой скрипт, но есть один большой недостаток он работает только с тегами ID3v1.1 и не поддерживает теги ID3v2.
И не совсем понятно с самим скриптом для кнопки.
Строка FSO.GetFile(File).Name = Mp3.Artist & " - " & Mp3.Title & ".mp3" срабатывает правильно не на всех файлах. Иногда в имя передается только значение Mp3.Artist. Все остальное (" - ", ".mp3", Mp3.Title) обрезается, хотя Mp3.Title не пустое. Видимо это происходит потому что в mp3tags.wsc для Artist выделяется массив. Как с этим бороться и неясно почему на одних файлах срабатывает, а на других обрезает? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Tue Aug 14, 2007 16:45 Post subject: |
|
|
Lari
А на таких файлах ошибка стабильно повторяется?
Выложи куда-нибудь такой файл, посмотреть. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Tue Aug 14, 2007 18:41 Post subject: |
|
|
Разобрался - надо удалять нулевые символы. В mp3tags.wsc надо соответствующие строки заменить на
Code: | Title = Trim(Replace(Mid(Data, 4, 30), vbNullChar, ""))
Artist = Trim(Replace(Mid(Data, 34, 30), vbNullChar, ""))
Album = Trim(Replace(Mid(Data, 64, 30), vbNullChar, ""))
Year = Trim(Replace(Mid(Data, 94, 4), vbNullChar, ""))
Comment = Trim(Replace(Mid(Data, 98, 30), vbNullChar, ""))
|
А ID3v2 я не знаю, как вытаскивать. Если кто-нибудь скажет как, или покажет исходники на чем-нидь, которые позволяют такое сделать, я попробую прикрутить это в mp3tags.wsc. |
|
Back to top |
|
|
Lari
Joined: 12 Mar 2007 Posts: 30
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|