Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Кнопка на панели инструментов для изменения имени mp3

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Mon Aug 13, 2007 21:23    Post subject: Кнопка на панели инструментов для изменения имени mp3 Reply with quote

Подскажите, пожалуйста, как можно сделать на панели инструментов конопку для изменения имени mp3 файла на основании информации из его тега (ID3v1.1 и ID3v2). Чтобы файл автоматически переименовывался в формат: "Исполнитель - Название песни" (или "№№ Исполнитель - Название песни")

В идеале хоелось бы сделать на основе vbs. Smile
Но если есть другой путь... то можно и его попробовать.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Mon Aug 13, 2007 22:16    Post subject: Reply with quote

Есть MRt (Ctrl+M), там можно применить плагин AudioInfo / AnyTag.
Back to top
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Tue Aug 14, 2007 11:26    Post subject: Reply with quote

Поробовал применить плагин AudioInfo. Но чтобы переименовать файл необходимо вызывать диалог группового преименования, выбрать там шаблон и только потом переименовывать.

А можно ли сделать просто кнопку на панели инструментов - одно нажатие и файл (файлы) переименован по правилу "Исполнитель - Название песни"?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Aug 14, 2007 13:09    Post subject: Reply with quote

Идем сюда - Чтение тегов 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
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Tue Aug 14, 2007 16:29    Post subject: Reply with quote

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
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Aug 14, 2007 16:45    Post subject: Reply with quote

Lari
А на таких файлах ошибка стабильно повторяется?
Выложи куда-нибудь такой файл, посмотреть.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Tue Aug 14, 2007 17:11    Post subject: Reply with quote

Batya
Quote:
А на таких файлах ошибка стабильно повторяется?

да...

Вот пример файла http://www.zshare.net/audio/3132482f97dc39/
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Aug 14, 2007 18:41    Post subject: Reply with quote

Разобрался - надо удалять нулевые символы. В 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
View user's profile Send private message
Lari



Joined: 12 Mar 2007
Posts: 30

Post (Separately) Posted: Tue Aug 14, 2007 19:59    Post subject: Reply with quote

с заменой все прекрасно работает.

по поводу ID3v2 может быть это подойдет http://www.zshare.net/download/3134767fe6612c/
правда там на delphi...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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