Ejemplo n.º 1
0
    def from_tracks(cls, tracks):
        """given a sorted list of AudioFile objects,
        returns DiscID for those tracks as if they were a CD"""

        from audiotools import has_pre_gap_track
        from audiotools.freedb import DiscID as FDiscID

        if not has_pre_gap_track(tracks):
            offsets = [0]
            for track in tracks[0:-1]:
                offsets.append(offsets[-1] + track.cd_frames())

            return cls(track_numbers=range(1,
                                           len(tracks) + 1),
                       track_offsets=offsets,
                       lead_out_offset=sum(t.cd_frames() for t in tracks),
                       freedb_disc_id=FDiscID.from_tracks(tracks))
        else:
            offsets = [tracks[0].cd_frames()]
            for track in tracks[1:-1]:
                offsets.append(offsets[-1] + track.cd_frames())

            return cls(track_numbers=range(1, len(tracks)),
                       track_offsets=offsets,
                       lead_out_offset=sum(t.cd_frames() for t in tracks),
                       freedb_disc_id=FDiscID.from_tracks(tracks))
    def from_tracks(cls, tracks):
        """given a sorted list of AudioFile objects,
        returns DiscID for those tracks as if they were a CD"""

        from audiotools import has_pre_gap_track
        from audiotools.freedb import DiscID as FDiscID

        if not has_pre_gap_track(tracks):
            offsets = [0]
            for track in tracks[0:-1]:
                offsets.append(offsets[-1] + track.cd_frames())

            return cls(track_numbers=range(1, len(tracks) + 1),
                       track_offsets=offsets,
                       lead_out_offset=sum(t.cd_frames() for t in tracks),
                       freedb_disc_id=FDiscID.from_tracks(tracks))
        else:
            offsets = [tracks[0].cd_frames()]
            for track in tracks[1:-1]:
                offsets.append(offsets[-1] + track.cd_frames())

            return cls(track_numbers=range(1, len(tracks)),
                       track_offsets=offsets,
                       lead_out_offset=sum(t.cd_frames() for t in tracks),
                       freedb_disc_id=FDiscID.from_tracks(tracks))
    def from_cddareader(cls, cddareader):
        """given a CDDAReader object, returns a DiscID for that object"""

        from audiotools.freedb import DiscID as FDiscID

        offsets = cddareader.track_offsets
        return cls(track_numbers=list(sorted(offsets.keys())),
                   track_offsets=[(offsets[k] // 588) for k in
                                  sorted(offsets.keys())],
                   lead_out_offset=cddareader.last_sector + 1,
                   freedb_disc_id=FDiscID.from_cddareader(cddareader))
Ejemplo n.º 4
0
    def from_cddareader(cls, cddareader):
        """given a CDDAReader object, returns a DiscID for that object"""

        from audiotools.freedb import DiscID as FDiscID

        offsets = cddareader.track_offsets
        return cls(track_numbers=list(sorted(offsets.keys())),
                   track_offsets=[(offsets[k] // 588)
                                  for k in sorted(offsets.keys())],
                   lead_out_offset=cddareader.last_sector + 1,
                   freedb_disc_id=FDiscID.from_cddareader(cddareader))
Ejemplo n.º 5
0
    def freedb_disc_id(self):
        """returns a FreeDB DiscID object"""

        from audiotools.freedb import DiscID

        PTS_PER_FRAME = DVDAudio.PTS_PER_SECOND // 75

        offsets = [150]
        for track in self.tracks[0:-1]:
            offsets.append(offsets[-1] + (track.pts_length // PTS_PER_FRAME))

        return DiscID(offsets=offsets,
                      total_length=self.pts_length // DVDAudio.PTS_PER_SECOND,
                      track_count=len(self))
    def from_sheet(cls, sheet, total_pcm_frames, sample_rate):
        """given a Sheet object
        length of the album in PCM frames
        and sample rate of the disc,
        returns a DiscID for that CD"""

        from audiotools.freedb import DiscID as FDiscID

        return cls(track_numbers=range(1, len(sheet) + 1),
                   track_offsets=[(int(t.index(1).offset() * 75))
                                  for t in sheet],
                   lead_out_offset=total_pcm_frames * 75 // sample_rate,
                   freedb_disc_id=FDiscID.from_sheet(sheet,
                                                     total_pcm_frames,
                                                     sample_rate))
Ejemplo n.º 7
0
    def from_sheet(cls, sheet, total_pcm_frames, sample_rate):
        """given a Sheet object
        length of the album in PCM frames
        and sample rate of the disc,
        returns a DiscID for that CD"""

        from audiotools.freedb import DiscID as FDiscID

        return cls(track_numbers=range(1,
                                       len(sheet) + 1),
                   track_offsets=[(int(t.index(1).offset() * 75))
                                  for t in sheet],
                   lead_out_offset=total_pcm_frames * 75 // sample_rate,
                   freedb_disc_id=FDiscID.from_sheet(sheet, total_pcm_frames,
                                                     sample_rate))
Ejemplo n.º 8
0
    def musicbrainz_disc_id(self):
        """returns a MusicBrainz DiscID object"""

        from audiotools.musicbrainz import DiscID

        PTS_PER_FRAME = DVDAudio.PTS_PER_SECOND // 75

        offsets = [150]
        for track in self.tracks[0:-1]:
            offsets.append(offsets[-1] + (track.pts_length // PTS_PER_FRAME))

        return DiscID(first_track_number=1,
                      last_track_number=len(self),
                      lead_out_offset=self.pts_length // PTS_PER_FRAME,
                      offsets=offsets)