Ustawienie znacznika tytułu ID3 na równe nazwie pliku MP3


14

Czy ktoś ma skrypt bash, który przejdzie przez bibliotekę multimediów i ustawi tag ID3 każdego pliku MP3 na taki sam jak nazwa pliku?

Jestem również otwarty na inne automatyczne metody. Może to być aplikacja GUI lub cokolwiek, co wykona zadanie automatycznie.

Zauważono tutaj metodę EasyTag: jak zmienić nazwę znacznika tytułowego w plikach mp3 ID3 - niestety nie rozumiem tych kroków.


Możesz odpowiedzieć na własne pytanie. Wymień kroki, na których się znalazłeś, ubuntuforums.orgi przytocz swoje źródło. :) Pomoże to przyszłym użytkownikom Superuser, w przypadku gdy ubuntuforums.orglink stanie się niedostępny.
iglvzx,

3
Oto kilka wskazówek: 1) Nie zaśmiecaj swojego pytania słowami „edytuj 1”, „edytuj 2” itp. Rozwiązuj problemy za pomocą komentarzy. 2) Jeśli znajdziesz rozwiązanie, opublikuj je jako odpowiedź, tak jakbyś próbował odpowiedzieć na pytanie innej osoby. Nie stawiaj odpowiedzi na pytanie . To nie jest miejsce, gdzie ludzie tego szukają :) Ponadto używaj cudzysłowów do wszystkiego, co zacytowałeś gdzie indziej (zobacz pomoc dotyczącą formatowania).
slhck

Stworzyłem skrypt, aby poprawnie oznaczyć pliki MP3 w formacie „Artist - Track.mp3”, a następnie zmień nazwę pliku na „Track.mp3”: gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 przy użyciueyed3
Zach Saucier

Odpowiedzi:


17

EasyTAG jest rzeczywiście doskonałym narzędziem do tego problemu. Tutaj znalazłem swoją odpowiedź . Jeśli chodzi o sposób korzystania z niego, najlepszą referencją okazuje się własna dokumentacja EasyTAG .

Otwórz EasyTag, przejdź do folderu z plikami muzycznymi, wybierz wszystkie pliki w folderze lub wszystkie pliki, które chcesz oznaczyć, kliknij przycisk „Skanuj pliki” (musisz najechać na nie myszką, aby wymyślić który to jest).

Następnie upewnij się, że menu skanera jest ustawione na „Fill Tag”, a następnie w polu Fill Tag wprowadź odpowiednie zmiany, aż przykład pod polem będzie wyglądał tak, jak szukasz. Jeśli potrzebujesz dodatkowej pomocy, co umieścić w polu Fill Tag, kliknij „?” przycisk legendy (lista różnych możliwych kodów do przetłumaczenia) i naciśnij przycisk maski, aby wyświetlić kilka punktów początkowych.

Gdy jesteś zadowolony z wyników, kliknij przycisk „Skanuj pliki” (w oknie dialogowym Skanuj pliki, a nie ten, który kliknąłeś, aby dostać się tam, gdzie jesteś ... ikony wyglądają tak samo), a twoje zmiany zostaną zastosowane . Jeśli nie otrzymujesz nazwy wykonawcy lub albumu, po prostu wybierz wszystko, co chcesz zmienić, wprowadź dane i kliknij mały przycisk obok tego pola, a wszystkie wybrane pliki zostaną wypełnione lub zmienione na tego wykonawcy lub album. Działa to w większości dziedzin.

Po zakończeniu kliknij przycisk Zapisz i gotowe.

PS: Skaner CDDB często działa całkiem dobrze, jeśli masz pełne albumy, które próbujesz oznaczyć, lub przynajmniej dostępne w sprzedaży pliki utworów.

PPS: Najwyraźniej wciąż jestem w połowie przytomny. Zgodnie z tym, co napisałeś w swoim oryginalnym poście, wypróbuj to w polu Fill Tag:

%n. %a - %t

Oto sekcja, która dotyczy tego pytania:


1.2.2 Automatycznie za pomocą skanera „Fill Tag”:

Niektóre warunki korzystania z tego trybu:

  • pliki posortowane według albumów
  • nazwy plików lub katalog nadrzędny zawierają informacje o znacznikach (wykonawca, album, tytuł,…)
  • puste lub nieprawidłowe tagi

Skaner „Fill Tag” używa wzorca do kojarzenia słów w nazwie pliku i katalogach z wpisami znaczników. W ten sposób pola znaczników można uzupełniać automatycznie, naciskając „zielony” przycisk w oknie skanera lub na pasku narzędzi. Jeśli znacznik jest częściowo ukończony, użyj opcji „Zastąp pola podczas skanowania znacznika” na karcie „Skaner” w oknie „Preferencje”, aby zastąpić wszystkie pola nowymi wartościami.

Każdy kod odpowiada polu, zgodnie z następującymi zasadami:

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

Uwaga: aby uniknąć błędów, zaleca się stosowanie kodu tylko jeden raz we wzorcu. Oczywiście, podobnie jak przy ręcznym tagowaniu, skaner przetwarza tylko wybrane pliki. Możesz użyć zdefiniowanych wzorców na liście lub napisać własne wzorce odpowiadające formatowi twoich nazw plików i katalogów. Aby uniknąć błędów przy wyborze odpowiedniego wzoru lub pisaniu go, podgląd pokazuje natychmiast wyniki przed zastosowaniem wzoru. Jeśli potrzebujesz pomocy z różnymi kodami, naciśnij przycisk „Pomoc” (koło ratunkowe), aby wyświetlić legendę każdego kodu. Ponadto, jeśli chcesz zapisać własne wzory, edytuj lub posortuj, naciskając przycisk „Maska”, w oknie skanera pojawi się mały edytor.

Poniżej przykład użycia wzorów:

a) następująca nazwa pliku:

“/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

Znalazłem wiele przydatnych narzędzi wiersza poleceń:

id3v2

id3v2 to edytor znaczników id3v2 w wierszu poleceń. Możesz dodawać / modyfikować / usuwać tagi id3v2 i konwertować tagi id3v1 na tagi id3v2. Używa id3lib. Szukam współ-opiekuna. Jeśli jesteś zainteresowany, napisz do myers_carpenter.

eyeD3

eyeD3 to moduł i program Pythona do przetwarzania znaczników ID3. Dostarczone są również informacje o plikach mp3 (tj. Przepływności, częstotliwości próbkowania, czasie odtwarzania itp.) Obsługiwane formaty to ID3 v1.0 / v1.1 i v2.3 / v2.4.

są one idealne do pisania skryptów w celu skanowania katalogów.


2

Nie zawsze jest to idealnie idealne, ale użyłem go do uzyskania nazw plików mp3 przy użyciu tylko popularnych narzędzi unixowych (w tym wersji busyboksa). Być może ktoś z więcej niż 6 plikami mp3 Tom Petty może poddać go dalszym testom.

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

Edycja: Źle odczytałem pytanie, ale znając powyższe, możemy użyć sed, aby zastąpić $ TITLE nazwą pliku „$ x”, używając sed do zastąpienia łańcucha w miejscu

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

Jestem prawie w 100% pewien, że nie spełnia wszystkich specyfikacji ID3, ale może wystarczyć do podstawowego użytku osobistego, o ile najpierw wykonasz kopię zapasową


Dzięki. Znalazłem sposób na osiągnięcie mojego celu za pomocą EasyTAG, ale twoja odpowiedź najlepiej odpowiada na moje pierwotne pytanie. string jest dobrym narzędziem, o którym warto wiedzieć. (Nie korzystałem z niego wcześniej.) Czy możesz napisać kompletne rozwiązanie oparte na Twojej edycji, aby mieć pewność, że rozumiem sugerowaną zmianę?
MountainX

2

W przypadku Ubuntu 18.04 LTS (zakładam, że wszystkie smaki Debiana będą działać tak dobrze):

  • Zainstaluj eyeD3 za pomocą sudo apt install eyeD3

  • Utwórz plik dla skryptu bash (użyłem „touch”; możesz użyć dowolnego edytora tekstu)

  • Skopiuj to i wklej do pliku:

    Kopiuje nazwę pliku i zapisuje ją w znaczniku tytułu

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

    Jeśli nie chcesz oglądać postępu, pomiń wiersz echo $a nad słowem „gotowe”.

  • Ustaw plik jako wykonywalny:

    chmod +x filename
  • Skopiuj skrypt do katalogu, w którym chcesz go uruchomić - do katalogu zawierającego pliki multimedialne; na przykład:

    cp filename /music/directory
  • Przejdź do katalogu, do którego właśnie skopiowałeś skrypt:

    cd /music/directory
  • Uruchom skrypt:

    ./filename

    GOTOWY

To działało dla mnie na Ubuntu 18.04 LTS - moja żona napisała to dla mnie za około 3 minuty, więc nie mogę odpowiedzieć na żadne pytania, jeśli to nie zadziała; Nie jestem doświadczonym programistą, konfiguruję tę sieć, dns, ssh, sftp, ftp, AD / Domain, plik, zapora ogniowa, router / serwer, coś w stylu :-) NIENAWIDZĘ robię skryptów, programowania i cokolwiek podobnego. Uwielbiam korzystać ze skryptów, programowania i wszystkiego podobnego :-)


1

Dziwi mnie, że nikt nie zasugerował najłatwiejszego rozwiązania za pomocą ffmpeglub avconv:

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

0

Zainstalowałbym eyeD3 w virtualenv w Pythonie, pip install eyeD3aby uzyskać najnowszą wersję. Po tym uruchomieniu:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.