def test_save_multiple_padding(self): # we don't touch existing padding blocks on save, but will # replace them in the file with one at the end def num_padding(f): blocks = f.metadata_blocks return len([b for b in blocks if isinstance(b, Padding)]) num_blocks = num_padding(self.flac) self.assertEqual(num_blocks, 1) block = Padding() block.length = 42 self.flac.metadata_blocks.append(block) block = Padding() block.length = 24 self.flac.metadata_blocks.append(block) self.flac.save() self.assertEqual(num_padding(self.flac), num_blocks + 2) new = FLAC(self.flac.filename) self.assertEqual(num_padding(new), 1) self.assertTrue(isinstance(new.metadata_blocks[-1], Padding))
def get_header(self, filename=None): f = self.fileobj f.seek(0) self.__check_header(f) self.__offset = self.__find_audio_offset(f) data = bytearray(b'fLaC') for block in self.metadata_blocks: if isinstance(block, Padding): continue data += MetadataBlock._writeblock(block) padding = Padding() padding.length = 1020 data += MetadataBlock._writeblock(padding, is_last=True) return bytes(data)