mp3 tag, id3로 Plexmediaserver의 정보 업데이트 하기
나는 plexmediaserver로 mp3를 저장하여 듣고 있다. plex에서 라이브러리로 mp3가 있는 경로를 알려주면, agent가 파일을 검색하여 그에 알맞는 가수, 앨범, 노래명을 정리한다. 내가 가진 mp3는 대부분 인터넷에서 받은 파일이라, tag 정보가 완전 제각각대로 되어 있다. 이 태그를 정리하지 않고, 곡 추가를 하면, plex가 같은 가수인데 철자가 달라 다른 사람으로 인식한다. 따라서 데이터베이스가 완전 개판이 된다. 전에는 태그를 수정을 했었는데, plexrk 이 수정분을 인식하지 못했다. 왜 그런지 궁금해 하다가 포기 했었다. 오늘 다시 좀 해보니 알 것 같다.
plex agent는 처음 곡을 추가할 때만 mp3의 태그 정보를 자신의 DB로 읽어 들이는 듯 하다. plex가 자기가 가진 데이터베이스로 복사를 하면, 사용자가 tag를 수정했다고, plex가 자신의 DB로 업데이트를 안한다. 사용자가 한번 정보를 잘못 입력하면, 이를 마우스+클릭으로 수정해야 하는데, 시간이 많이 걸린다. 라이브러리 전체를 지운 다음에, 다시 추가를 하면 id3에서 plex DB로 다시 옮긴다.
정리를 위해서, mp3에 있는 쓰레기 태그를 다 지워버리고, 내가 관리할 정보만 남겨 놓았다.
stack overflow에 이와 관련된 스크립이 공개되어 있다.
find ./ -type f -iname "*.mp3" -exec /usr/bin/mid3v2 --delete-frames=AENC,ASPI,COMM,COMR,ENCR,EQU2,ETCO,GEOB,GRID,LINK,MCDI,MLLT,OWNE,PRIV,PCNT,POPM,POSS,RBUF,RVA2,RVRB,SEEK,SIGN,SYLT,SYTC,TBPM,TCOM,TCOP,TDEN,TDLY,TDOR,TDRL,TDTG,TENC,TEXT,TFLT,TIPL,TIT3,TKEY,TLAN,TLEN,TMCL,TMED,TMOO,TOAL,TOFN,TOLY,TOPE,TOWN,TPE3,TPE4,TPOS,TPRO,TPUB,TRSN,TRSO,TSOA,TSOP,TSOT,TSRC,TSSE,TSST,TXXX,UFID,USER,USLT,WCOM,WCOP,WOAF,WOAR,WOAS,WORS,WPAY,WPUB,WXXX '{}' +
tag를 수정하는 유틸리티는 여러개가 있으나, 셸에서 사용이 가능한 mid3v2를 선택했다.
MP3 tag의 주요정보 내용은 아래와 같다.
APIC A picture for the track, usually the albumcover.
TIT1 Content group description (I guess could be deleted too)
TIT2 The song title
TPE1 The album artist
TPE2 The artists (includes featurings)
TRCK Tracknumber
TALB Albumtitle
TCON Genre
TDRC Year of release
이 정보에서 곡 이름, 앨범의 이름, 가수가 누구인지 등 몇 개의 정보만 관리한다. 나머지 정보는 관리하기 힘들기 때문에 지워야 된다. 여기에 엄한 정보가 들어가면, plex가 파일을 잘못 인식한다.
가수는 동일하니, 아래의 명령어로 엄한 정보가 들어가 있는 파일을 찾았다. TPE1과 TPE2 두 종류가 있는데, plex는 이를 제대로 인식하지 못한다. TPE2는 지워주는게 좋다.
now0930@:10cm$ find ./ -type f -exec mid3v2 {} \; | grep -e 'TPE1\|TIT2' now0930@:10cm$ find ./ -type f -exec mid3v2 {} \; | grep TALB
plex는 앨범, 가수명, 트랙 이 세가지를 기준으로 보여준다. 트랙까지는 관리하기 힘들어 보인다. 일단 앨범 정보부터 아래와 같이 맞춘다.
now0930@:10cm$ mid3v2 --TALB="10cm" *.mp3
다음으로 가수명도 같은 방식으로 맞춘다. 수정 후 plex 라이브러리에 넣으면 제대로 정보가 올라간다.
한가지 아쉬운 점이라면, 내가 TIT2에 곡 이름을 넣어야 됬는데, 파일이름이 대부분 곡 이름이다. basename으로 파일 이름을 뽑고, 이를 TIT2의 파라미터로 전달해야 하는데, 별도 스크립트를 만들어야 하는 작업처럼 보인다. 몇번 입력하다보니, 힘들어서 못하겠다.