Đặt thẻ tiêu đề ID3 bằng với tên tệp MP3


14

Có ai có tập lệnh bash sẽ đi qua thư viện phương tiện và đặt thẻ tiêu đề id3 của mỗi tệp MP3 bằng với tên của tệp không?

Tôi cũng mở cho các phương pháp tự động khác. Nó có thể là một ứng dụng GUI hoặc bất cứ thứ gì sẽ tự động thực hiện công việc.

Một phương pháp EasyTag được lưu ý ở đây: Cách đổi tên thẻ tiêu đề hàng loạt trong các tệp mp3 ID3 - Thật không may, tôi không hiểu các bước.


Bạn có thể trả lời câu hỏi của riêng bạn. Liệt kê các bước bạn tìm thấy ubuntuforums.orgvà trích dẫn nguồn của bạn. :) Điều này sẽ giúp khách truy cập trong tương lai đến Superuser, trong trường hợp ubuntuforums.orgliên kết không khả dụng.
iglvzx

3
Dưới đây là một số mẹo: 1) Đừng làm lộn xộn câu hỏi của bạn bằng "chỉnh sửa 1", "chỉnh sửa 2", v.v ... Giải quyết các vấn đề bằng cách sử dụng nhận xét. 2) Nếu bạn tìm thấy giải pháp, hãy đăng nó dưới dạng câu trả lời, như thể bạn đang cố gắng trả lời câu hỏi của người khác. Đừng đặt câu trả lời vào câu hỏi . Đó không phải là nơi mọi người tìm kiếm nó :) Ngoài ra, hãy sử dụng blockquote cho bất cứ điều gì bạn trích dẫn từ một nơi khác (xem trợ giúp định dạng).
slhck

Tôi đã tạo một tập lệnh để gắn thẻ chính xác các tệp MP3 theo định dạng "Nghệ sĩ - Track.mp3" và sau đó đổi tên tệp thành "Track.mp3": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 bằng cách sử dụngeyed3
Zach Saucier

Câu trả lời:


17

EasyTAG thực sự là một công cụ tuyệt vời cho vấn đề này. Tôi tìm thấy câu trả lời của tôi ở đây . Về cách sử dụng nó, tài liệu tham khảo tốt nhất hóa ra là tài liệu riêng của EasyTAG .

Mở EasyTag, điều hướng đến một thư mục chứa các tệp nhạc trong đó, chọn tất cả các tệp trong thư mục hoặc tất cả các tệp bạn muốn gắn thẻ, nhấp vào nút "Quét tệp" (bạn sẽ phải di chuột qua chúng để tìm ra cái nào là cái đó)

Sau đó, đảm bảo rằng trình đơn thả xuống của máy quét được đặt thành "Thẻ đầy", sau đó trong trường Điền thẻ, thực hiện các chỉnh sửa phù hợp cho đến khi ví dụ bên dưới trường trông giống như những gì bạn đang tìm kiếm. Nếu bạn cần trợ giúp thêm về những gì cần đặt trong trường Fill Tag, nhấp vào "?" nút cho chú giải (liệt kê các mã khác nhau có thể dịch là gì) và nhấn nút mặt nạ để liệt kê một số điểm bắt đầu.

Khi bạn hài lòng với kết quả, hãy nhấp vào nút "Quét tệp" (trong hộp thoại Quét tệp chứ không phải nút bạn đã nhấp ban đầu để đến nơi bạn ở ... các biểu tượng trông giống nhau) và các thay đổi của bạn sẽ được áp dụng . Nếu bạn không nhận được tên Nghệ sĩ hoặc Album, chỉ cần chọn tất cả những gì bạn muốn thay đổi, nhập dữ liệu và nhấp vào nút nhỏ bên cạnh trường đó và tất cả các tệp được chọn sẽ được điền hoặc thay đổi vào nghệ sĩ hoặc album đó. Điều này hoạt động trong hầu hết các lĩnh vực.

Khi bạn đã hoàn tất, nhấp vào nút lưu và bạn đã hoàn tất.

PS: Trình quét CDDB thường hoạt động khá tốt, nếu bạn có các album đầy đủ mà bạn đang cố gắn thẻ hoặc ít nhất là các tệp bài hát có sẵn trên thị trường.

PPS: Tôi dường như vẫn còn nửa tỉnh táo. Theo những gì bạn đã viết trong bài viết gốc của mình, hãy thử điều này trong trường Fill Tag:

%n. %a - %t

Đây là phần có liên quan đến câu hỏi này:


1.2.2. Tự động với máy quét Full Fill Tag

Một số điều kiện để sử dụng chế độ này:

  • tập tin được sắp xếp theo album
  • tên tệp hoặc thư mục cha chứa thông tin thẻ (nghệ sĩ, album, tiêu đề, lỗi)
  • thẻ trống hoặc không chính xác

Máy quét thẻ Full Fill sử dụng một mẫu để liên kết các từ trong tên tệp và thư mục với các mục nhập thẻ. Bằng cách này, các trường thẻ có thể được hoàn thành tự động bằng cách nhấn nút màu xanh lá cây trong cửa sổ máy quét hoặc thanh công cụ. Nếu thẻ đã được hoàn thành một phần, hãy sử dụng tùy chọn Ghi đè các trường khi quét thẻ Thẻ trong tab Quét Scanner của cửa sổ Tùy chọn Trực tuyến, để thay thế tất cả các trường bằng các giá trị mới.

Mỗi mã tương ứng với một trường, tuân theo các quy tắc này:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Lưu ý: để tránh nhầm lẫn, chỉ nên sử dụng mã một lần trong mẫu. Tất nhiên, giống như khi gắn thẻ thủ công, chỉ các tệp đã chọn được xử lý bởi máy quét. Bạn có thể sử dụng các mẫu được xác định trong danh sách hoặc viết các mẫu của riêng bạn để tương ứng với định dạng của tên tệp và thư mục của bạn. Để tránh sai lầm khi chọn đúng mẫu hoặc viết nó, bản xem trước hiển thị ngay kết quả trước khi áp dụng mẫu. Nếu bạn cần một số trợ giúp với các mã khác nhau, hãy nhấn nút Trợ giúp Cảnh sát (phao cứu sinh) để hiển thị chú thích của từng mã. Ngoài ra, nếu bạn muốn lưu các mẫu của riêng mình, hãy chỉnh sửa hoặc sắp xếp sau đó, bằng cách nhấn nút Mặt nạ Mặt nạ, một trình chỉnh sửa nhỏ sẽ được hiển thị trên cửa sổ máy quét.

Dưới đây là một ví dụ về việc sử dụng các mẫu:

a) tên tệp sau:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

Tôi đã tìm thấy một loạt các công cụ dòng lệnh hữu ích:

id3v2

id3v2 là trình soạn thảo thẻ id3v2. Bạn có thể thêm / modifiy / xóa thẻ id3v2 và chuyển đổi thẻ id3v1 sang thẻ id3v2. Đó là sử dụng id3lib. Tôi đang tìm kiếm một người đồng bảo trì. Vui lòng gửi email cho myers_carpenter nếu bạn quan tâm.

mắtD3

eyeD3 là một mô-đun và chương trình Python để xử lý các thẻ ID3. Thông tin về các tệp mp3 (tức là tốc độ bit, tần số mẫu, thời gian phát, v.v.) cũng được cung cấp. Các định dạng được hỗ trợ là ID3 v1.0 / v1.1 và v2.3 / v2.4.

Đây là lý tưởng khi kịch bản một cái gì đó để quét các thư mục.


2

Điều này không phải lúc nào cũng hoàn hảo, nhưng tôi đã sử dụng nó để lấy tên của các tệp mp3 chỉ bằng các công cụ unix thông thường (bao gồm cả các phiên bản busybox) Có lẽ ai đó có nhiều hơn 6 mp3 Tom Petty có thể thử nghiệm thêm.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Chỉnh sửa: Tôi đã đọc sai câu hỏi, nhưng biết điều này ở trên, chúng ta có thể sử dụng sed để thay thế $ TITLE bằng tên của tệp "$ x" bằng cách sử dụng sed để thay thế chuỗi tại chỗ

sed -i "s/$TITLE/$x/" "$x"

Tôi gần như chắc chắn 100% điều này không đáp ứng tất cả các thông số ID3, nhưng nó có thể đủ cho sử dụng cá nhân cơ bản miễn là bạn tạo bản sao lưu trước


Cảm ơn. Tôi đã tìm thấy một cách để thực hiện mục tiêu của mình bằng EasyTAG, nhưng câu trả lời của bạn thực sự trả lời tốt nhất câu hỏi ban đầu của tôi. chuỗi là một tiện ích tốt để biết về. (Tôi chưa từng sử dụng nó trước đây.) Bạn có thể đăng một giải pháp hoàn chỉnh dựa trên chỉnh sửa của mình để tôi có thể chắc chắn rằng tôi hiểu được thay đổi được đề xuất không?
MountainX

2

Đối với Ubuntu 18.04 LTS (Tôi giả sử tất cả các hương vị Debian sẽ chạy tốt như vậy):

  • Cài đặt eyeD3 với sudo apt install eyeD3

  • Tạo một tệp cho tập lệnh bash (Tôi đã sử dụng "chạm"; bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào bạn muốn)

  • Sao chép này và dán nó vào tập tin:

    Sao chép tên tệp và ghi nó vào thẻ Tiêu đề

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Nếu bạn không quan tâm để xem tiến trình, hãy bỏ qua dòng echo $a phía trên từ "đã hoàn thành".

  • Làm cho tập tin thực thi:

    chmod +x filename
  • Sao chép tập lệnh vào thư mục mà bạn muốn nó chạy - tập lệnh chứa các tệp phương tiện của bạn; ví dụ:

    cp filename /music/directory
  • Điều hướng đến thư mục bạn vừa sao chép tập lệnh vào:

    cd /music/directory
  • Chạy kịch bản:

    ./filename

    LÀM XONG

Nó hoạt động với tôi trên Ubuntu 18.04 LTS - vợ tôi đã viết nó cho tôi trong khoảng 3 phút, vì vậy tôi không thể trả lời bất kỳ câu hỏi nào nếu nó không hiệu quả với bạn; Tôi không phải là người am hiểu lập trình, tôi thiết lập web này, dns, ssh, sftp, ftp, AD / Domain, file, tường lửa, bộ định tuyến / máy chủ: TÔI YÊU lợi dụng kịch bản, lập trình và bất cứ thứ gì tương tự :-)


1

Tôi ngạc nhiên khi không ai đề xuất giải pháp đơn giản nhất bằng cách sử dụng ffmpeghoặc avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

Tôi sẽ cài đặt eyeD3 trong một virtualenv python pip install eyeD3để bạn có được phiên bản phát hành gần đây nhất. Sau lần chạy đó:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.