summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/util/id3reader/ChapterReader.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-06-09 10:51:59 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2013-06-09 10:51:59 +0200
commit02586d30262c7be62a6668500ceeaeb84e55f39b (patch)
tree552c3dac6334c02a1b0b12b2eeba40de29680f43 /src/de/danoeh/antennapod/util/id3reader/ChapterReader.java
parent7d0e34c0705f6bf03e4902153e8c6537c5bfaab2 (diff)
downloadAntennaPod-02586d30262c7be62a6668500ceeaeb84e55f39b.zip
Added support for Links in MP3 chapters (using WXXX frame)
Diffstat (limited to 'src/de/danoeh/antennapod/util/id3reader/ChapterReader.java')
-rw-r--r--src/de/danoeh/antennapod/util/id3reader/ChapterReader.java32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/de/danoeh/antennapod/util/id3reader/ChapterReader.java b/src/de/danoeh/antennapod/util/id3reader/ChapterReader.java
index e1cafe85d..a04763bcd 100644
--- a/src/de/danoeh/antennapod/util/id3reader/ChapterReader.java
+++ b/src/de/danoeh/antennapod/util/id3reader/ChapterReader.java
@@ -5,15 +5,20 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
+import android.util.Log;
+
+import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.feed.Chapter;
import de.danoeh.antennapod.feed.ID3Chapter;
import de.danoeh.antennapod.util.id3reader.model.FrameHeader;
import de.danoeh.antennapod.util.id3reader.model.TagHeader;
public class ChapterReader extends ID3Reader {
+ private static final String TAG = "ID3ChapterReader";
private static final String FRAME_ID_CHAPTER = "CHAP";
private static final String FRAME_ID_TITLE = "TIT2";
+ private static final String FRAME_ID_LINK = "WXXX";
private List<Chapter> chapters;
private ID3Chapter currentChapter;
@@ -33,27 +38,42 @@ public class ChapterReader extends ID3Reader {
if (currentChapter != null) {
if (!hasId3Chapter(currentChapter)) {
chapters.add(currentChapter);
- System.out.println("Found chapter: " + currentChapter);
+ if (AppConfig.DEBUG) Log.d(TAG, "Found chapter: " + currentChapter);
currentChapter = null;
}
}
- String elementId = readISOString(input, Integer.MAX_VALUE);
+ StringBuffer elementId = new StringBuffer();
+ readISOString(elementId, input, Integer.MAX_VALUE);
char[] startTimeSource = readBytes(input, 4);
long startTime = ((int) startTimeSource[0] << 24)
| ((int) startTimeSource[1] << 16)
| ((int) startTimeSource[2] << 8) | startTimeSource[3];
- currentChapter = new ID3Chapter(elementId, startTime);
+ currentChapter = new ID3Chapter(elementId.toString(), startTime);
skipBytes(input, 12);
return ID3Reader.ACTION_DONT_SKIP;
} else if (header.getId().equals(FRAME_ID_TITLE)) {
if (currentChapter != null && currentChapter.getTitle() == null) {
+ StringBuffer title = new StringBuffer();
+ readString(title, input, header.getSize());
currentChapter
- .setTitle(readString(input, header.getSize()));
- System.out.println("Found title: " + currentChapter.getTitle());
+ .setTitle(title.toString());
+ if (AppConfig.DEBUG) Log.d(TAG, "Found title: " + currentChapter.getTitle());
return ID3Reader.ACTION_DONT_SKIP;
}
- }
+ } else if (header.getId().equals(FRAME_ID_LINK)) {
+ if (currentChapter != null) {
+ // skip description
+ int descriptionLength = readString(null, input, header.getSize());
+ StringBuffer link = new StringBuffer();
+ readISOString(link, input, header.getSize() - descriptionLength);
+ currentChapter.setLink(link.toString());
+ if (AppConfig.DEBUG) Log.d(TAG, "Found link: " + currentChapter.getLink());
+ return ID3Reader.ACTION_DONT_SKIP;
+ }
+ } else if (header.getId().equals("APIC")) {
+ Log.d(TAG, header.toString());
+ }
return super.onStartFrameHeader(header, input);
}