Monday, November 18, 2024
Google search engine
HomeLanguagesAccess metadata of various audio and video file formats using Python –...

Access metadata of various audio and video file formats using Python – tinytag library

Metadata extraction is a necessary task while making music players or other related applications. The best python library to read music metadata of various audio and video file formats is tinytag. This library allows you to access metadata of various audio and video file formats like mp3, m4a, mp4, flac, wav etc.

The list of attributes you can access the album, album artist, artist, audio_offset, bitrate, comment, composer, disc, disc_total, duration, filesize, genre, sample rate, title, track, track_total, and year. Note that you can only read and not edit the metadata.

Installation:

This module does not come built-in with Python. To install this module type the below command in the terminal.

pip install tinytag

This library supports python 2.7+ and 3.4+ and pypy.

Extraction of metadata

First, import the Tinytag method from the tinytag library. Then, pass the file name to the Tinytag.get() method if it is present in the same directory, if not, pass the full path and assign this to any variable. Now, the attributes can be accessed using the following format: variable_name.attribute_name.

You can check if the file format you are using is supported or not using the method: TinyTag.is_supported(filename) which returns a bool value.

Note: Missing metadata will be shown as None

If you’d like to follow along, the download link for the audio and video file used in this article is given: m4a(audio) and mp4(video).

Example 1(Audio):

Python3




# Python3 program to illustrate
# accessing of audio metadata
# using tinytag library
  
# Import Tinytag method from
# tinytag library
from tinytag import TinyTag
  
# Pass the filename into the
# Tinytag.get() method and store
# the result in audio variable
audio = TinyTag.get("GeeksForGeeks_Audio.m4a")
  
# Use the attributes
# and Display
print("Title:" + audio.title)
print("Artist: " + audio.artist)
print("Genre:" + audio.genre)
print("Year Released: " + audio.year)
print("Bitrate:" + str(audio.bitrate) + " kBits/s")
print("Composer: " + audio.composer)
print("Filesize: " + str(audio.filesize) + " bytes")
print("AlbumArtist: " + audio.albumartist)
print("Duration: " + str(audio.duration) + " seconds")
print("TrackTotal: " + str(audio.track_total))


Output:

Title:GeeksForGeeks_Audio
Artist: Neeraj Rana/GFG
Genre:Geek Music
Year Released: 2020
Bitrate:182.72 kBits/s
Composer: GeeksForGeeks Team
Filesize: 63076 bytes
AlbumArtist: Voice Recorder
Duration: 2.7306458333333334 seconds
TrackTotal: None

Example 2(Video):

Python3




# Python3 program to illustrate
# accessing of video metadata
# using tinytag library
  
# Import Tinytag method from
# tinytag library
from tinytag import TinyTag
  
# Pass the filename into the
# Tinytag.get() method and store
# the result in audio variable
video = TinyTag.get("GeeksForGeeks_Video.mp4")
  
# Use the attributes
# and display
print("Title:" + video.title)
print("Artist: " + video.artist)
print("Genre:" + video.genre)
print("Year Released: " + video.year)
print("Bitrate:" + str(video.bitrate) + " kBits/s")
print("Composer: " + video.composer)
print("Filesize: " + str(video.filesize) + " bytes")
print("AlbumArtist: " + str(video.albumartist))
print("Duration: " + str(video.duration) + " seconds")
print("TrackTotal: " + str(video.track_total))


Output:

Title:GeeksForGeeks_Video
Artist: Neeraj Rana/GFG
Genre:Geek Video
Year Released: 2020
Bitrate:294651.393 kBits/s
Composer: GFG Video Team
Filesize: 511940 bytes
AlbumArtist: None
Duration: 1.8239333333333334 seconds
TrackTotal: None

If you come across any TypeError, you can use typecasting.

RELATED ARTICLES

Most Popular

Recent Comments