Exemple #1
0
			def __read_metadata_block(self, file):
				byte = ord(file.read(1))
				size = to_int_be(file.read(3))
				try:
						data = file.read(size)
						if len(data) != size:
								raise error(
										"file said %d bytes, read %d bytes" % (size, len(data)))
						block = self.METADATA_BLOCKS[byte & 0x7F](data)
				except (IndexError, TypeError):
						block = MetadataBlock(data)
						block.code = byte & 0x7F
						self.metadata_blocks.append(block)
				else:
						self.metadata_blocks.append(block)
						if block.code == VCFLACDict.code:
								if self.tags is None: self.tags = block
								else: raise FLACVorbisError("> 1 Vorbis comment block found")
						elif block.code == CueSheet.code:
								if self.cuesheet is None: self.cuesheet = block
								else: raise error("> 1 CueSheet block found")
						elif block.code == SeekTable.code:
								if self.seektable is None: self.seektable = block
								else: raise error("> 1 SeekTable block found")
				return (byte >> 7) ^ 1
Exemple #2
0
 def test_group_padding(self):
     blocks = [Padding(b"\x00" * 20), Padding(b"\x00" * 30),
               MetadataBlock(b"foobar")]
     blocks[-1].code = 0
     length1 = len(MetadataBlock.writeblocks(blocks))
     MetadataBlock.group_padding(blocks)
     length2 = len(MetadataBlock.writeblocks(blocks))
     self.failUnlessEqual(length1, length2)
     self.failUnlessEqual(len(blocks), 2)
Exemple #3
0
 def test_change(self):
     b = MetadataBlock(b"foobar")
     b.data = b"quux"
     self.failUnlessEqual(b.write(), b"quux")
Exemple #4
0
 def test_not_empty(self):
     self.failUnlessEqual(MetadataBlock(b"foobar").write(), b"foobar")
Exemple #5
0
 def test_save_unknown_block(self):
     block = MetadataBlock(b"test block data")
     block.code = 99
     self.flac.metadata_blocks.append(block)
     self.flac.save()
Exemple #6
0
 def test_empty(self):
     self.failUnlessEqual(MetadataBlock("").write(), "")