이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 mp3info2p 명령입니다.
프로그램:
이름
mp3info2 - MP3 태그 가져오기/설정; MP3::Tag를 사용하여 기본값을 가져옵니다.
개요
# 정보를 태그로 출력하고 자동으로 추론한 정보
mp3info2 *.mp3
# 또한 연도 필드를 1981로 설정합니다.
mp3info2 -y 1981 *.mp3
# 현재 디렉토리에서 재귀적으로 정보 출력 없이 동일
mp3info2 -R -p "" -y 1981 .
# 어떤 필드도 추론하지 않고 태그에서만 (정규화된) 정보를 인쇄합니다.
mp3info2 -C autoinfo=ID3v2,ID3v1 *.mp3
# 위와 같지만 정규화/자동 입력이 없으면 태그의 원시 정보가
mp3info2 -N *.mp3
# 위와 동일하지만 ID2v1 태그 읽기만 가능
mp3info2 -NC autoinfo=ID3v1 *.mp3
# CDDB_File에서 아티스트 가져오기, 다른 정보 자동 추론, 태그에 쓰기
mp3info2 -C 아티스트=CDDB_File -u *.mp3
# 제목의 경우 .inf 파일의 정보를 선호합니다. autodeduce 휴식, 업데이트
mp3info2 -C 제목=Inf,ID3v2,ID3v1,파일명 -u *.mp3
# 동일, CDDB 파일에서 아티스트 가져오기
mp3info2 -C 제목=Inf,ID3v2,ID3v1,파일명 -C 아티스트=CDDB_File -u *.mp3
# .wav를 .mp3로 변환하는 스크립트 작성, 태그 자동 추론
mp3info2 -p "절름발이 -h --vbr-new --tt '%t' --tn %n --ta '%a' --tc '%c' --tl '%l' --ty '%y' '%f'\n" *.wav >xxx.sh
기술
프로그램은 다음에 대한 태그 정보(MP3::Tag 모듈을 통해 얻음)를 요약하는 메시지를 인쇄합니다.
지정된 파일.
또한 ID3 태그의 정보를 업데이트할 수도 있습니다. 이것은 세 가지 다른 경우에 발생합니다.
· 명령줄 옵션 "talygcn"에 제공된 정보가
해당 ID3 태그의 내용(또는 해당 ID3 태그가 없음).
· 옵션 "-d" 또는 "-F"가 제공된 경우.
· "MP3::Tag"가 MP3 태그가 아닌 다른 수단에서 정보를 얻고 "-u"가
ID3 태그 업데이트.
(이러한 모든 방법은 "-D" 옵션으로 비활성화됩니다.) ID3v2 태그는 필요한 경우 또는 "-2"인 경우 작성됩니다.
옵션이 주어집니다. (추론 가능한 필드의 자동 채우기(방법을 통해)
id3v2_frames_autofill()) "-d" 또는 "-N" 옵션이 지정되지 않은 경우 수행됩니다.)
"-u" 옵션은 가져온 정보를 MP3 ID3 태그에 씁니다("u" 업데이트). 이것
태그 요소를 명시적으로 설정하는 명령줄 옵션이 있는 경우 옵션이 가정됩니다.
("-a", "-t" 등 및 "-F", "-d"). (이 옵션의 효과는
"-D" 옵션.) "-2" 옵션도 지정하면 정보가 없어도 ID3v2 태그를 강제로 씁니다.
ID3v1 태그에 적합(또한 이 옵션을 사용하면 "개인 이름"의 자동 업데이트가 활성화됩니다.
필드 및 "translate_person" 값에 따른 해당 제목,
"person_frames" 등 구성 설정; "필드 정규화" 참조). 이 옵션
태그 변경이 감지되지 않으면 무시됩니다. 그러나 반복하여 업데이트를 강제할 수 있습니다.
이 옵션(태그의 "형식"이 변경될 것으로 예상되는 경우 유용합니다.
"콘텐츠").
옵션 "-p"는 형식으로 다음 인수를 사용하여 메시지를 인쇄합니다(기본적으로 "\\", "\t",
"\n"은 백슬래시, 탭 및 줄 바꿈으로 대체됩니다. "-E" 옵션의 값에 의해 관리됨);
형식에 대한 자세한 내용은 MP3::Tag의 "보간"을 참조하십시오. sprintf ()-탈출과 같은 것. 아니오인 경우
옵션 "-p"가 주어지면 기본 형식의 메시지가 내보내집니다. 옵션 "-e"의 값
출력에 사용되는 인코딩입니다. 값이 숫자인 경우 시스템별 인코딩은
추측됨(그리고 비트 0x1이 설정된 경우 출력에 사용됨); 비트 0x2가 설정되면 명령줄
옵션은 추측된 인코딩에 있다고 가정합니다. 비트 0x4가 설정되어 있으면 명령줄
인수는 추측된 인코딩으로 간주됩니다. 바이너리를 수행하려면 "binary" 값을 사용하십시오.
출력.
옵션 "-D"(드라이 런)를 사용하면 다른 옵션에 관계없이 업데이트가 수행되지 않습니다.
이 옵션을 사용하면 필요하지 않은 경우 태그 구문 분석이 수행되지 않습니다.
옵션 사용
talygcn
획득한 정보(타이틀 아티스트 앨범 연도 장르 코멘트 트랙 번호)를 덮어쓰기
"MP3::Tag" 추론을 통해(이러한 인수 중 하나라도 다른 경우 "-u" 스위치가 암시됨)
그렇지 않으면 발견되는 것에서; 자동 업데이트를 비활성화하려면 "-D" 스위치를 사용하십시오). 기본적으로,
이 옵션의 값은 "%" 보간되지 않습니다. "-E" 옵션으로 변경할 수 있습니다.
"-d" 옵션에는 삭제할 ID3v2 프레임의 쉼표로 구분된 목록이 포함되어야 합니다. ㅏ
프레임 사양은 "%{...}" 프레임 보간에 주어질 수 있는 것과 동일합니다.
명령, 예: "TIT3", "COMM03", "COMM(fra)[짧은 제목]"; 수정과의 차이점-
액세스는 공통 (그리고 먼저 of) 일치하는 프레임이 삭제됩니다. (옵션 -d는
반복했다.)
예를 들어 "-d APIC"는 모든 사진 프레임을 제거합니다. 또한 목록에 포함된 경우
"ID3v1" 또는 "ID3v2", 전체 태그가 삭제됩니다.
마찬가지로 "-F" 옵션을 사용하면 임의의 "ID3v2" 프레임을 설정할 수 있습니다.
한 프레임, "FRAME_spec=VALUE" 지시문을 사용하십시오.
-F TIT2=The_new_Title
다시 말하지만, 수정 시, 공통 일치하는 프레임이 먼저 삭제되므로 주의하십시오.
-F COMM=내댓글
옵션 "-F"는 하나 이상의 프레임을 설정하기 위해 반복될 수 있습니다. 구성 변수인 경우
"empty-F-deletes"는 TRUE(기본값)이며, 빈 인수는 프레임을 삭제합니다.
"FRAME_spec=VALUE"를 "FRAME_spec < FILE"로 대체할 수 있습니다. 이 경우 설정할 값
이름이 지정된 파일에서 읽습니다. FILE; 프레임이 텍스트 전용인 경우(의미: 기껏해야
"[인코딩된]텍스트 URL 언어 설명" 필드가 있음) 파일을 텍스트로 읽습니다.
모드(및 시작/후행 공백이 제거된 상태), 그렇지 않으면 이진수로 읽힙니다.
방법. ("<" 기호에는 공백이 필요합니다.) "<"를 "?<"로 바꾸면
프레임이 아직 존재하지 않고 파일이 존재하는 경우에만 값이 설정됩니다. ">"로 대체된 경우,
값(존재하는 경우)이 기록됩니다. FILE (중간 디렉토리 생성은
구성 옵션 "frames_write_creates_dirs"에 의해 제어되며 기본값은 FALSE입니다).
또한 "FRAME_spec"은 "ID3v1", "ID3v2" 또는 "TAGS" 중 하나일 수 있습니다. 이 경우 전체
태그를 쓰거나 읽습니다. 예를 들어 "TAGS < FILE"의 경우 "타이틀 아티스트 앨범 연도 장르
comment track" 정보는 다음에서 계산됩니다. FILE, ">"로 생성된 원시 태그일 수 있습니다.
또는 유효한 MP3 파일; Image::ExifTool이 있으면 임의의 위치에서 데이터를 읽을 수 있습니다.
멀티미디어 파일. (마찬가지로 "ID3v1 < FILE"의 경우 "ID3v1"에서 동일한 정보가 추출됩니다.
태그만 해당) 이 후 "ID3v2" 또는 "TAGS"인 경우 "ID3v2" 프레임은
"ID3v2" 태그를 하나씩. ("?<"에 대한 적절한 수정이 있습니다.)
기본적으로 "-F"의 "VALUE"는 "%"-보간됩니다. 이것은 옵션 "-E"로 변경할 수 있습니다.
사용자 편의를 위해 "작곡가, text_by, 오케스트라, 지휘자,
disk_n"은 "TCOM, TEXT, TPE2, TPE3, TPOS" 대신 사용할 수 있습니다.
"-P RECIPE" 옵션은 옵션으로 수행할 수 있는 작업에 대한 매우 강력한 일반화입니다.
"-F", "-d" 및 "-t -a -l -y -g -c -n". 반복될 수 있습니다. 값은 다음을 포함해야 합니다.
레시피를 분석합니다. 이들은 "MP3::Tag"의 구성 항목 "parse_data"가 됩니다. 결국
이 정보는 MP3::Tag::ParseData 모듈에 의해 처리됩니다(후자가
휴리스틱 체인; 옵션 "-C" 참조). "RECIPE"는 "$flags, $string,
영숫자가 아닌 첫 번째 문자의 @patterns"; 일치하는 첫 번째 @patterns
$string이 실행될 것입니다(부작용을 위해). (예: "예: 구문 분석
규칙".)
옵션 "-G"가 지정된 경우 명령줄의 파일 이름은 glob으로 간주됩니다.
패턴. 이것은 최대 명령줄 길이가 너무 짧은 경우에 유용할 수 있습니다. 와 더불어
옵션 "-R" 인수는 오디오에 대해 재귀적으로 검색되는 디렉토리일 수 있습니다.
(기본 * .mp3) 처리할 파일 "-r" 옵션을 사용하여 정규식을 재설정합니다.
(기본값은 "(?i:\.mp3$)")입니다.
옵션 "-E"는 이스케이프 문자의 확장을 제어합니다. 의 문자를 포함해야 합니다.
"\\, \n, \t"가 보간된 명령줄 옵션; 하나는 문자를 추가 할 수 있습니다
구분 기호 "/i:" 뒤에 "%" 보간이 필요한 "talygcn F" 옵션(예:
"-F", 값만 보간됨). 기본값은 "p/i:Fp"입니다. "-p"만
"\"-보간되며 "-F" 및 "-p"만 "%"-보간 대상입니다. 모두 하나라면
원한다 더하다 기본값으로 "-E"(추가된 옵션 포함) 값 앞에
"+". (옵션 "-P" 값의 일부가 보간되지만 이는
"-E"가 아닌 플래그에 의해 관리됩니다. 하다 않습니다. "-E"의 "%" 보간 부분에 "P"를 입력합니다.)
"-@" 옵션을 지정하면 옵션의 모든 문자 "@"가 "%"로 대체됩니다. 이것
셸이 "%"를 특별히 취급하는 경우(예: DOSISH 셸) 편리할 수 있습니다.
옵션 "-I"가 주어지면 추측하지 않습니다. 예술가 필드는 typeout에서 수행됩니다.
"-C CONFIG_OPT=VALUE1,VALUE2..." 옵션은 "MP3::Tag" 구성 데이터를 동일하게 설정합니다.
"MP3::Tag-"로구성()> 할 것입니다(값이 배열이라는 점을 상기하십시오. 별도의 요소
둘 이상인 경우 쉼표로). 옵션을 반복하여 둘 이상의 값을 설정할 수 있습니다. 메모
"ParseData"는 "-P" 구문 분석 레시피를 처리하는 데 사용되므로 보관하는 것이 좋습니다.
"autoinfo" 구성(및 관련 필드 "author" 등)에서 "-P"가 있는 경우.
옵션 "-x"가 주어지면 오디오 파일에 대한 기술 정보가 인쇄됩니다.
(MP3 레벨, 지속 시간, 프레임 수, 패딩, 저작권 및 ID3v2 프레임 목록
"%{...}" 이스케이프에 적합한 형식의 이름). "-x"가 반복되면 프레임의 내용이
또한 인쇄됩니다(두 번 이상 반복되는 경우 인쇄할 수 없는 문자가 출력될 수 있음).
옵션 "-N"이 제공되면 모든 "스마트"가 비활성화됩니다. 필드의 정규화가 없습니다.
발생하고 (기본적으로) 비 ID3에서 필드 값을 추론하려는 시도가 없습니다.
정보가 이루어집니다. 이 옵션은 (현재) "-C
autoinfo=ParseData,ID3v2,ID3v1"을 첫 번째 지시문으로 사용하여
정규화::텍스트::Music_Fields.pm @INC 경로에 있고 호출하지 않음 자동 채우기() 방법.
표준화 of 분야
(정규화 모듈 로딩 및 모든 후속 작업은
옵션 "-N", 또는 환경 변수 "MP3TAG_NORMALIZE_FIELDS"를 FALSE로 설정합니다.
금지되지 않은 경우 모듈은 다음과 같은 경우 로드를 시도합니다. ~/.music_fields is
또는 "MP3TAG_NORMALIZE_FIELDS"가 설정되고 TRUE입니다.)
"Normalize::Text::Music_Fields" 모듈의 로딩이 성공하면 다음과 같다.
응용할 수 있는:
"MP3TAG_NORMALIZE_FIELDS" 값이 정의되고 1이 아닌 경우 이 값은
디렉터리를 PATH로 지정하고 "Normalize::Text::Music_Fields"의 로드 경로는 다음과 같이 설정됩니다.
디렉토리 목록. 그런 다음 MP3::Tag가 지시됩니다(해당 구성을 통해).
설정) 이 모듈에서 정의한 "normalize_artist"(등) 방법을 사용합니다. 이러한 방법
특정 태그 데이터를 정규화할 수 있습니다. 현재 버전은 "정규화" 방법을 정의합니다.
개인 이름 및 제목(작곡가 기준). 이 정규화가 구동됩니다.
사용자 편집 가능한 구성 테이블을 통해.
MP3 태그 데이터의 자동 정규화 외에도 "가짜 MP3 파일"을 사용하여
이 모듈의 일부 기능에 수동으로 액세스합니다. 이를 위해 빈 파일 이름과 "-D"를 사용하십시오.
옵션. 예를 들어,
mp3info2 -D -a 베토벤 -p "%a\n" ""
mp3info2 -D -a 베토벤 -p "%{shP[%a]}\n" ""
mp3info2 -D -a 베토벤 -t "소나타 #28" -p "%t\n" ""
mp3info2 -D -a 베토벤 -t "알레그레토, 베스" -@p "@t\n" ""
mp3info2 -D -a 베토벤 -t "op93" -@p "@t\n" ""
"베토벤"에 대한 정규화된 사람 이름을 인쇄합니다.
사람 이름, 작곡가 "베토벤"의 "소나타 28번"에 대한 정규화된 제목입니다. 예를 들어,
배송된 정규화 테이블과 함께 인쇄됩니다.
루트비히 판 베토벤(1770-1827)
L. 반 베토벤
피아노 소나타 28번 가장조; Op. 101 (1816)
B플랫장조 피아노 트리오를 위한 알레그레토; WoO 39 (1812)
교향곡 8번 F장조; Op. 93 (comp. 1812, fp Vienna, 1814-02-27, cond. Beethoven; pubd. 1816)
The 주문 of 조작
현재 작업은 다음 순서로 수행됩니다.
· "-d" 옵션을 통해 ID3v1 또는 ID3v2 전체 삭제;
· "-P" 옵션의 레시피가 설정됩니다(보간에 의해 트리거됨).
· "-a/-t/-l/-y/-g/-c/-n" 옵션을 통한 설정;
· "-F" 옵션을 통해 설정 완료;
· "-d" 옵션을 통한 개별 프레임 삭제;
· ID3v2(id) 프레임의 자동 완성;
· "-p" 및 "-x" 옵션을 기반으로 정보를 내보냅니다.
· "-P"의 트리거 레시피(보간에 의해 트리거되지 않은 경우);
· 필요한 경우 태그를 업데이트합니다.
용법 전략: 단계적 확대 of 복잡성
이 스크립트의 목적은 ID3 태그를 간단하게 처리하는 것입니다. as 가능한.
척도의 한쪽 끝에서 다음을 사용하여 태그를 사용하여 임의로 복잡한 조작을 수행할 수 있습니다.
"MP3::Tag" Perl 모듈.
반면에 태그를 사용하여 가장 간단한 조작을 처리하는 것이 훨씬 더 편리합니다.
이 스크립트의 옵션 "-t -a -l -y -g -c -n" 및 "-p -F -d"를 사용합니다. 조금 더
복잡한 작업의 경우 보다 정교한 방법을 사용해야 할 수도 있습니다. 해석하다 규칙제공
"-P" 옵션으로 이 스크립트에; 규칙은 크게 의존합니다 보간법참조
MP3::Tag에서 "interpolate", MP3::Tag에서 "interpolate_with_flags".
"가장 간단한 조작"에서 "더 정교한 조작"으로 업그레이드를 단순화하기 위해 여기에서
"구문 분석 규칙" 제공 동의어 가장 간단한 옵션까지. 따라서 "-t -a -l -y로 시작하면
-g -c -n" 및 "-p -F -d" 옵션은 "거의 작동"합니다.
아래에 설명된 동의어를 수정하여 목표를 완전히 달성할 수 있습니다.
(아래에서는 "-E" 옵션이 기본값으로 설정되어 있다고 가정하므로 "-F -p"는
"%"-보간, 다른 옵션은 그렇지 않습니다. 또한 TTY의 인코딩이
Perl에서 인식하므로 "-e 3" 옵션을 설정하는 것이 좋습니다. DOSISH 쉘에서,
"-@"를 더 잘 사용하고 "%"를 아래의 "@"로 바꾸십시오.)
"-t 값"
-P "mz/값/%t"
"-a -l -y -g -c -n"
마찬가지로.
"-F" "TIT2=값"
-P "mzi/값/%{TIT2}"
"-F" "APIC[myDescr] < 파일"
-F "APIC[myDescr]=%{I(fimbB)파일}"
or
-P "mzi/%{I(fimbB)FILE}/%{APIC[myDescr]}"
(텍스트 전용 프레임의 경우 "bB" 제거).
"-F" "APIC[myDescr] > 파일"
-P "bOi,%{APIC[myDescr]},파일"
(텍스트 전용 프레임의 경우 "b" 제거); 또는 "-e binary -p "%{APIC[myDescr]}""를 사용하십시오.
리디렉션을 사용하는 경우 "예: 구문 분석 규칙"을 참조하십시오.
"-d" TIT2
-P "m//%{TIT2}"
"-F" "TIT2 ?< 파일"
매우 까다롭습니다. 빈 파일과 존재하지 않는 파일을 구분하지 않습니다.
-P "mzi/%{TIT2:1}0%{I(fFim)FILE}/10/10%{TIT2}/0%{U1}"
(텍스트 전용이 아닌 프레임의 경우 "bB"를 "fFim"에 추가); 마지막 부분은 생략 가능
플래그 "m"을 생략하는 경우 - 잘못된 인쇄를 포착하기 위해서만 존재합니다.
"구문 분석 규칙"에 대한 자세한 내용은 "예: 구문 분석 규칙" 및 "설명"을 참조하십시오.
MP3::태그::ParseData.
예 : 해석하다 규칙
"-P" 옵션만 설명이 필요할 정도로 복잡합니다... 자세한 내용은
해석하다 규칙, MP3::Tag::ParseData의 "설명"을 참조하십시오. 보간에 대한 자세한 내용은
MP3::Tag의 "interpolate", MP3::Tag의 "interpolate_with_flags"를 참조하십시오.
(어리석은) 예를 들어 "-a Homer -t Iliad"를 다음으로 대체할 수 있습니다.
-P mz=호머=%a -P mz=일리아드=%t
덜 어리석은 예는 다음을 통해 파일 이름을 구문 분석하는 특정 방법을 강제하는 것입니다.
-P "임=%{d0}/%f=%a/%n %t.%e"
로 분해된다
플래그 문자열 패턴1
"im" "%{d0}/%f" "%a/%n %t.%e"
플래그 문자는 다음을 나타냅니다. 보간하다, 일치해야합니다. 이것은 문자열을 보간합니다
"%{d0}/%f" 그리고 결과(디렉토리의 한 수준이 있는 파일 이름)를 구문 분석합니다.
부분 보존) 주어진 패턴을 사용하여; 따라서 디렉토리 이름은 아티스트가 되고,
선행 숫자 부분 - 트랙 번호 및 나머지 파일 이름(확장자 없음)
- 제목. 여러 패턴이 허용되므로 유사하게 다음을 허용할 수 있습니다.
이름의 여러 형식, 예:
-P "임=%{d0}/%f=%a/%n %t.%e=%a/%t (%y).%e"
파일 기본 이름이 "TITLE (YEAR)" 형식이 되도록 허용합니다. 대체 방법
같은 결과를 얻는 것은
-P "임=%{d0}=%a" -P "임=%f=%n %t.%e=%t (%y).%e"
이는 두 가지 레서피에 해당합니다.
플래그 문자열 패턴1 패턴2
"im" "%{d0}" "%a"
"im" "%f" "%n %t.%e" "%t (%y).%e"
물론, 하나는 사용할 수 있습니다
"im" "%B" "%n %t" "%t (%y)"
두 번째 대체품으로.
설정하는 것이 더 읽기 쉬울 수 있습니다. 예술가 명시적 할당으로 "%{d0}"에
유사한 인수
-E "p/i:Fpa" -a "%{d0}"
(이 "-E" 값은 "%"를 요청합니다.
기본 "\"-"-p"의 보간 및 "%"-"-F" 및 "-p"의 보간; 하나는 수
"-E +/i:a"로 바로 가기).
더 많은 예를 들자면,
-P "if=%D/.comment=%c"
파일에서 주석을 읽습니다. .논평 오디오 파일의 디렉토리에서;
-P "ifn=%D/.comment=%c"
파일이 .논평 트랙당 한 줄의 주석이 있습니다(이것은
트랙 번호는 다른 방법으로 찾을 수 있습니다).
파일을 가정 파트(부품) MP3 파일의 디렉토리에 있는 파일의 형식은 다음과 같습니다.
서문에는 오디오 파일당 짧은 정보 단락이 있으며 그 앞에는 트랙이 있습니다.
숫자와 점:
...
12. 레지타티브.
(피사로, 로코)
13. Duett: jetzt, Alter, jetzt hat es Eile, (피사로, 로코)
...
다음 명령은 이 정보를 ID3 태그의 제목에 넣습니다(오디오 제공
파일 이름은 MP3::Tag가 트랙 번호를 추론할 수 있도록 충분히 유익합니다.):
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;부품;%=n. %티'
이 정보 단락이 "COMMENT" 부분이 있는 "TITLE (COMMENT)" 형식인 경우
선택 사항이므로 다음을 사용하십시오.
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;부품;%=n. %t(%c);%=n. %티'
제목 끝에 있는 점이나 쉼표를 제거하려면 다음을 사용하십시오.
mp3info2 -u -C parse_split='\n(?=\d+\.)' \
-P'fl;부품;%=n. %t(%c);%=n. %t' -P 'iR;%t;%t[.,]$'
이 호출의 두 번째 패턴은 다음으로 변환됩니다.
['iR', '%t' => '%t[.,]$']
기본적으로 제목에 대체 "s/(.*)[.,]$/$1/s"를 적용합니다.
이제 파트(부품), 텍스트 파일이 있습니다 Comment 추가 정보와 함께;
이 정보를 댓글 필드에 입력하고 싶습니다. 시간 내에 "TITLE"에서 추출한 것
(COMMENT)"; 주석의 다음 두 부분을 빈 줄로 구분합니다.
mp3info2 -EC -C 'parse_split=\n(?=\d+\.)' -C 'parse_join=\n\n' \
-P 'f;설명;%c' -P 'fl;부품;%=n. %t' \
-P 'i;%t///%c;%t (%c)///%c' -P 'iR;%t;%t[.,]$'
이것은 제목과 주석이 하위 문자열로 '///'를 포함하지 않는다고 가정합니다.
설명: "-P"의 첫 번째 패턴,
['f', '설명' => '%c'],
"Comment" 파일에서 주석 필드로 주석을 읽습니다. 두번째,
['fl', '부품' => '%=n. %티'],
제목 필드에 "부품" 덩어리를 읽습니다. 세번째
['i', '%t///%c' => '%t (%c)///%c']
제목과 설명을 재정렬합니다. 제공 제목은 "TITLE(COMMENT)" 형식입니다.
(구성 옵션 "parse_join"은 주석의 두 청크를 분리합니다.
오른쪽에 %c가 두 번 나타나는 것에 해당합니다.)
마지막으로 네 번째 패턴은 이전 예제와 동일합니다. 그것은 가짜를 제거합니다
제목 끝에 구두점.
추가 예: 주석 필드 시작 부분에서 "with violin" 문자열 제거(제거
아무 것도 남지 않으면 모두 주석):
mp3info2 -u -P 'iz;%c;with violin%c' *.mp3
자동 업데이트 기능이 다른 필드를 추론하지 않고 아티스트 필드 설정
기타 출처;
mp3info2 -C autoinfo=ParseData -a "AU Thor" *.mp3
이미 존재하지 않는 한 주석 필드 설정:
mp3info2 -u -P 'i;%c///with piano;///%c' *.mp3
마지막 예는 "-P" 언어로 "프로그램"을 실제로 작성하는 방법을 보여줍니다.
옵션: 예제는 조건부 할당을 제공합니다. 사용자 변수 사용("%{U8}"에서와 같이)
임시 및 정규식 사용 가능성에 대해 임의로 제공할 수 있습니다.
프로그래밍 논리. 물론 어떤 수준의 복잡성에서는 다음으로 전환하는 것이 좋습니다.
"MP3::Tag" Perl 모듈과 직접 인터페이스(이 Perl 스크립트의 코드를
예!).
다음은 "고급" id3v2 프레임을 설정하는 일반적인 작업입니다: 작곡가("TCOM"), 오케스트라
("TPE2"), 컨덕터("TPE3"). 태그가 지정된 MP3 파일을 포함하는 디렉토리 트리를 가정합니다.
다음 규칙을 따릅니다. "아티스트"는 실제로 작곡가입니다. "설명"은 다음 중 하나입니다.
두 가지 형태:
출연자; 오케스트라; 지휘자
오케스트라; 지휘자
"-P" 규칙을 통해 특정 MP3 프레임을 설정하려면 다음을 사용하십시오.
mp3info2 -@P "mi/@a/@{TCOM}" \
-P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
"-F" 옵션을 사용하면 다음과 같이 단순화할 수 있습니다.
mp3info2 -@F "TCOM=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
or
mp3info2 -@F "composer=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
현재 디렉터리에 있는 MP3 파일의 ID3 태그를 디렉터리에 있는 파일로 복사하려면 /tmp/mp3 과
확장 .꼬리표 (및 "진행 보고서" 인쇄), 사용
mp3info2 -p "@N@E\n" -@P "bODi,@{ID3v2}@{ID3v1},/tmp/mp3/@N.tag" -DNR .
"z" 플래그를 사용하지 않았기 때문에 태그가 없는 MP3 파일은 건너뜁니다.
이제 오디오 파일과 가사의 두 가지 병렬 파일 계층이 있다고 가정합니다.
오디오 파일은 오디오/dir_name/audio_name.mp3 해당 가사 파일을
텍스트/dir_name/audio_name.mp3. MP3 파일에 가사를 첨부하려면("COMM" 프레임에
언어 "eng"의 "가사" 설명 - 이 is a 비표준 위치, 참조 아래!),
전화
mp3info2 -@P "fim;../text/@{d0}/@B.txt;@{COMM(eng)[lyrics]}" -Ru .
디렉토리 내부 오디오. (오디오 파일을 무시하려면 "fim"을 "FFim"으로 변경하십시오.
해당 텍스트 파일이 존재하지 않습니다.) (물론 사양을 따르기 위해,
"%{COMM(eng)[lyrics]}" 대신 "%{USLT(eng)[]}" 필드를 사용해야 합니다. 보다
변형에 대해서는 아래).
매우 간단한 예제로 마무리: 패턴이 무엇인지
-P 'i;%t;%t'
제목에서 후행 및 선행 공백을 제거하는 것입니다(다른
수단).
더 보기 예
"-F" 옵션을 사용하면 "USLT" 프레임을 다음과 같이 설정할 수 있습니다.
mp3info2 -@F "USLT(eng)[] < ../text/@{d0}/@B.txt" -Ru .
다음을 사용하여 이러한 프레임(모든 언어로)을 인쇄합니다.
mp3info2 -@p "@{USLT[]}\n" 파일.mp3
마찬가지로 빈 설명으로 APIC 프레임을 출력하려면 다음을 사용하십시오.
mp3info2 -e 바이너리 -@p "@{APIC[]}" 파일.mp3 > output_picture_file
또는 ("커버" 설명 포함)
mp3info2 -@P "bOi,@{APIC[커버]},output_picture_file.jpg" loading="lazy" audio_07.mp3
파일에서 이러한 프레임을 설정하려면 xxx.gif (기본 "사진 종류", "표지(앞)",
및 빈 설명) 다음 중 하나를 수행합니다.
mp3info2 -F "APIC < xxx.gif" 파일.mp3
mp3info2 -@F "APIC[]=@{I(fimbB)xxx.gif}" 파일.mp3
"APIC"와 "APIC[]"의 차이점은 첫 번째는 모든 "APIC" 프레임을 먼저 제거하고,
두 번째는 빈 설명이 있는 모든 "APIC" 프레임만 제거하지만 임의의 이미지는 제거합니다.
유형. 따라서 "APIC(Cover
(앞쪽))[]".
빈 설명이 있는 "APIC" 프레임을 제거하려면 임의의 "Picture Type"(및 "MIME
다음에 의해 올바르게 계산될 수 있는 유형 mp3info2, 예: "TIFF/JPEG/GIF/PNG"), 사용
mp3info2 -d "APIC[]" 파일.mp3
(구성에 의해 "축소"가 강제되지 않는 한 이렇게 하면 디스크 공간이 확보되지 않습니다.
변수). "컨덕터" 그림 유형에 대해서만 동일한 작업을 수행하려면 다음을 수행하십시오.
mp3info2 -d "APIC(컨덕터)[]" 파일.mp3
하위 디렉터리를 검색하고 파일을 추가하려면 년 COVER.jpg 파일의 디렉토리에서
"기본" "APIC" 프레임, 그러나 "APIC" 프레임이 없고 파일이 존재하는 경우에만 수행
mp3info2 -@F "APIC ?< @D/cover.jpg" loading="lazy" -R .
이렇게 하면 날짜 "TCOP, TENC, WXXX[], COMM(eng)[]"에 대한 빈 프레임이 삭제되고
현재 디렉토리에 있는 MP0 파일의 트랙 번호에서 선행 3:
mp3info2 -@ -E +/i:y -F "TCOP=@{TCOP}" -F "TENC=@{TENC}"
-F "WXXX[]=@{WXXX[]}" -F "COMM(eng)[]=@{COMM(eng)[]}"
-y "@y" -P "mi/@n/0@n/@n" *.mp3
예 on 취급 과 망가 인코딩
ID3 사양의 주요 약점 중 하나는 데이터가
"latin-1" 인코딩으로 제공됩니다. 세상의 대부분의 언어는 언어로 표현할 수 없기 때문에
"latin-1", 이로 인해 (대부분?) ID3 태그가 표준을 따르지 않습니다. 최신
사양 버전은 이 단점을 수정했지만 피해는 이미 발생했습니다.
다행히도 이 스크립트는 "MP3::Tag" 기능을 사용하여 부적합에서 변환할 수 있습니다.
준수하는 것에 대한 내용.
다음 예는 (비표준 준수)에 작성된 ID3v2 태그를 변환합니다.
"cp1251"을 표준 준수 인코딩으로 인코딩합니다. 이 예제의 목적을 위해
ID3v1 태그가 동일한 인코딩에 있다고 가정하고
인코딩 "cp1251"); 처리할 파일은 현재 디렉토리에 있고
(재귀적으로) 하위 디렉토리에서(DOSISH 셸의 경우 "set" 구문):
MP3TAG_DECODE_V1_DEFAULT=cp1251로 설정
MP3TAG_DECODE_V2_DEFAULT=cp1251로 설정
mp3info2 -C id3v2_fix_encoding_on_write=1 -u2R .
자세한 내용은 MP3::Tag의 "ENVIRONMENT", MP3::Tag의 "config" 및
MP3::Tag의 "사용자 정의".
비호환성 과 mp3정보
이 도구는 프로그램에서 느슨하게 모델링되었습니다. mp3정보; "대부분" 이전 버전과 호환됩니다.
(특히 "-N"을 통해 "순진한" 모드에 있을 때) 매우 중요한 상위 집합을 허용합니다.
기능. 알려진 이전 버전과의 비호환성은 다음과 같습니다.
-G -h -r -d -x
누락된 기능:
-f -F -i
호환되지 않는 "%"-탈출하다:
%e %E - 완전히 다른 의미 체계
%v - 뒤에 오는 0이 없습니다.
%q - 소수 부분이 있음
%r - VBR의 "변수"라는 단어가 아니라 숫자입니다.
%u - 하나 적습니다(설명자 프레임이 있는 경우에만?)
없어진 "%"-탈출하다:
%b %G
백슬래시 이스케이프: "\\", "\n", "\t"만 지원됩니다.
"-x"는 데이터를 다른 형식으로 인쇄하고 모든 필드가 존재하지 않으며 ID3v2 태그 이름을 표시합니다.
출력됩니다.
환경
"-e" 1, 2 또는 3을 사용하면 이 스크립트는 환경 변수 "LC_CTYPE, LC_ALL,
LANG"을 사용하여 현재 인코딩을 추론합니다. 다른 환경 변수는 직접 읽지 않습니다.
이 스크립트.
그러나 MP3::Tag 모듈에는 인코딩 설정에 대한 풍부한 기본값 세트가 있습니다.
환경 변수로 설정 가능; MP3::Tag의 "환경"을 참조하십시오. 그래서 이 변수들은
이 스크립트가 작동하는 방식에 (간접적으로) 영향을 미칩니다.
폐지 인터페이스
무슨 내용인지 이해가 되지 않으면 이 발표를 무시해도 안전합니다.
기존의 이전 버전=1.05 방식(구분 기호를 XNUMX번 반복하여
옵션) "-F" 및 <-P> 옵션에 여러 명령을 제공하는 것은 여전히 지원되지만
강력하게 권장하지 않습니다. (현재 인터페이스와 충돌하지 않습니다.)
onworks.net 서비스를 사용하여 mp3info2p 온라인 사용
