Форум — Development патч перекодировки тагов для libid3tag 0 0 Никто случаем не встречал subj? Тошно смотреть cp1251 таги в koi8-r системе :( Ссылка
К xmms'у есть нужный патчик. http://rusxmms.sourceforge.net/ AngryElf ★★★★★ (25.07.04 03:30:35 MSD) Ссылка
я блин тоже batch-перекодировщик ищу... Никто не подскажет тулзы консольные чтобы тегами рулить? hooj ★★ (25.07.04 14:24:30 MSD) Показать ответ Ссылка
Ответ на: комментарий от hooj 25.07.04 14:24:30 MSD > тулзы консольные чтобы тегами рулить? Я использую вот эти две: http://id3v2.sourceforge.net http://id3-py.sourceforge.net watashiwa_daredeska ★★★★ (25.07.04 22:33:55 MSD) Ссылка
Сделал сегодня для mpg123. Вот: --- common.c.orig Mon Jul 26 15:35:14 2004 +++ common.c Mon Jul 26 15:43:45 2004 @@ -15,6 +15,8 @@ #endif #endif +#include <iconv.h> + #include "mpg123.h" #include "genre.h" #include "common.h" @@ -483,15 +485,50 @@ char year[5]={0,}; char comment[31]={0,}; char genre[31]={0,}; + size_t s_left, d_left; + iconv_t tagconv; if(param.quiet) return; - strncpy(title,tag->title,30); - strncpy(artist,tag->artist,30); - strncpy(album,tag->album,30); - strncpy(year,tag->year,4); - strncpy(comment,tag->comment,30); + tagconv = iconv_open("KOI8-R", "CP1251"); + if (tagconv != (iconv_t) -1) { + char *src, *dst; + + src = (char *) tag->title; + dst = (char *) title; + s_left = d_left = (size_t) 30; + (void)iconv(tagconv, &src, &s_left, &dst, &d_left); + + src = (char *) tag->artist; + dst = (char *) artist; + s_left = d_left = (size_t) 30; + (void)iconv(tagconv, &src, &s_left, &dst, &d_left); + + src = (char *) tag->album; + dst = (char *) album; + s_left = d_left = (size_t) 30; + (void)iconv(tagconv, &src, &s_left, &dst, &d_left); + + src = (char *) tag->year; + dst = (char *) year; + s_left = d_left = (size_t) 4; + (void)iconv(tagconv, &src, &s_left, &dst, &d_left); + + src = (char *) tag->comment; + dst = (char *) comment; + s_left = d_left = (size_t) 30; + (void)iconv(tagconv, &src, &s_left, &dst, &d_left); + + (void)iconv_close(tagconv); + } + else { + strncpy(title,tag->title,30); + strncpy(artist,tag->artist,30); + strncpy(album,tag->album,30); + strncpy(year,tag->year,4); + strncpy(comment,tag->comment,30); + } if ( tag->genre <= sizeof(genre_table)/sizeof(*genre_table) ) { strncpy(genre, genre_table[tag->genre], 30); Ну в общем вот. Кому надо -- берите. Там еще Makefile поправить надо примерно так: --- Makefile.old Mon Jul 26 15:11:58 2004 +++ Makefile Mon Jul 26 15:11:48 2004 @@ -520,14 +520,15 @@ .endif openbsd: - ${MAKE} CC="${CC}" LDFLAGS= \ + ${MAKE} CC="${CC}" LDFLAGS='-L${LOCALBASE}/lib -liconv' \ OBJECTS='${ARCHOBJS} audio_openbsd.o term.o' \ CFLAGS='-O3 -funroll-all-loops -ffast-math ${COPTS} \ - ${ARCHOPTS} -DREAL_IS_FLOAT -DTERM_CONTROL \ + ${ARCHOPTS} -I${LOCALBASE}/include \ + -DREAL_IS_FLOAT -DTERM_CONTROL \ -DINET6 -DUSE_MMAP -DOPENBSD' mpg123-make openbsd-esd: - ${MAKE} CC="${CC}" LDFLAGS='-L${LOCALBASE}/lib' \ + ${MAKE} CC="${CC}" LDFLAGS='-L${LOCALBASE}/lib -liconv' \ AUDIO_LIB='-lesd -laudiofile' \ OBJECTS='${ARCHOBJS} audio_esd.o term.o' \ CFLAGS='-O3 -funroll-all-loops -ffast-math ${COPTS} \ Только для Вашей системы.... Если кому-то интесено (т.е. хочет помочь) можно оформить и для libid3tag а этот усовершенствовать, добавив к mpg123 опцию ком. строки, чтоб был выбор того откуда (в основном это CP1251) куда (KOI8-R, UTF-8, ISO8859-5) конвертить... signal11 ★ (27.07.04 00:31:44 MSD) автор топика Ссылка