From ce8e356647734509388adef15338e535a714d90c Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 6 Mar 2022 17:43:39 +0100 Subject: Extract shownotes from id3 comment field --- .../parser/media/id3/Id3MetadataReader.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 parser/media/src/main/java/de/danoeh/antennapod/parser/media/id3/Id3MetadataReader.java (limited to 'parser/media') diff --git a/parser/media/src/main/java/de/danoeh/antennapod/parser/media/id3/Id3MetadataReader.java b/parser/media/src/main/java/de/danoeh/antennapod/parser/media/id3/Id3MetadataReader.java new file mode 100644 index 000000000..e6cc67ee8 --- /dev/null +++ b/parser/media/src/main/java/de/danoeh/antennapod/parser/media/id3/Id3MetadataReader.java @@ -0,0 +1,39 @@ +package de.danoeh.antennapod.parser.media.id3; + +import androidx.annotation.NonNull; +import de.danoeh.antennapod.parser.media.id3.model.FrameHeader; +import org.apache.commons.io.input.CountingInputStream; + +import java.io.IOException; + +/** + * Reads general ID3 metadata like comment, which Android's MediaMetadataReceiver does not support. + */ +public class Id3MetadataReader extends ID3Reader { + public static final String FRAME_ID_COMMENT = "COMM"; + + private String comment = null; + + public Id3MetadataReader(CountingInputStream input) { + super(input); + } + + @Override + protected void readFrame(@NonNull FrameHeader frameHeader) throws IOException, ID3ReaderException { + if (FRAME_ID_COMMENT.equals(frameHeader.getId())) { + long frameStart = getPosition(); + int encoding = readByte(); + skipBytes(3); // Language + String shortDescription = readEncodedString(encoding, frameHeader.getSize() - 4); + String longDescription = readEncodedString(encoding, + (int) (frameHeader.getSize() - (getPosition() - frameStart))); + comment = shortDescription.length() > longDescription.length() ? shortDescription : longDescription; + } else { + super.readFrame(frameHeader); + } + } + + public String getComment() { + return comment; + } +} -- cgit v1.2.3