def getTrack(file):
    """ Return a Track created from an APE file """
    track = FileTrack(file)
    mFile = MonkeysAudio(file)

    track.setLength(int(round(mFile.info.length)))

    try:    track.setNumber(int(mFile['Track'][0]))
    except: pass

    try:    track.setDate(int(mFile['Year'][0]))
    except: pass

    try:    track.setTitle(str(mFile['Title'][0]))
    except: pass

    try:    track.setAlbum(str(mFile['Album'][0]))
    except: pass

    try:    track.setArtist(str(mFile['Artist'][0]))
    except: pass

    try:    track.setGenre(str(mFile['Genre'][0]))
    except: pass

    return track
def getTrack(file):
    """ Return a Track created from a WavPack file """
    track  = FileTrack(file)
    wvFile = WavPack(file)

    track.setLength(int(round(wvFile.info.length)))

    try:    track.setTitle(str(wvFile['Title'][0]))
    except: pass

    try:    track.setAlbum(str(wvFile['Album'][0]))
    except: pass

    try:    track.setArtist(str(wvFile['Artist'][0]))
    except: pass

    try:    track.setAlbumArtist(str(wvFile['Album Artist'][0]))
    except: pass

    try:    track.setGenre(str(wvFile['genre'][0]))
    except: pass

    try:    track.setNumber(int(str(wvFile['Track'][0]).split('/')[0]))     # Track format may be 01/08, 02/08...
    except: pass

    try:    track.setDiscNumber(int(str(wvFile['Disc'][0]).split('/')[0]))  # Disc number format may be 01/02, 02/02...
    except: pass

    try:    track.setDate(int(wvFile['Year'][0]))
    except: pass

    return track
Exemple #3
0
def getTrack(file):
    """ Return a Track created from an Ogg Vorbis file """
    track   = FileTrack(file)
    oggFile = OggVorbis(file)

    track.setLength(int(round(oggFile.info.length)))

    try:    track.setTitle(str(oggFile['title'][0]))
    except: pass

    try:    track.setAlbum(str(oggFile['album'][0]))
    except: pass

    try:    track.setArtist(str(oggFile['artist'][0]))
    except: pass

    try:    track.setAlbumArtist(str(oggFile['albumartist'][0]))
    except: pass

    try:    track.setGenre(str(oggFile['genre'][0]))
    except: pass

    try:    track.setMBTrackId(str(oggFile['musicbrainz_trackid'][0]))
    except: pass

    try:    track.setNumber(int(str(oggFile['tracknumber'][0]).split('/')[0]))     # Track format may be 01/08, 02/08...
    except: pass

    try:    track.setDiscNumber(int(str(oggFile['discnumber'][0]).split('/')[0]))  # Disc number format may be 01/08, 02/08...
    except: pass

    try:    track.setDate(int(oggFile['date'][0]))
    except: pass

    return track
Exemple #4
0
def getTrack(file):
    """ Return a Track created from an mp4 file """
    track   = FileTrack(file)
    mp4File = MP4(file)

    track.setLength(int(round(mp4File.info.length)))

    try:    track.setNumber(int(mp4File['trkn'][0][0]))
    except: pass

    try:    track.setDiscNumber(int(mp4File['disk'][0][0]))
    except: pass

    try:    track.setDate(int(mp4File['\xa9day'][0][0]))
    except: pass

    try:    track.setTitle(str(mp4File['\xa9nam'][0]))
    except: pass

    try:    track.setAlbum(str(mp4File['\xa9alb'][0]))
    except: pass

    try:    track.setArtist(str(mp4File['\xa9ART'][0]))
    except: pass

    try:    track.setGenre(str(mp4File['\xa9gen'][0]))
    except: pass

    try:    track.setAlbumArtist(str(mp4File['aART'][0]))
    except: pass

    # TODO How to retrieve the MusicBrainz track id? I don't have a sample file at hand.

    return track
Exemple #5
0
def getTrack(file):
    """ Return a Track created from an mp3 file """
    track   = FileTrack(file)
    mp3File = MP3(file)

    track.setLength(int(round(mp3File.info.length)))

    try:
        id3 = ID3(file)
    except:
        return track

    try:    track.setTitle(str(id3['TIT2']))
    except: pass

    try:    track.setAlbum(str(id3['TALB']))
    except: pass

    try:    track.setArtist(str(id3['TPE1']))
    except: pass

    try:    track.setAlbumArtist(str(id3['TPE2']))
    except: pass

    try:    track.setMBTrackId(id3['UFID:http://musicbrainz.org'].data)
    except: pass

    try:    track.setGenre(str(id3['TCON']))
    except: pass

    try:    track.setNumber(int(str(id3['TRCK']).split('/')[0]))      # Track format may be 01/08, 02/08...
    except: pass

    try:    track.setDiscNumber(int(str(id3['TPOS']).split('/')[0]))  # Disc number format may be 01/08, 02/08...
    except: pass

    try:    track.setDate(int(id3['TDRC'][0].year))
    except: pass

    return track
def createFileTrack(file, bitrate, length, samplerate, isVBR, title=None, album=None, artist=None, albumArtist=None,
                        musicbrainzId=None, genre=None, trackNumber=None, date=None, discNumber=None):
    """ Create a new FileTrack object based on the given information """
    from media.track.fileTrack import FileTrack

    track = FileTrack(file)

    track.setLength(length)
    track.setBitrate(bitrate)
    track.setSampleRate(samplerate)

    if isVBR:
        track.setVariableBitrate()

    if title is not None:
        track.setTitle(title)

    if album is not None:
        track.setAlbum(album)

    if artist is not None:
        track.setArtist(artist)

    if albumArtist is not None:
        track.setAlbumArtist(albumArtist)

    if musicbrainzId is not None:
        track.setMBTrackId(musicbrainzId)

    if genre is not None:
        track.setGenre(genre)

    if date is not None:
        try:    track.setDate(int(date))
        except: pass

    # The format of the track number may be 'X' or 'X/Y'
    # We discard Y since we don't use this information
    if trackNumber is not None:
        try:    track.setNumber(int(trackNumber.split('/')[0]))
        except: pass

    # The format of the disc number may be 'X' or 'X/Y'
    # We discard the disc number when Y is less than 2
    if discNumber is not None:
        try:
            discNumber = discNumber.split('/')

            if len(discNumber) == 1 or int(discNumber[1]) > 1:
                track.setDiscNumber(int(discNumber[0]))
        except:
            pass

    return track
Exemple #7
0
def createFileTrack(file, bitrate, length, samplerate, isVBR, title=None, album=None, artist=None, albumArtist=None,
                        musicbrainzId=None, genre=None, trackNumber=None, date=None, discNumber=None):
    """ Create a new FileTrack object based on the given information """
    from media.track.fileTrack import FileTrack

    track = FileTrack(file)

    track.setLength(length)
    track.setBitrate(bitrate)
    track.setSampleRate(samplerate)

    if isVBR:
        track.setVariableBitrate()

    if title is not None:
        track.setTitle(title)

    if album is not None:
        track.setAlbum(album)

    if artist is not None:
        track.setArtist(artist)

    if albumArtist is not None:
        track.setAlbumArtist(albumArtist)

    if musicbrainzId is not None:
        track.setMBTrackId(musicbrainzId)

    if genre is not None:
        track.setGenre(genre)

    if date is not None:
        try:    track.setDate(int(date))
        except: pass

    # The format of the track number may be 'X' or 'X/Y'
    # We discard Y since we don't use this information
    if trackNumber is not None:
        try:    track.setNumber(int(trackNumber.split('/')[0]))
        except: pass

    # The format of the disc number may be 'X' or 'X/Y'
    # We discard the disc number when Y is less than 2
    if discNumber is not None:
        try:
            discNumber = discNumber.split('/')

            if len(discNumber) == 1 or int(discNumber[1]) > 1:
                track.setDiscNumber(int(discNumber[0]))
        except:
            pass

    return track
Exemple #8
0
def getTrack(file):
    """ Return a Track created from an mpc file """
    track   = FileTrack(file)
    mpcFile = Musepack(file)

    track.setLength(int(round(mpcFile.info.length)))

    try:    track.setNumber(int(str(mpcFile['Track'])))
    except: pass

    try:    track.setDiscNumber(int(str(mpcFile['Discnumber'])))
    except: pass

    try:    track.setDate(int(str(mpcFile['Year'])))
    except: pass

    try:    track.setTitle(str(mpcFile['Title']))
    except: pass

    try:    track.setGenre(str(mpcFile['Genre']))
    except: pass

    try:    track.setMBTrackId(str(mpcFile['MUSICBRAINZ_TRACKID']))
    except: pass

    try:    track.setAlbum(str(mpcFile['Album']))
    except: pass

    try:    track.setArtist(str(mpcFile['Artist']))
    except: pass

    try:    track.setAlbumArtist(str(mpcFile['Album Artist']))
    except: pass

    return track
Exemple #9
0
def getTrack(file):
    """ Return a Track created from an asf file """
    track = FileTrack(file)
    asfFile = ASF(file)

    track.setLength(int(round(asfFile.info.length)))

    try:
        track.setNumber(int(asfFile["WM/TrackNumber"][0]))
    except:
        pass

    try:
        track.setDiscNumber(int(asfFile["WM/PartOfSet"][0]))
    except:
        pass

    try:
        track.setDate(int(asfFile["WM/Year"][0]))
    except:
        pass

    try:
        track.setTitle(str(asfFile["Title"][0]))
    except:
        pass

    try:
        track.setAlbum(str(asfFile["WM/AlbumTitle"][0]))
    except:
        pass

    try:
        track.setArtist(str(asfFile["Author"][0]))
    except:
        pass

    try:
        track.setAlbumArtist(str(asfFile["WM/AlbumArtist"][0]))
    except:
        pass

    try:
        track.setGenre(str(asfFile["WM/Genre"][0]))
    except:
        pass

    try:
        track.setMBTrackId(str(asfFile["MusicBrainz/Track Id"][0]))
    except:
        pass

    return track