Moduł MP3::Tag

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Spis treści

  1. Wstęp
  2. Metody
  3. Dokumentacja

Moduł MP3::Tag

Wstęp

Zapewne większość z nas korzysta z plików muzycznych w popularnym formacie MP3. Być może również chociaż część tej grupy spotkała się nieraz z problemem skatalogowania dużych zbiorów tego typu plików. Oczywiście w internecie można znaleźć wiele zarówno darmowych jak i komercyjnych programów, ale dlaczego nie napisać swojego i to jeszcze w Perlu? W końcu podstawą takiego programu jest wyłuskiwanie danych na temat danego utworu z tak zwanych etykiet ID3Tag. Ten proceder w dużym stopniu ułatwi nam właśnie opisywany przeze mnie rozbudowany moduł MP3::Tag. Pozwala on czytać rozmaite tagi plików MP3. Dostarcza prosty interfejs do metod osobnych modułów, które pozwalają czytać jak i zapisywać tagi. W momencie pisania tego artykułu moduły MP3::Tag::ID3v1 i MP3::Tag::ID3v2 pozwalają czytać i zapisywać, natomiast moduły MP3::Tag::Inf, MP3::Tag::CDDB_File, MP3::Tag::File, MP3::Tag::LastResort mają jedynie możliwość odczytu danych.

Metody

new()
Tworzy obiekt mp3, który może być potem użyty do wyciągnięcia bądź ustawienia różnych tagów. $mp3 = MP3::Tag->new($filename);
get_tags()
Sprawdza, które tagi mogą być odnalezione w obiekcie mp3. Zwraca listę @tags, która zawiera łańcuchy identyfikujące znalezione tagi jak np. "ID3v1", "ID3v2", "Inf" czy "CDDB_File". Do każdego z tagów mamy dostęp poprzez $mp3->{tagname} gdzie tagname to łańcuch zwrócony przez funkcję get_tags. @tags = $mp3->get_tags;
new_fake()
Tworzy udawany obiekt MP3::Tag, który zachowuje się jak plik MP3 bez tagów. Jeśli chcemy ustawić kilka właściwości tego obiektu należy podać true jako opcjonalny argument. $obj = MP3::Tag->new_fake();
new_tag()
Tworzy nowy tag o podanym w $tagname typie. $tag = $mp3->new_tag($tagname);
close()
Używając tej metody możemy ręcznie zamknąć plik jednak nie jest to niezbędne, ponieważ moduł robi to automatycznie. $mp3->close;
genres()
Zwraca referencję do listy wszystkich rodzajów muzyki (genres), lub odpowiadającą nazwę lub id dla danego id lub nazwy. $allgenres = $mp3->genres; $genreName = $mp3->genres($genreID); $genreID = $mp3->genres($genreName);
autoinfo()
Zwraca informacje o tytule, numerze ścieżki, artyście, nazwie albumu, komentarzu, roku i rodzaju muzyki. Informacje te mogą być pobrane z ID3v1-tag, ID3v2-tag, pliku CDDB, pliku .inf oraz z samego pliku. Domyślnie metoda będzie próbowała znaleźć tag ID3v2 aby zdobyć informacje. Jeśli nie będzie to możliwe następne w kolejności będą ID3v1-tag, plik CDDB, plik .inf i jeśli te także nie zostaną znalezione, użyje nazwy pliku aby uzyskać tytuł, numer ścieżki, artystę i nazwę albumu. Komentarz, rok i rodzaj muzyki będą odnalezione poprzez metody comment, year i genre.

autoinfo() zwraca tablicę z informacją lub referencję do hasza. Hasz ma cztery klucze 'title', 'track', 'artist' i 'album', w których przechowywane są informacje. Jeśli zostaną również odnalezione komentarz, rok i rodzaj, hasz będzie również zawierał klucze 'comment', 'year', 'genre'.

Jeśli opcjonalnie podamy argument 'from', zwrócone wartości (tytuł, numer ścieżki, artysta, nazwa albumu, komentarz, rok i rodzaj) będą referencjami do tablic, w których pierwszy element będzie wartością odpowiedniego pola natomiast drugi rodzajem taga, z którego dana informacja pochodzi (ID3v2, ID2v1 itd.)

A oto przykład zastosowania metody autoinfo(): ($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo(); $info_hashref = $mp3->autoinfo();

comment()
Zwraca informacje o komentarzu. Domyślna kolejność poszukiwania tej informacji będzie taka sama jak w przypadku metody autoinfo(). Również tutaj możemy opcjonalnie podać argument from. $comment = $mp3->comment(); # pusty łańcuch jeśli nie znaleziono
year()
Zwraca informację o roku. Działanie i specyfikacja jak wyżej. $year = $mp3->year(); # pusty łańcuch jeśli nie znaleziono
genre()
Zwraca informację o rodzaju muzyki, która może być pobrana z tagów ID3v2 i ID3v1. Działanie i specyfikacja jak wyżej. $genre = $mp3->genre(); # pusty łańcuch jeśli nie znaleziono
composer()
Zwraca informacje na temat kompozytora. Domyślnie pobierana jest ona z taga ID3v2, w przeciwnym wypadku zwracany jest artysta. $composer = $mp3->composer(); # pusty łańcuch jeśli nie znaleziono
performer()
Zwraca informację na temat wykonawcy. Domyślnie pobierana z taga ID3v2 TXXX[TPE1], w przeciwnym wypadku z taga ID3v2 TPE1, a jeśli te nie istnieją, zwraca artystę. $performer = $mp3->performer(); # pusty łańcuch jeśli nie znaleziono

Dokumentacja

Moduł ma jeszcze całą masę możliwości, a jego dokumentacja jest wielokrotnie obszerniejsza i jeśli ktoś chciałby zgłębić go w całości tradycyjnie zapraszam na: cpan.org. Jednakże myślę, że udało mi się go przybliżyć na tyle, aby korzystając z powyższych informacji, można było swobodnie zacząć dłubać własny program do katalogowania swoich empetrójek, o którym wspomniałem we wstępie. Do dzieła!

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.