Plex로 음악을 들으면 좋은데, tag를 관리하기 어렵다. 심지어 플레이 리스트도 맘대로 뽑아낼 수 없다. plex로 관리하는 생각을 포기하고 mp3에 있는 id3를 직접 관리하기로 했다. 아래 코드 중 mp3로 변환하는 부분을 byte freaks 에서 사용했다.
#!/bin/bash
#for FILE in *.webm; do
# echo -e "Processing video '\e[32m$FILE\e[0m'";
# ffmpeg -i "${FILE}" -vn -ab 320k -ar 44100 -y "${FILE%.webm}.mp3";
#one;
#file이름을 수정.
total=$(ls *.mp3 | wc -l)
#echo $total
trackNo=0
for FILE in *.mp3;
do
trackNo=$(expr $trackNo + 1)
#echo $trackNo
SONG=$(basename "$FILE" | cut -d"-" -f2|sed 's/^_//'| sed 's/_Official_Video//'|sed 's/_//g')
ALBUM="Evolution"
ARTIST="AlexisFfrench"
mYearDate="2018-08-31"
#echo $SONG
#echo $ALBUM
#echo $ARTIST
mid3v2 -t "$SONG" -A "$ALBUM" -a "$ARTIST" -y "$mYearDate" -T "$trackNo/$total" "$FILE"
done
이미지는 같은 폴더에 covor.jpg나 다른 이름으로 넣어주면 잘 찾는다. 앨범 이름이 같더라도 track에 번호가 없으면 같은 앨범으로 인식하지 않는다. 모두 수정 후 메타데이터 새로 고침하면 다시 읽는다. 자가 격리 기간에 앨범이나 정리해야지.
하루 종일 해 본 결과 Plex가 너무 까탈스럽다고 결론 냈다. 게다가 각 회사마다 id3 태그를 지 멋대로 붙여 같은 앨범으로 인식시키는데 애 먹었다. 같은 앨범이더라도 장르가 다르면 다른 앨범으로 인식한다. 트랙도 겹치면 다른 앨범으로 본다. plex가 스캔하면 id3 정보를 자기 데이터 베이스로 저장하는데, id3 태그를 수정하더라도 지가 가진 정보를 변경하지 않는다. 권한을 6->0->6으로 주어 다시 인식시켰다. 결론은 각 폴더에 앨범을 설명하는 파일을 넣어주고, 스크립트가 파일을 읽어 일괄 업데이트 하는 형식이 가장 낫다고 냈다. 파일 이름에 작곡가, 곡 이름을 정리하고 이를 basename으로 정리했다. 나머지는 찾아서 details.txt에 넣었다. 앨범 커버는 동일 디렉토리에 cover.jpg로 넣으면 된다.
다음 details.txt 파일은 앨범 폴더에 있다. 구분자는 스페이스가 아니라 탭 이다.
SONGEXP $(basename $FILE | cut -d'-' -f2 | sed 's/OfficialVideo//' | sed 's/\.mp3//') ARTISTEXP $(basename $FILE | cut -d'-' -f1) ALBUMEXP "Evolution" mYearDateEXP "2018-08-31" GENREEXP "Classical"
이 파일을 참조하여 업데이트 하는 스크립트는 다음과 같다. 나중에 활용하려 COMMENT는 남겼다. youtube-dl를 –no-playlist로 하면 해당 곡만 다운로드 할 수 있다.
#!/bin/bash
#for FILE in *.webm; do
# echo -e "Processing video '\e[32m$FILE\e[0m'";
# ffmpeg -i "${FILE}" -vn -ab 320k -ar 44100 -y "${FILE%.webm}.mp3";
#done;
#FILE="AlexisFfrench-AMomentInTime-woETd5QW52E.mp3"
#Details.txt 파일에 형식 정의 ^I로 구분됨.
#SONGEXP: 곡 형식
total=$(ls *.mp3 | wc -l)
trackNo=0
for FILE in *.mp3;
do
trackNo=$(expr $trackNo + 1)
SONGEXP=$(cat ./details.txt | grep SONGEXP | cut -d' ' -f2)
#변수에서 읽은 expression을 실행하여 다시 변수에 할당.
eval song="$SONGEXP"
ARTISTEXP=$(cat ./details.txt | grep ARTISTEXP| cut -d' ' -f2)
#echo $ARTISTEXP
eval artist="$ARTISTEXP"
ALBUMEXP=$(cat ./details.txt | grep ALBUMEXP| cut -d' ' -f2)
eval album="$ALBUMEXP"
mYearDateEXP=$(cat ./details.txt | grep mYearDateEXP| cut -d' ' -f2)
eval myeardate="$mYearDateEXP"
GENREEXP=$(cat ./details.txt | grep GENREEXP| cut -d' ' -f2)
eval genre="$GENREEXP"
#echo $song
#echo $artist
#echo $album
#echo $myeardate
#echo $genre
mid3v2 -t "$song" -A "$album" -a "$artist" -y "$myeardate" -T "$trackNo/$total" --TCON $genre --TPE2 "$artist" "$FILE"
done
<< COMMENT
#file이름을 수정.
total=$(ls *.mp3 | wc -l)
echo $total
#echo $total
trackNo=0
for FILE in *.mp3;
do
trackNo=$(expr $trackNo + 1)
#echo $trackNo
#SONG=$(basename "$FILE" | cut -d"-" -f2|sed 's/^_//'| sed 's/_Official_Video//'|sed 's/_//g' | sed 's/\.flac//'|sed 's/^[0-9]\{1,2\}//'| sed 's/\.mp3//')
SONG=$(basename "$FILE" | cut -d'-' -f2| sed 's/\.mp3//'| sed 's/^ //g'|sed 's/^[0-9]\{1,2\} //g')
#SONG=$(basename "$FILE" | cut -d'-' -f1-2| sed 's/\.flac//'| sed 's/^ //g'|sed 's/^[0-9]\{1,2\} //')
#ARTIST=$(basename "$FILE" | cut -d'-' -f1 | cut -d'.' -f2)
#ARTIST="Leszek Mozdzer"
#ARTIST="Idil Biret"
ARTIST="다양한가수들"
#ARTIST="Ivo Pogorelich"
#ALBUM="Chopin Piano Favourites"
#ALBUM="The Best of Chopin"
ALBUM="가요추천1500"
#ALBUM="Chopin Recital"
#mYearDate="1985-02-15"
mYearDate="2020-04-11"
#echo $trackNo
#echo "$SONG"
#echo "$ALBUM"
#echo "$ARTIST"
#echo "$total"
#mid3v2 -t "$SONG" -A "$ALBUM" -a "$ARTIST" -y "$mYearDate" -T "$trackNo/$total" --TCON Classical --TPE2 "$ARTIST" "$FILE"
mid3v2 -A "$ALBUM" -a "$ARTIST" -T "$trackNo/$total" --TCON "Other" --TPE1 "$ARTIST" --TIT2 "$SONG" "$FILE"
#mid3v2 -T "$trackNo/$total" "$FILE"
done
COMMENT
유투브에서 음원을 다운로드 하여 개인적으로 들으면 불법이 아니라고 한다.(–;) 구매하는 음원도 내가 정리해야 하는데 굳이 돈 주고 사야할지 모르겠다. 스트리밍으로 듣다가 음원을 구해 듣는 방식이 더 싸겠다.