# Getting Started

The `File` functions takes any audio file, guesses its type and returns a `FileType` instance or `None`.

    >>> import mutagen
    >>> mutagen.File("11. The Way It Is.ogg")
    {'album': [u'Always Outnumbered, Never Outgunned'],
     'title': [u'The Way It Is'], 'artist': [u'The Prodigy'],
     'tracktotal': [u'12'], 'albumartist': [u'The Prodigy'],'date': [u'2004'],
     'tracknumber': [u'11'],
    >>> _.info.pprint()
    u'Ogg Vorbis, 346.43 seconds, 499821 bps'
    >>>

The following code loads a FLAC file, sets its title, prints all tag data, then saves the file.

    from mutagen.flac import FLAC

    audio = FLAC("example.flac")
    audio["title"] = u"An example"
    audio.pprint()
    audio.save()

The following example gets the length and bitrate of an MP3 file.

    from mutagen.mp3 import MP3

    audio = MP3("example.mp3")
    print(audio.info.length)
    print(audio.info.bitrate)

The following deletes an ID3 tag from an MP3 file.

    from mutagen.id3 import ID3

    audio = ID3("example.mp3")
    audio.delete()

Here we parse a Vorbis file as FLAC, which leads to an `MutagenError` being raised.

    >>> import mutagen.flac
    >>> mutagen.flac.FLAC("11. The Way It Is.ogg")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/dist-packages/mutagen/_file.py", line 42, in __init__
        self.load(filename, *args, **kwargs)
      File "/usr/lib/python2.7/dist-packages/mutagen/flac.py", line 759, in load
        self.__check_header(fileobj)
      File "/usr/lib/python2.7/dist-packages/mutagen/flac.py", line 867, in __check_header
        "%r is not a valid FLAC file" % fileobj.name)
    mutagen.flac.FLACNoHeaderError: '11. The Way It Is.ogg' is not a valid FLAC file

## Unicode

Mutagen has full Unicode support for all formats. When you assign text strings, we strongly recommend using Python unicode objects rather than str objects. If you use str objects, Mutagen will assume they are in UTF-8. (This does not apply to filenames.)

## Multiple Values

Most tag formats support multiple values for each key, so when you access them (e.g. `audio["title"]`) you will get a list of strings rather than a single one (`[u"An example"]` rather than `u"An example"`). Similarly, you can assign a list of strings rather than a single one.