빅터의 해결책은 나에게 길을 보여 줬다. 그러나 방금 변환 한 파일에 태그를 복사하는 경우 실패 할 수 있습니다 (예 : flac에서 mp3로). 즉, 태그를 복사하려는 파일에 아직 태그가없는 경우 실패합니다.
그래서 대상 파일을 프라임 처리해야 할 수도 있습니다.
from mutagen import File
from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3
from mutagen.id3 import ID3, ID3NoHeaderError
def convert_tags(f1,f2):
# f1: full path to file copying tags from
# f2: full path to file copying tags to
# http://stackoverflow.com/questions/8873364/linux-script-to-transfer-id3-tags-from-flac-to-mp3
# http://stackoverflow.com/a/18369606/2455413
try:
meta = EasyID3(f2)
except ID3NoHeaderError:
meta = File(f2, easy=True)
meta.add_tags()
meta.save()
from_f = FLAC(f1)
to_f = EasyID3(f2)
for tag in from_f:
if tag in EasyID3.valid_keys.keys(): to_f[tag] = from_f[tag]
to_f.save()
return
이것은 지금까지 가장 좋은 해결책이었습니다. --set-user-text-frame을 사용하여 (FLAC에서 추출한) 재생 이득 값을 설정할 수도 있습니다. 도전 과제는 "year"태그입니다.이 태그는 설정할 수 있으며 eyeD3으로 다시 읽히지 만 mp3Tag (Windows 용)에서는 읽을 수 없습니다. – TheRoadrunner
ASCII가 아닌 문자는 경고합니다 : " 'ascii'코덱은 XX 위치의 바이트 0xc3을 디코딩 할 수 없습니다 : 서수는 범위 (128)가 아니지만 ASCII 이외의 문자는 새 태그에 완벽하게 삽입됩니다. – TheRoadrunner
문제가 해결 된 시점 : eyeD3은 기본적으로 ID3v2.4 태그를 사용합니다. 이 버전에서는 1 년 동안의 메타 데이터가 더 복잡합니다. eyeD3 -Y는 TDRL (릴리스 날짜) 태그에 기록하는 반면 mp3 태그 (및 기타 태그)는 TDRC (녹음 시간) 태그에서 연도를 찾습니다. 내 태그 스크립트가 포함되도록 변경 --set-text-frame = TDRC : "$ DATE"는 내 문제를 해결합니다. – TheRoadrunner