Pull to refresh

Comments 43

Держите карму :) Вы в траву не играли под этим ником?
Неа. Я в сети не играю. Так, изредко только, с ПК.
в Linux легко делаю так (из 1251 в текущую), запускаем в текущей папке, ищет рекурсивно:
find. -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d

Перед этим поставить пакеты:
sudo apt-get install python-mutagen

50Gb музыки сконвертил за несколько минут
Спасибо за подсказку, обязательно попробую через easytag.
я так же поставил в easytag эту одну галочку и теперь все трэки автоматически сохраняются с кодировкой utf8.
Мне кажется, что это не повод переносить сие в блог Perl только потому, что вы нашли подходящую программу написанную на Perl. ;)
UFO just landed and posted this here
Ее на самом деле не легко найти. Нужная комбинация слов «mp3 iconv», что наверное, не совсем очевидно.
его для этих целей и юзаю, тоже Высоцкого конвертил
Ищу аналогичное под Windows очень давно. Очень сложно экспортировать данные на сайт, когда кодировки различаются. Может кто подскажет способ? Автоматический, руками очень долго.
то, что есть под линуксом, на 90% есть и под винду. наоборот, к сожалению, реже.
но под винду обычно Shareware и с рюшечками.
Насчет массовой смены кодировок, это, похоже, не так. По крайней мере, когда я месяц назад искал, то из работающего нашел только этот скрипти и программку на java, которая под виндой не работала из-за русских кодировок в названиях директорий.
Для работы с тэгами под Windows лучше программы mp3tag я пока не находил. Использовал её в том числе и для смены кодировки, т.к. в плеере крякозяблы были. Качается с оф.сайта за бесплатно.
Я использую TagScanner. Он умеет пакетно обрабатывать, но так чтобы сменить кодировку у тысяч файлов (HDD с музыкой) — как-то не очень получается.
>EasyTag
Там всё крайне просто. Достаточно выставить необходимые параметры в настройках(я лично поставил автоконвертацию ID3v1 тэгов в cp1251(MP3-плеер понимает только их и только в этой кодировке) и ID3v2 в UTF-8). Достаточно открыть папку с музыкой и сохранить изменения. ВСЁ!

PS Может открою секрет, но таких скриптов превеликое множество.
А проверенных? Насчет данного скрипта точно могу сказать что он работает.
Не думаю, чтобы непроверенные скрипты попадали в вики Гидрогена и т.п.
UFO just landed and posted this here
Приятно, что пользователи Windows тоже начинают конвертить в юникод
Winamp и iTunes из коробки не понимают тегов в cp1251, поэтому приходится. :)
P. S. Топик, кстати, про *nix )
Amarok от KDE тоже cp1251 не привечает.
Я про винду говорил, в *nix мире давно осознали преимущества юникода, это MS до сих пор сопротивляется прогрессу.
ну да, как же сопротивляются.
А наличие с 2000 двух видов функций: MEssageBoxA и MessageBoxW ни о чем не говорит?

цитата с ru.wikipedia.org/wiki/Windows_NT
«тогда как в Windows NT, где все строки внутри ОС хранятся исключительно в Юникоде, каждая A-фунция просто преобразует свои строковые параметры в Юникод и вызывает W-версию той же функции»

ну или сошлюсь на Рихтера
wm-help.net/books-online/book/59464/59464-13.html
Для этого еще есть утилитка mid3iconv (основана на модуле python mutagen)
пользуюсь так
find "$1" -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1 #Конвертит в utf-8 (кодировка по умолчанию), удаляет id3v1
упс, ну таким образом она у меня в скрипте используется.
Можно вместо "$1" указать нужную папку.
Спасибо! Улыбнули. Всем юным и не очень девелоперам на стенку перед глазами :)
www.progforce.ru/?q=node/12 — вот еще ссылка, тоже на питоне. Мне помогло! Правда для бунты, но
если подумать, то можно применить к другим дистрибутивам.
Еще 2 слова в защиту EasyTag — он может заполнять тэги исходя из имени файла если самих тэгов нет. Там это очень гибко можно настраивать. Очень удобно. Ну и с простым конвертированием тоже никаких проблем нет.
А как же python-mutagen?

find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
Я в шоке от того, сколько разных способов тут привели :) Я одно время искал такие утилиты, но ничего толком не находилось, а их вон сколько. Наверно все эти утилиты не хорошо проиндексированы.
UFO just landed and posted this here
Я использую такой скрипт
#!/usr/bin/python2.5
# -*- coding:utf8 -*-
""" Перекодирует все теги из файла cp1251 -> utf8"""
import audiotools,sys,os,os.path
from traceback import format_exc



def get_filelist(path):
        dirlist = []
        def visitor(arg, dirname, names):
                for name in names:
                        fullname = os.path.join(dirname,name)
                        if os.path.isfile(fullname):
                                dirlist.append(fullname.replace(path,''))
				
        os.path.walk(path,visitor,'')                
        return dirlist
    

if len(sys.argv)!=2:
    print "usage %s [path with mp3 or ogg files]" % sys.argv[0]
    sys.exit(1)
for fn in get_filelist(sys.argv[1]):    
    try:
        af = audiotools.open(fn)    
	md = af.get_metadata()
        print "track_name  : %s " % unicode(md.track_name.encode('ISO-8859-1'),'cp1251')
        print "track_number: %i " % md.track_number
        print "album_name  : %s " % unicode(md.album_name.encode('ISO-8859-1'),'cp1251')
        print "artist_name : %s " % unicode(md.artist_name.encode('ISO-8859-1'),'cp1251')

        md.track_name=unicode(md.track_name.encode('ISO-8859-1'),'cp1251')
        md.album_name= unicode(md.album_name.encode('ISO-8859-1'),'cp1251')
        md.artist_name= unicode(md.artist_name.encode('ISO-8859-1'),'cp1251')
        print "save"
        af.set_metadata(md)
    except Exception, e:
	print '-' * 20
        print e,format_exc()
        print '-' * 20
Вопрос на засыпку, а из всего вышеприведенного что для «flac» формата сгодится? Сейчас он как-то активно в массы пошел, но я не представляю себе как в нем с кодировками дело обстоит.
EasyTag умеет с flac"-ом обращаться, а вот CLI утилиты?
Sign up to leave a comment.

Articles