Đây là lệnh mp3info2p có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi, chẳng hạn như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
mp3info2 - lấy / đặt các thẻ MP3; sử dụng MP3 :: Tag để nhận các giá trị mặc định.
SYNOPSIS
# In thông tin trong thẻ và thông tin được mã hóa tự động
mp3info2 * .mp3
# Ngoài ra, đặt trường năm thành 1981
mp3info2 -y 1981 * .mp3
# Tương tự mà không cần bản in thông tin, đệ quy trong thư mục hiện tại
mp3info2 -R -p "" -y 1981.
# Không suy luận bất kỳ trường nào, chỉ in thông tin (chuẩn hóa) từ các thẻ
mp3info2 -C autoinfo=ID3v2,ID3v1 *.mp3
# Như trên, nhưng không có chuẩn hóa / tự động điền, thông tin thô trong thẻ
mp3info2 -N * .mp3
# Như trên, nhưng chỉ đọc thẻ ID2v1
mp3info2 -NC autoinfo = ID3v1 * .mp3
# Nhận nghệ sĩ từ CDDB_File, tự động mã hóa thông tin khác, ghi nó vào thẻ
mp3info2 -C artist = CDDB_File -u * .mp3
# Đối với tiêu đề, ưu tiên thông tin từ tệp .inf; tự động giải mã phần còn lại, cập nhật
mp3info2 -C title = Inf, ID3v2, ID3v1, filename -u * .mp3
# Tương tự, và lấy nghệ sĩ từ tệp CDDB
mp3info2 -C title = Inf, ID3v2, ID3v1, filename -C artist = CDDB_File -u * .mp3
# Viết tập lệnh để chuyển đổi thẻ .wav sang .mp3, tự động giải mã
mp3info2 -p "lame -h --vbr-new --tt '% t' --tn% n --ta '% a' --tc '% c' --tl '% l' --ty '% y ''% f '\ n "* .wav> xxx.sh
MÔ TẢ
Chương trình in một thông báo tóm tắt thông tin thẻ (thu được qua MP3 :: Thẻ mô-đun) cho
các tệp được chỉ định.
Nó cũng có thể cập nhật thông tin trong thẻ ID3. Điều này xảy ra trong ba trường hợp khác nhau.
· Nếu thông tin được cung cấp trong các tùy chọn dòng lệnh "talygcn" khác với
nội dung của các thẻ ID3 tương ứng (hoặc không có thẻ ID3 tương ứng).
· Nếu các tùy chọn "-d" hoặc "-F" được đưa ra.
· Nếu "MP3 :: Tag" lấy thông tin từ các phương tiện khác ngoài thẻ MP3 và "-u" buộc
cập nhật các thẻ ID3.
(Tất cả những cách này đều bị vô hiệu hóa bởi tùy chọn "-D".) Thẻ ID3v2 được viết nếu cần hoặc nếu "-2"
tùy chọn được đưa ra. (Tự động điền vào các trường có thể suy luận (thông qua phương thức
id3v2_frames_autofill ()) được thực hiện trừ khi các tùy chọn "-d" hoặc "-N" được đưa ra.)
Tùy chọn "-u" ghi ("u" cập nhật) thông tin đã tìm nạp vào các thẻ MP3 ID3. Cái này
tùy chọn được giả định nếu có các tùy chọn dòng lệnh thiết lập rõ ràng các phần tử thẻ
("-a", "-t", v.v. và "-F", "-d"). (Hiệu ứng của tùy chọn này có thể bị ghi đè bằng cách cho
Tùy chọn "-D".) Nếu tùy chọn "-2" cũng được đưa ra, buộc ghi thẻ ID3v2 ngay cả khi thông tin
phù hợp với thẻ ID3v1 (ngoài ra, tùy chọn này cho phép tự động cập nhật "tên cá nhân"
các trường và tiêu đề tương ứng theo các giá trị của "người dịch",
cài đặt cấu hình "person_frames", v.v.; xem "Chuẩn hóa các trường"). Tùy chọn này
bị bỏ qua nếu không phát hiện thấy thay đổi nào đối với thẻ; tuy nhiên, người ta có thể buộc cập nhật bằng cách lặp lại
tùy chọn này (hữu ích nếu bạn muốn thay đổi "định dạng" của thẻ, trái ngược với
"Nội dung").
Tùy chọn "-p" in một thông báo bằng cách sử dụng đối số tiếp theo làm định dạng (theo mặc định là "\\", "\ t",
"\ n" được thay thế bằng dấu gạch chéo ngược, tab và dòng mới; được điều chỉnh bởi giá trị của tùy chọn "-E");
xem "nội suy" trong MP3 :: Tag để biết chi tiết về định dạng của sprintf ()-như những cuộc trốn chạy. Nếu không
tùy chọn "-p" được đưa ra, thông báo ở định dạng mặc định sẽ được phát ra. Giá trị của tùy chọn "-e"
là bảng mã được sử dụng cho đầu ra; nếu giá trị là một số, mã hóa hệ thống cụ thể là
đoán (và được sử dụng cho đầu ra nếu bit 0x1 được đặt); nếu bit 0x2 được đặt, thì dòng lệnh
các tùy chọn được giả định là trong mã hóa đã đoán; nếu bit 0x4 được đặt, thì dòng lệnh
các đối số được giả định là trong mã hóa đã đoán. Sử dụng giá trị "nhị phân" để thực hiện nhị phân
đầu ra.
Với tùy chọn "-D" (chạy khô) không có cập nhật nào được thực hiện, bất kể các tùy chọn khác là gì.
Với tùy chọn này, không có phân tích cú pháp các thẻ được thực hiện trừ khi cần thiết.
Sử dụng các tùy chọn
talygcn
để ghi đè thông tin (ca sĩ tiêu đề album thể loại năm thể loại nhận xét-số bài hát) thu được
thông qua heuristics "MP3 :: Tag" (chuyển đổi "-u" được ngụ ý nếu bất kỳ một trong những đối số này khác nhau
từ những gì sẽ được tìm thấy nếu không; sử dụng công tắc "-D" để tắt tự động cập nhật). Theo mặc định,
giá trị của các tùy chọn này không phải là "%" - được nội suy; điều này có thể được thay đổi bởi tùy chọn "-E".
Tùy chọn "-d" phải chứa danh sách các khung ID3v2 được phân tách bằng dấu phẩy để xóa. MỘT
đặc điểm kỹ thuật khung giống như những gì có thể được cung cấp cho nội suy khung "% {...}"
lệnh, ví dụ: "TIT3", "COMM03", "COMM (fra) [tiêu đề ngắn]"; sự khác biệt với sửa đổi-
truy cập là TẤT CẢ CÁC (và không phải Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên của) các khung phù hợp bị xóa. (Tùy chọn -d có thể là
lặp đi lặp lại.)
Ví dụ: "-d APIC" sẽ xóa tất cả các khung ảnh. Ngoài ra, nếu danh sách có
"ID3v1" hoặc "ID3v2", toàn bộ thẻ sẽ bị xóa.
Tương tự như vậy, tùy chọn "-F" cho phép thiết lập các khung "ID3v2" tùy ý: nếu cần thiết lập
một khung, sử dụng chỉ thị "FRAME_spec = VALUE":
-F TIT2 = The_new_Title
Một lần nữa, khi sửa đổi, TẤT CẢ CÁC các khung phù hợp sẽ bị xóa trước tiên, vì vậy hãy cẩn thận với
-F COMM = MyComment
Tùy chọn "-F" có thể được lặp lại để đặt nhiều hơn một khung. Nếu biến cấu hình
"void-F-deletes" là TRUE (mặc định), các đối số trống sẽ xóa khung.
Người ta có thể thay thế "FRAME_spec = VALUE" bằng "FRAME_spec <FILE"; trong trường hợp này, giá trị cần đặt
được đọc từ tệp có tên FILE; nếu khung chỉ có văn bản (nghĩa là: tối đa
Các trường "[được mã hóa] Mô tả Ngôn ngữ URL Văn bản" hiện có), tệp được đọc ở dạng văn bản
chế độ (và với khoảng trắng đầu / cuối bị tước bỏ), nếu không thì nó được đọc ở dạng nhị phân
chế độ. (Cần có khoảng trắng đối với các dấu "<".) Nếu "<" được thay thế bằng "? <",
giá trị chỉ được đặt nếu khung chưa xuất hiện và nếu tệp tồn tại; nếu được thay thế bằng ">",
giá trị (nếu có) được ghi vào FILE (tạo các thư mục trung gian là
được điều khiển bởi tùy chọn cấu hình "frames_write_creates_dirs", mặc định là FALSE).
Ngoài ra, "FRAME_spec" có thể là một trong "ID3v1" hoặc "ID3v2" hoặc "TAGS"; trong trường hợp này, toàn bộ
thẻ được viết hoặc đọc. Ví dụ: đối với "TAGS <FILE", "thể loại album năm của nghệ sĩ tiêu đề
theo dõi nhận xét "thông tin được tính toán từ FILE, có thể là các thẻ thô, như được tạo bằng ">",
hoặc một tệp MP3 hợp lệ; nếu có Image :: ExifTool, dữ liệu có thể được đọc từ tùy ý
tập tin đa phương tiện. (Tương tự, đối với "ID3v1 <FILE", cùng một thông tin được trích xuất từ "ID3v1"
chỉ thẻ.) Sau đó, trong trường hợp "ID3v2" hoặc "TAGS", các khung "ID3v2" được sao chép từ
Thẻ "ID3v2" từng cái một. (Với các sửa đổi phù hợp cho "? <".)
Theo mặc định, "VALUE" cho "-F" là "%" - được nội suy; điều này có thể được thay đổi bằng tùy chọn "-E".
Để thuận tiện cho người dùng, các hình thức thân thiện hơn với con người "nhà soạn nhạc, text_by, dàn nhạc, nhạc trưởng,
disk_n "có thể được sử dụng thay cho" TCOM, TEXT, TPE2, TPE3, TPOS ".
Tùy chọn "-P RECIPE" là một khái quát hóa rất mạnh mẽ về những gì có thể được thực hiện bởi các tùy chọn
"-F", "-d" và "-t -a -l -y -g -c -n". Nó có thể được lặp lại; các giá trị phải chứa
phân tích công thức. Chúng trở thành mục cấu hình "parse_data" của "MP3 :: Tag"; sau cùng
thông tin này được xử lý bởi mô-đun MP3 :: Tag :: ParseData (nếu mô-đun sau có trong
chuỗi kinh nghiệm học; xem tùy chọn "-C"). "RECIPE" được chia thành "$ flags, $ string,
@patterns "trên ký tự không phải chữ và số đầu tiên của nó; ký tự đầu tiên trong số @patterns khớp với
$ string sẽ được thực thi (đối với các hiệu ứng phụ). (Xem ví dụ: "EXAMPLES: parse
quy tắc".)
Nếu tùy chọn "-G" được chỉ định, tên tệp trên dòng lệnh được coi là toàn cầu
các mẫu. Điều này có thể hữu ích nếu độ dài dòng lệnh tối đa quá thấp. Với
Các đối số tùy chọn "-R" có thể là các thư mục, được tìm kiếm đệ quy cho âm thanh
(vỡ nợ * .mp3) các tệp để xử lý; sử dụng tùy chọn "-r" để đặt lại biểu thức chính quy về giao diện
for (mặc định là "(? i: \. mp3 $)").
Tùy chọn "-E" kiểm soát việc mở rộng các ký tự thoát. Nó phải chứa các chữ cái của
các tùy chọn dòng lệnh trong đó "\\, \ n, \ t" được nội suy; người ta có thể nối các chữ cái
trong số các tùy chọn "talygcn F" yêu cầu "%" - phép nội suy sau dấu phân tách "/ i:" (cho
"-F", chỉ các giá trị được nội suy). Giá trị mặc định là "p / i: Fp": chỉ có "-p" là
"\" - nội suy và chỉ "-F" và "-p" là đối tượng của "%" - nội suy. Nếu tất cả một
muốn là thêm vào về mặc định, vượt qua giá trị của "-E" (chứa các tùy chọn được bổ sung) bằng cách
"+". (Một số phần giá trị của tùy chọn "-P" được nội suy, nhưng điều này phải
được điều chỉnh bởi các cờ, không phải "-E"; làm KHÔNG đặt "P" vào "%" - phần được nội suy của "-E".)
Nếu tùy chọn "- @" được cung cấp, tất cả các ký tự "@" trong các tùy chọn sẽ được thay thế bằng "%". Cái này
có thể thuận tiện nếu shell xử lý đặc biệt "%" (ví dụ: DOSISH shell).
Nếu tùy chọn "-tôi" được đưa ra, không cần phỏng đoán nghệ sĩ trường được thực hiện khi đánh máy.
Tùy chọn "-C CONFIG_OPT = VALUE1, VALUE2 ..." đặt dữ liệu cấu hình "MP3 :: Thẻ" giống nhau
theo cách "MP3 :: Tag-"config ()> sẽ làm (nhớ lại rằng giá trị là một mảng; các phần tử riêng biệt
bằng dấu phẩy nếu nhiều hơn một). Tùy chọn này có thể được lặp lại để đặt nhiều giá trị. Ghi chú
rằng vì "ParseData" được sử dụng để xử lý các công thức phân tích cú pháp "-P", nó nên được giữ lại
trong cấu hình "tự động thông tin" (và các trường liên quan "tác giả", v.v.) có "-P".
Nếu tùy chọn "-x" được đưa ra, thông tin kỹ thuật về tệp âm thanh sẽ được in
(Mức độ MP3, thời lượng, số khung hình, phần đệm, bản quyền và danh sách khung ID3v2
tên ở định dạng phù hợp với "% {...}" thoát). Nếu "-x" được lặp lại, nội dung của các khung là
cũng được in ra (có thể xuất ra các ký tự không in được, nếu nó được lặp lại nhiều hơn hai lần).
Nếu tùy chọn "-N" được đưa ra, tất cả các "thông minh" đều bị vô hiệu hóa - không chuẩn hóa các trường
xảy ra và (theo mặc định) không cố gắng suy ra giá trị của các trường từ không phải ID3
thông tin được thực hiện. Tùy chọn này (hiện tại) tương đương với việc có "-C
autoinfo = ParseData, ID3v2, ID3v1 "là chỉ thị đầu tiên, không có
Chuẩn hóa :: Text :: Music_Fields.pm hiện trên đường dẫn @INC và không gọi autofill () phương pháp.
Bình thường hóa of các lĩnh vực
(Việc tải mô-đun chuẩn hóa và tất cả các hoạt động tiếp theo có thể bị vô hiệu hóa bởi
tùy chọn "-N" hoặc bằng cách đặt biến môi trường "MP3TAG_NORMALIZE_FIELDS" thành FALSE.
Nếu không bị cấm, mô-đun sẽ được cố gắng tải nếu thư mục ~ / .music_fields is
hiện tại hoặc "MP3TAG_NORMALIZE_FIELDS" được đặt và TRUE.)
Nếu tải mô-đun "Normalize :: Text :: Music_Fields" thành công, như sau là
áp dụng:
Nếu giá trị của "MP3TAG_NORMALIZE_FIELDS" được xác định chứ không phải 1, giá trị này được chia thành
thư mục dưới dạng PATH và đường dẫn tải của "Normalize :: Text :: Music_Fields" được đặt thành này
danh sách các thư mục. Sau đó, MP3 :: Tag được hướng dẫn (thông qua cấu hình tương ứng
cài đặt) để sử dụng các phương thức "normalize_artist" (v.v.) được xác định bởi mô-đun này. Những phương pháp này
có thể chuẩn hóa dữ liệu thẻ nhất định. Phiên bản hiện tại xác định các phương pháp để "chuẩn hóa"
tên cá nhân và chức danh (dựa trên nhà soạn nhạc). Quá trình chuẩn hóa này được thúc đẩy
thông qua các bảng cấu hình người dùng có thể chỉnh sửa.
Ngoài việc chuẩn hóa tự động dữ liệu thẻ MP3, người ta có thể sử dụng "tệp MP3 giả" để
truy cập thủ công một số tính năng của mô-đun này. Đối với điều này, hãy sử dụng tên tệp trống và "-D"
Lựa chọn. Ví dụ,
mp3info2 -D -a Beethoven -p "% a \ n" ""
mp3info2 -D -a Beethoven -p "% {shP [% a]} \ n" ""
mp3info2 -D -a Beethoven -t "sonata # 28" -p "% t \ n" ""
mp3info2 -D -a Beethoven -t "allegretto, Bes" - @ p "@t \ n" ""
mp3info2 -D -a Beethoven -t "op93" - @ p "@t \ n" ""
sẽ in tên người chuẩn hóa cho "Beethoven", viết tắt chuẩn hóa tương ứng
tên người và tiêu đề chuẩn hóa cho "sonata # 28" của nhà soạn nhạc "Beethoven". Ví dụ,
với các bảng chuẩn hóa được vận chuyển, nó sẽ in
Ludwig van Beethoven (1770-1827)
L. van Beethoven
Piano Sonata số 28 trong A major; Op. 101 (1816)
Allegretto dành cho Piano Trio in B flat major; WoO 39 (1812)
Giao hưởng số 8 ở F chính; Op. 93 (comp. 1812, fp Vienna, 1814-02-27, cond. Beethoven; pubd. 1816)
gọi món of hoạt động
Hiện tại, các thao tác được thực hiện theo trình tự sau
· Xóa toàn bộ ID3v1 hoặc ID3v2 thông qua tùy chọn "-d";
· Công thức của tùy chọn "-P" được thiết lập (được kích hoạt bằng nội suy);
· Cài đặt được thực hiện thông qua các tùy chọn "-a / -t / -l / -y / -g / -c / -n";
· Các cài đặt được thực hiện thông qua tùy chọn "-F";
· Xóa từng khung hình thông qua tùy chọn "-d";
· Tự động điền các khung ID3v2 (id);
· Phát ra thông tin dựa trên các tùy chọn "-p" và "-x";
· Kích hoạt đối ứng của "-P" (nếu không được kích hoạt bằng nội suy);
· Cập nhật các thẻ nếu cần.
Sử dụng chiến lược: leo thang of phức tạp
Mục đích của tập lệnh này là làm cho việc xử lý các thẻ ID3 trở nên đơn giản as có thể.
Ở một đầu của thang đo, người ta có thể thực hiện các thao tác phức tạp tùy ý với các thẻ bằng cách sử dụng
Mô-đun "MP3 :: Tag" Perl.
Mặt khác, sẽ thuận tiện hơn nhiều khi xử lý các thao tác đơn giản nhất với thẻ
bằng cách sử dụng các tùy chọn của tập lệnh này "-t -a -l -y -g -c -n" và "-p -F -d". Để biết thêm một chút
các nhiệm vụ phức tạp, người ta có thể cần sử dụng phương pháp phức tạp hơn phân tích quy tắc, cung cấp
tới tập lệnh này bằng tùy chọn "-P"; các quy tắc phụ thuộc nhiều vào phép nội suy, Xem
"nội suy" trong MP3 :: Thẻ, "interpolate_with_flags" trong MP3 :: Thẻ.
Để đơn giản hóa việc nâng cấp từ "thao tác đơn giản nhất" thành "thao tác phức tạp hơn", tại đây chúng tôi
cung cấp "quy tắc phân tích cú pháp" từ đồng nghĩa đến các tùy chọn đơn giản nhất. Vì vậy, nếu bạn bắt đầu bằng "-t -a -l -y
-g -c -n "và" -p -F -d "các tùy chọn" gần như hiệu quả "với bạn, bạn có cơ hội tốt để trở thành
hoàn toàn có thể đạt được mục tiêu của bạn bằng cách sửa đổi các từ đồng nghĩa được mô tả bên dưới.
(Dưới đây, chúng tôi giả định rằng tùy chọn "-E" được đặt thành giá trị mặc định của nó, vì vậy "-F -p" là
"%" - được nội suy, các tùy chọn khác thì không. Cũng lưu ý rằng nếu mã hóa TTY của bạn là
được Perl công nhận, bạn nên đặt tùy chọn "-e 3"; trên vỏ DOSISH,
sử dụng tốt hơn "- @" và thay thế "%" của bằng "@" bên dưới.)
"-t VALUE"
-P "mz / VALUE /% t"
"-a -l -y -g -c -n"
Tương tự như vậy
"-F" "TIT2 = VALUE"
-P "mzi / VALUE /% {TIT2}"
"-F" "APIC [myDescr] <FILE"
-F "APIC [myDescr] =% {I (fimbB) FILE}"
or
-P "mzi /% {I (fimbB) FILE} /% {APIC [myDescr]}"
(loại bỏ "bB" đối với các khung chỉ có văn bản).
"-F" "APIC [myDescr]> TẬP TIN"
-P "bOi,% {APIC [myDescr]}, FILE"
(loại bỏ "b" cho các khung chỉ có văn bản); hoặc sử dụng "-e binary -p"% {APIC [myDescr]} ""
với chuyển hướng, hãy xem "VÍ DỤ: quy tắc phân tích cú pháp".
"-d" TIT2
-P "m //% {TIT2}"
"-F" "TIT2? <TẬP TIN"
Rất khôn lanh. Điều này sẽ không thiết lập phân biệt tệp trống và tệp không tồn tại:
-P "mzi/%{TIT2:1}0%{I(fFim)FILE}/10/10%{TIT2}/0%{U1}"
(thêm "bB" vào "fFim" cho các khung không chỉ có văn bản); phần cuối cùng có thể được bỏ qua
nếu người ta bỏ qua cờ "m" - nó chỉ hiện diện để bắt các dấu sai.
Để biết chi tiết về "quy tắc phân tích cú pháp", hãy xem "VÍ DỤ: quy tắc phân tích cú pháp" và "MÔ TẢ" trong
MP3 :: Thẻ :: ParseData.
VÍ DỤ: phân tích quy tắc
Chỉ có tùy chọn "-P" là đủ phức tạp để đáng được nhận xét ... Để biết đầy đủ chi tiết về
phân tích quy tắc, xem "DESCRIPTION" trong MP3 :: Tag :: ParseData; để biết chi tiết đầy đủ về phép nội suy,
xem "nội suy" trong MP3 :: Thẻ, "interpolate_with_flags" trong MP3 :: Thẻ.
Đối với một ví dụ (ngớ ngẩn), người ta có thể thay thế "-a Homer -t Iliad" bằng
-P mz = Homer =% a -P mz = Iliad =% t
Một ví dụ ít ngớ ngẩn hơn là buộc một cách cụ thể để phân tích cú pháp tên tệp qua
-P "im =% {d0} /% f =% a /% n% t.% E"
Nó được chia thành
cờ chuỗi mẫu1
"im" "% {d0} /% f" "% a /% n% t.% e"
Các chữ cái cờ là viết tắt của nội suy, phải phù hợp với. Điều này nội suy chuỗi
"% {d0} /% f" và phân tích cú pháp kết quả (là tên tệp có một cấp của thư mục
phần được bảo toàn) bằng cách sử dụng mẫu đã cho; do đó tên thư mục trở thành nghệ sĩ,
phần số đứng đầu - số bản nhạc và phần còn lại của tên tệp (không có phần mở rộng)
- tiêu đề. Lưu ý rằng vì nhiều mẫu được cho phép, tương tự như vậy, một mẫu có thể cho phép
nhiều định dạng của tên, ví dụ:
-P "im =% {d0} /% f =% a /% n% t.% E =% a /% t (% y).% E"
cho phép tên cơ sở của tệp cũng có dạng "TITLE (YEAR)". Một cách thay thế để
thu được kết quả tương tự là
-P "im =% {d0} =% a" -P "im =% f =% n% t.% E =% t (% y).% E"
tương ứng với hai đối ứng:
cờ dây mẫu1 mẫu2
"tôi" "% {d0}" "% a"
"im" "% f" "% n% t.% e" "% t (% y).% e"
Tất nhiên, người ta có thể sử dụng
"im" "% B" "% n% t" "% t (% y)"
như một sự thay thế cho cái thứ hai.
Lưu ý rằng nó có thể dễ đọc hơn khi đặt nghệ sĩ đến "% {d0}" bằng một lệnh rõ ràng, với
đối số tương tự như
-E "p / i: Fpa" -a "% {d0}"
(giá trị này của "-E" yêu cầu "%" - nội suy của tùy chọn "-a" ngoài
mặc định "\" - nội suy "-p" và "%" - nội suy "-F" và "-p"; người ta có thể
tắt nó bằng "-E + / i: a").
Để cung cấp thêm ví dụ,
-P "nếu =% D / .comment =% c"
sẽ đọc bình luận từ tệp .bình luận trong thư mục của tệp âm thanh;
-P "ifn =% D / .comment =% c"
có tác dụng tương tự nếu tệp .bình luận có nhận xét một dòng, một dòng cho mỗi bài hát (điều này giả định
số bản nhạc có thể được tìm thấy bằng các phương tiện khác).
Giả sử rằng một tệp Các bộ phận trong thư mục tệp MP3 có định dạng sau:
phần mở đầu, sau đó có một đoạn thông tin ngắn cho mỗi tệp âm thanh, trước bản nhạc
số và dấu chấm:
...
12. Rezitativ.
(Pizarro, Rocco)
13. Song tấu: jetzt, Alter, jetzt hat es Eile, (Pizarro, Rocco)
...
Lệnh sau đặt thông tin này vào tiêu đề của thẻ ID3 (cung cấp âm thanh
tên tệp đủ thông tin để MP3 :: Tag có thể suy ra số bản nhạc):
mp3info2 -u -C parse_split = '\ n (? = \ d + \.)' -P 'fl; Phần;% = n. %NS'
Nếu đoạn thông tin này có dạng "TIÊU ĐỀ (BÌNH LUẬN)" với phần "BÌNH LUẬN"
là tùy chọn, sau đó sử dụng
mp3info2 -u -C parse_split = '\ n (? = \ d + \.)' -P 'fl; Phần;% = n. % t (% c);% = n. %NS'
Nếu bạn muốn xóa dấu chấm hoặc dấu phẩy ở cuối tiêu đề, hãy sử dụng
mp3info2 -u -C parse_split = '\ n (? = \ d + \.)' \
-P 'fl; Bộ phận;% = n. % t (% c);% = n. % t '-P' iR;% t;% t [.,] $ '
Mẫu thứ hai của lời gọi này được chuyển đổi thành
['iR', '% t' => '% t [.,] $']
về cơ bản áp dụng thay thế "s /(.*)[.,]$/$ 1 / s" cho tiêu đề.
Bây giờ, giả sử rằng ngoài Các bộ phận, chúng tôi có một tệp văn bản Bình luận với thông tin bổ sung;
chúng tôi muốn đưa thông tin này vào trường bình luận sau khi những gì được trích xuất từ "TITLE
(BÌNH LUẬN) "; phân tách hai phần này của nhận xét bằng một dòng trống:
mp3info2 -EC -C 'parse_split = \ n (? = \ d + \.)' -C 'parse_join = \ n \ n' \
-P 'f; Nhận xét;% c' -P 'fl; Phần;% = n. %NS' \
-P 'i;% t ///% c;% t (% c) ///% c' -P 'iR;% t;% t [.,] $'
Điều này giả định rằng tiêu đề và chú thích không chứa '///' dưới dạng một chuỗi con.
Giải thích: mẫu đầu tiên của "-P",
['f', 'Nhận xét' => '% c'],
đọc nhận xét từ tệp "Nhận xét" vào trường nhận xét; thư hai,
['fl', 'Phần' => '% = n. %NS'],
đọc một đoạn "Phần" vào trường tiêu đề. Cái thứ ba
['i', '% t ///% c' => '% t (% c) ///% c']
sắp xếp lại tiêu đề và bình luận cung cấp tiêu đề có dạng "TITLE (BÌNH LUẬN)".
(Tùy chọn cấu hình "parse_join" xử lý việc tách hai phần nhận xét
tương ứng với hai lần xuất hiện của% c ở phía bên phải.)
Cuối cùng, mẫu thứ tư giống như trong ví dụ trước; nó loại bỏ giả mạo
dấu chấm câu ở cuối tiêu đề.
Ví dụ khác: loại bỏ chuỗi "có tiếng vĩ cầm" khỏi đầu trường nhận xét (loại bỏ
nhận xét hoàn toàn nếu không có gì còn lại):
mp3info2 -u -P 'iz;% c; với tiếng vĩ cầm% c' * .mp3
thiết lập trường nghệ sĩ mà không để tính năng tự động cập nhật suy ra các trường khác từ
Những nguồn khác;
mp3info2 -C autoinfo = ParseData -a "AU Thor" * .mp3
đặt trường nhận xét trừ khi trường đó đã có:
mp3info2 -u -P 'i;% c /// bằng piano; ///% c' * .mp3
Ví dụ cuối cùng cho thấy cách thực sự viết "chương trình" bằng ngôn ngữ của "-P"
tùy chọn: ví dụ đưa ra một phép gán có điều kiện. Với các biến người dùng (như trong "% {U8}")
cho thời gian tạm thời và khả năng sử dụng biểu thức chính quy, người ta có thể cung cấp
logic chương trình. Tất nhiên, ở một mức độ phức tạp nào đó, tốt hơn nên chuyển sang
giao tiếp trực tiếp với mô-đun Perl "MP3 :: Tag" (sử dụng mã của tập lệnh Perl này làm
thí dụ!).
Đây là tác vụ điển hình đặt khung id3v2 "nâng cao": nhà soạn nhạc ("TCOM"), dàn nhạc
("TPE2"), dây dẫn ("TPE3"). Chúng tôi giả sử một cây thư mục chứa các tệp MP3 được gắn thẻ
với các quy ước sau: "nghệ sĩ" thực chất là một nhà soạn nhạc; "comment" là một trong số
hai hình thức:
Người biểu diễn; Dàn nhạc; Nhạc trưởng
Dàn nhạc; Nhạc trưởng
Để đặt khung MP3 cụ thể thông qua quy tắc "-P", hãy sử dụng
mp3info2 - @ P "mi / @ a / @ {TCOM}" \
-P "mi / @ c / @ {U1}; @ {TPE2}; @ {TPE3} / @ {TPE2}; @ {TPE3}" -R.
Với các tùy chọn "-F", điều này có thể được đơn giản hóa thành
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.
Để sao chép thẻ ID3 của các tệp MP3 trong thư mục hiện tại vào các tệp trong thư mục / tmp / mp3 với
phần mở rộng .nhãn (và in "báo cáo tiến độ"), sử dụng
mp3info2 -p "@ N @ E \ n" - @ P "bODi, @ {ID3v2} @ {ID3v1}, / tmp/mp3/@N.tag" -DNR.
Vì chúng tôi không sử dụng cờ "z", các tệp MP3 không có thẻ sẽ bị bỏ qua.
Bây giờ, giả sử rằng có hai phân cấp tệp song song của tệp âm thanh và của lời bài hát:
các tệp âm thanh có trong audio / dir_name / audio_name.mp3 với tệp lời bài hát tương ứng trong
text / dir_name / audio_name.mp3. Để đính kèm lời bài hát vào tệp MP3 (trong khung "COMM" với
mô tả "lời bài hát" bằng ngôn ngữ "eng" - điều này is a phi tiêu chuẩn vị trí, xem dưới đây!),
cuộc gọi
mp3info2 - @ P "fim; ../ text / @ {d0} / @ B.txt; @ {COMM (eng) [lời bài hát]}" -Ru.
bên trong thư mục âm thanh. (Thay đổi "fim" thành "Ffim" để bỏ qua các tệp âm thanh
tệp văn bản tương ứng không tồn tại.) (Tất nhiên, để tuân theo các thông số kỹ thuật,
lẽ ra người ta phải sử dụng trường "% {USLT (eng) []}" thay vì "% {COMM (eng) [lời bài hát]}"; Thấy chưa
dưới đây cho các biến thể).
Kết thúc bằng một ví dụ rất đơn giản: tất cả những gì mẫu
-P 'i;% t;% t'
thực hiện là loại bỏ các khoảng trống ở cuối và ở đầu khỏi tiêu đề (được suy ra bởi
có nghĩa).
Xem thêm ví dụ
Với tùy chọn "-F", người ta có thể đặt khung "USLT" là
mp3info2 - @ F "USLT (eng) [] <../text/@{d0}/@B.txt" -Ru.
In ra một khung như vậy (bằng bất kỳ ngôn ngữ nào) với
mp3info2 - @ p "@ {USLT []} \ n" file.mp3
Tương tự, để in ra khung APIC với mô tả trống, hãy sử dụng
mp3info2 -e binary - @ p "@ {APIC []}" file.mp3> output_picture_file
hoặc (với mô tả "bìa")
mp3info2 - @ P "bOi, @ {APIC [cover]}, output_picture_file.jpg" loading = "lazy" audio_07.mp3
Để thiết lập một khung như vậy từ tệp xxx.gif (với "Loại ảnh", "Bìa (mặt trước)" mặc định,
và mô tả trống), hãy thực hiện một trong số
mp3info2 -F "APIC <xxx.gif" file.mp3
mp3info2 - @ F "APIC [] = @ {I (fimbB) xxx.gif}" file.mp3
Sự khác biệt của "APIC" và "APIC []" là cái đầu tiên sẽ xóa tất cả các khung "APIC" trước,
và thứ hai chỉ xóa tất cả các khung "APIC" có mô tả trống - nhưng hình ảnh tùy ý
kiểu. Vì vậy, có thể phù hợp hơn khi sử dụng thông số kỹ thuật đầy đủ, như trong "APIC (Bìa
(đằng trước))[]".
Để xóa các khung "APIC" có mô tả trống, các "Loại ảnh" tùy ý (và "MIME
gõ "s có thể được tính toán chính xác bởi mp3info2, ví dụ: "TIFF / JPEG / GIF / PNG"), sử dụng
mp3info2 -d "APIC []" file.mp3
(lưu ý rằng điều này sẽ không giải phóng dung lượng đĩa, trừ khi "thu nhỏ" bị buộc bởi cấu hình
biến). Để thực hiện tương tự với chỉ loại ảnh "Dây dẫn", hãy làm
mp3info2 -d "APIC (Dây dẫn) []" file.mp3
Để quét qua các thư mục con và thêm tệp cover.jpg từ thư mục của tệp dưới dạng
khung "mặc định" "APIC", nhưng chỉ khi không có khung "APIC" và tệp tồn tại, hãy
mp3info2 - @ F "APIC? <@ D / cover.jpg" loading = "lazy" -R.
Thao tác này sẽ xóa các khung trống cho ngày, "TCOP, TENC, WXXX [], COMM (eng) []" và xóa
đứng đầu số 0 từ số bản nhạc từ tệp MP3 trong thư mục hiện tại:
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
Các ví dụ on xử lý với bị phá vỡ bảng mã
Một trong những điểm yếu chính của đặc tả ID3 là nó yêu cầu dữ liệu phải
được cung cấp ở dạng mã hóa "latin-1". Vì hầu hết các ngôn ngữ trên thế giới không thể diễn đạt được bằng
"latin-1", điều này dẫn đến (phần lớn?) các thẻ ID3 không tuân theo tiêu chuẩn. Mới hơn
các phiên bản của thông số kỹ thuật đã sửa chữa thiếu sót này, nhưng thiệt hại đã được thực hiện.
May mắn thay, tập lệnh này có thể sử dụng các khả năng của "MP3 :: Tag" để chuyển đổi từ
nội dung của một phù hợp.
Ví dụ sau chuyển đổi các thẻ ID3v2 được viết bằng (không tuân theo tiêu chuẩn)
mã hóa "cp1251" thành mã hóa phù hợp tiêu chuẩn. Với mục đích của ví dụ này,
giả sử rằng các thẻ ID3v1 ở cùng một mã hóa (và người ta muốn để chúng trong
mã hóa "cp1251"); các tệp cần xử lý được tìm thấy trong thư mục hiện tại và
(đệ quy) trong các thư mục con của nó (cú pháp "set" cho DOSISH shell):
đặt MP3TAG_DECODE_V1_DEFAULT = cp1251
đặt MP3TAG_DECODE_V2_DEFAULT = cp1251
mp3info2 -C id3v2_fix_encoding_on_write = 1 -u2R.
Để biết thêm thông tin, hãy xem "ENVIRONMENT" trong MP3 :: Tag, "config" trong MP3 :: Tag, và
"TÙY CHỈNH" trong MP3 :: Tag.
TIỀN LƯƠNG với mp3thông tin
Công cụ này được mô hình hóa lỏng lẻo trên chương trình mp3thông tin; nó tương thích ngược "chủ yếu"
(đặc biệt khi ở chế độ "ngây thơ" thông qua "-N") và cho phép một tập hợp siêu đáng kể
chức năng. Các điểm không tương thích ngược đã biết là:
-G -h -r -d -x
Thiếu chức năng:
-f -F -i
Không tương thích "%" -trốn thoát:
% e% E - ngữ nghĩa hoàn toàn khác
% v - không có số 0 ở cuối
% q - có phần phân số
% r - là một số, không phải là một từ "Biến" cho VBR
% u - nhỏ hơn một (chỉ khi có khung mô tả?)
Mất tích "%"-trốn thoát:
% b% G
Dấu gạch chéo ngược thoát ra: chỉ hỗ trợ "\\", "\ n", "\ t".
"-x" in dữ liệu ở định dạng khác, không phải tất cả các trường đều có và tên thẻ ID3v2
là đầu ra.
MÔI TRƯỜNG
Với "-e" 1, 2 hoặc 3, tập lệnh này có thể tham khảo các biến môi trường "LC_CTYPE, LC_ALL,
LANG "để suy ra mã hóa hiện tại. Không có biến môi trường nào khác được đọc trực tiếp bởi
kịch bản này.
Tuy nhiên, lưu ý rằng mô-đun MP3 :: Thẻ có một bộ giá trị mặc định phong phú cho cài đặt mã hóa
có thể giải quyết bằng các biến môi trường; xem "ENVIRONMENT" trong MP3 :: Tag. Vì vậy, các biến này
ảnh hưởng (gián tiếp) đến cách thức hoạt động của script này.
BỆNH VIỆN GIAO DIỆN
Nếu bạn không hiểu nội dung của nó, có thể bỏ qua thông báo này:
Phiên bản cũ, trước = 1.05 cách (bằng cách nhân ba dấu phân cách, không lặp lại
tùy chọn) để cung cấp nhiều lệnh cho các tùy chọn "-F" và <-P> vẫn được hỗ trợ, nhưng
hết sức nản lòng. (Nó không xung đột với giao diện hiện tại.)
Sử dụng mp3info2p trực tuyến bằng dịch vụ onworks.net
