|
|
|
|
|
Сергей Москаленко
Как я писал mp3tagConverter.
http://camopu.rhorse.ru/prg/mp3tagcorrector.html
Любому, кто слушает музыку на Маке, знакомы "белиберда", которая получается при некоторых "неправильных" кодировках тагов в mp3-файлах.
Я столкнулся с этой проблемой три года назад, когда только поступил на работу в нашу компанию. Было множество различных неудобств и непривычностей, связанных со сменой системы и платформы, поэтому я не уделял слишком много внимания буковкам-"кривлякам" в плей-листах. Однако, спустя примерно полгода мне это надоело, я не нашел ни одного корректора, а встроенные в iTunes вообще не работали.
Я решил написать свой корректор-конвертор. Для начала я разобрался со старыми mp3-тагами, а также с тагами iTunes, которые просто относятся к следующему поколению тагов и позволяют включать в свое тело не только текстовую информацию про исполнителя, название песен, альбома и так далее, а и графические элементы - такие, как обложка альбома и даже небольшие видеоролики. Меня эти возможности не интересовали, я просто отметил про себя, что это возможно.
Я написал команд-лайновую тулзу(так у нас называют утилиты). Она была простой как палка - просто брала файл и корректировала соответствующие поля. Утилитой пользовались ребята в нашей Компании и особых неудобств не испытывали, довольствуясь bash-файлом примерно следующего содержания:
#!/bin/sh
find . -type f -name "*.mp3" -exec ./mp3tagConverter \{\} \;
В процессе многочисленных переездов с компьютера на компьютер исходники благополучно затерялись, а писать заново мне не хотелось. Поэтому, я решил, пусть остается старый коман-лайновый конвертор. Необходимо лишь дописать к нему простейший графический интерфейс. Программа была написана за 2 часа. Сердцем ее послужили два основных метода:
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
{
[self checkForFolderAndProcessFile:filename];
return YES;
}
- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames
{
int i, m = [filenames count];
for (i = 0; i < m; i++)
[self checkForFolderAndProcessFile:[filenames objectAtIndex:i]];
}
Написанная ранее утилита попросту укладывалась в ресурсы, а затем запускалась с соответствующим параметром. Вот, собственно, и все.
Пользуйтесь на здоровье.
ССЫЛКИ.
ССЫЛКИ.
1. Резюме автора статьи (динамическое - содержимое и фото меняются в зависимости от времени загрузки).
http://camopu.rhorse.ru/resume.html
2. Статья. "Стратегические планы Apple или 'Машина Времени' существует".
http://camopu.rhorse.ru/apple.html
3. Литературное творчество автора (стихи, проза).
http://www.stihi.ru/author.html?sergey_msv
http://www.proza.ru/author.html?sergey_msv
4. Программы, статьи, фотографии Автора.
http://camopu.rhorse.ru
5. Содержание тестов по C++ и Objective-C, пройденное Автором в Киеве во время собеседований (постоянно обновляется и дополняется).
http://camopu.rhorse.ru/articles/c-plus-plus_objective-c_tests_in_kiev.html
Все авторские права принадлежат Автору (c) Сергей Москаленко.
Автор разрешает размещать данную статью в неизмененном виде на Ваших сайтах. Обязательно сообщите адрес - соответствующая ссылка появится на сайтах Автора.
Copyright (c) Serge Moskalenko.
|
|
|
|
|
|