Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _parse_frame(self, fh, is_v22=False):
encoding = 'ISO-8859-1' # default encoding used in most mp3 tags
# ID3v2.2 especially ugly. see: http://id3.org/id3v2-00
frame_header_size = 6 if is_v22 else 10
frame_size_bytes = 3 if is_v22 else 4
binformat = '3s3B' if is_v22 else '4s4B2B'
frame_header_data = fh.read(frame_header_size)
if len(frame_header_data) == 0:
return 0
frame = struct.unpack(binformat, frame_header_data)
frame_id = self._decode_string(frame[0])
frame_size = self._calc_size_7bit_bytes(frame[1:1+frame_size_bytes])
if frame_size > 0:
# flags = frame[1+frame_size_bytes:] # dont care about flags.
content = fh.read(frame_size)
fieldname = ID3.FID_TO_FIELD.get(frame_id)
if fieldname:
if fieldname == 'track':
self._parse_track(content)
else:
self._set_field(fieldname, content, self._decode_string)
return frame_size
return 0