Пример #1
0
 def _header_flag_and_extra_bytes(self, int_write_type, uncompressed_size):
     """Returns the flag bytes (if any) along with any extra bytes those
        flags require."""
     buf = bytes()
     extra_header_bytes = 0 #extra bytes added from flags
     #Version 2 has no header flags to parse
     if self.version == 3:
         flags = self.tag_alter_discard << 7
         flags += self.file_alter_discard << 6
         flags += self.read_only << 5
         buf += bytes([flags,])
         flags = self.compressed_flag << 7
         flags += self.encrypted_flag << 6
         flags += self.group_flag << 5
         buf += bytes([flags,])
         if self.compressed_flag:
             buf += int_write_type(uncompressed_size, 4)
             extra_header_bytes += 4
         if self.encrypted_flag:
             buf += int_write_type(self.encryption, 1)
             extra_header_bytes += 1
         if self.group_flag:
             buf += int_write_type(self.group, 1)
             extra_header_bytes +=1
     elif self.version == 4:
         flags = self.tag_alter_discard << 6
         flags += self.file_alter_discard << 5
         flags += self.read_only << 4
         buf += bytes([flags,])
         flags = self.group_flag << 6
         flags += self.compressed_flag << 3
         flags += self.encrypted_flag << 2
         flags += self.unsync_flag << 1
         flags += self.data_length_flag
         buf += bytes([flags,])
         if self.group_flag:
             buf += id3v2common.write_normal(self.group, 1)
             extra_header_bytes += 1
         if self.encrypted_flag:
             buf += id3v2common.write_normal(self.encryption, 1)
             extra_header_bytes += 1
         if self.data_length_flag:
             buf += int_write_type(len(self.data), 4)
             extra_header_bytes += 4
     return extra_header_bytes, buf
Пример #2
0
 def test_short_02_write(self):
     self.assertEqual(id3v2common.write_normal(511, 2), bytes([1,255]), "failed to convert an int to non-syncsafed bytes")
     self.assertEqual(id3v2common.write_syncsafe(511, 2), bytes([3,127]), "failed to convert an int to syncsafed bytes")
     self.assertRaises(ValueError, id3v2common.write_syncsafe, 511, 1)