tagconv 는 음악파일의 인코딩 변환 툴입니다.
음악파일의 인코딩을 왜 변환 하냐구요? 우리가 듣는 대부분의 음악파일(주로 mp3 파일)들은 압도적으로 사용자가 많은 윈도우에서 만들어 집니다. 그래서 음악파일속에 들어 있는 테그의 인코딩은 죄다 cp949 입니다.
엄밀히 말하자면, CDDB 의 문제이지요. 인코딩 구분없이 보내는 대로 받아서 저장하고 있으니..그걸 받아다 쓰는 인코더 들고 그냥 개념없이 CDDB 의 인코딩을 무조건 iso-8859-1로 인식해서 집어넣고.. 근데 더 웃기는건 윈도우의 플레이어들은 그렇게 개념없이 들어가 있는 테그를 읽는다는 겁니다. 분명 표준에는 iso-8859-1 로 읽으라고 되어 있는걸 지들 맘대로 cp949 로 읽는 거죠.
상황이 그러하니, 리눅스 사용자들은 환장 합니다. 파일을 리눅스로 가져다가.. 혹은 복사해다가.. 혹은 어둠의 경로를 통해 구해다가.. 리눅스용 플레이어에서 돌리면 와장창 깨지는 테그들..
음악만 나오면 그만 아니냐는 속편하신 분들도 계시겠지만 대부분은 그러하지 못하지요. 플레이어 가득 깨져 나오는 스트링은 가슴을 아프게 합니다. 그래서 만들었습니다.
사용법은 정말 간단합니다. 음악파일이 현재 무슨 인코딩으로 되어 있는지만 인자로 넣어주면 됩니다.
# tagconv -tcp949 *.mp3
저렇게만 해주면 되죠. 아래 그림 처럼 말이죠
그럼 결과 화면을 볼까요?
아주 변환이 잘 되어 있습니다. 이것만으로도 충분히 훌륭한데 부가 기능까지 있습니다.!!
터미널 상에서 음악파일의 테그 관리를 아주 쉽게 할 수 있도록 도와주기 위함이랍니다. 그럼 살짝 예를 하나 보도록 하죠.
여러개의 명령이 한번에 적용되는것도 됩니다(당연한가...). *.mp3 말고 개별적으로 파일 이름을 지정해서 명령 내리는것도 당연히 되겠죠. 위 그림 처럼 멸령을 주면 가수 이름과 앨범 이름이 '패닉', '4집' 으로 바뀌 겠네요. 한번 볼까요?
네~~ 잘 되죠? 이런 프로그램 이랍니다. 이제 테그 때문에 스트레스 받지 마세요
아직 안정화 된 프로그램은 아닙니다. 모든 mp3 파일에 대해서도 동작을 보증하지 않습니다. 버그가 발생한다면, 홈페이지 에 버그 리포팅 해주세요.
tagconv 를 만드는데 사용한 라이브러리 입니다. python 으로 직접 제작했고요, 아직 버그가 엄청나게 많습니다. 시간 나는대로 계속 고치도록 하죠.
테그 관리 보다는 테그의 수정에 중점을 둔 오로지 실용적인 가치만 생각하고 만든 라이브러리 입니다.
라이브러리의 사용법은 극한으로 간단합니다.
import pyTag
file = pyTag.pyTag("yourMusicFile.mp3")
tag = file.Tag()
tag.setTag("TIT2","노래제목")
tag.setTag("TCON","장르")
tag.setTag("TPE1","가수")
tag.submitTag()
file.closeFile()
저렇게 하면 수정이 가능하다. 멋지지 않아요?!!
뭐 뽑아 볼 수도 있습니다.
import pyTag
file = pyTag.pyTag("yourMusicFile.mp3")
tag = file.Tag()
idlist = tag.getAllTagId() # 이렇게 하면 음악파일 안에 설정되어 있는 tag id 목록이 나온다.
title = tag.getTag("TIT2") # 이렇게 하면 TIT2 에 해당하는 설정값을 볼 수 있다.
tag.addTag("TLEN","32") # 이렇게 하면 TLEN 을 추가합니다.
tag.deleteTag("TLEN") # 이렇게 하면 TLEN 을 제거 합니다.
file.closeFile()