use of de.danoeh.antennapod.core.util.comparator.ChapterStartTimeComparator in project AntennaPod by AntennaPod.
the class ChapterUtils method readID3ChaptersFromPlayableStreamUrl.
/**
* Uses the download URL of a media object of a feeditem to read its ID3
* chapters.
*/
public static void readID3ChaptersFromPlayableStreamUrl(Playable p) {
if (p != null && p.getStreamUrl() != null) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Reading id3 chapters from item " + p.getEpisodeTitle());
InputStream in = null;
try {
URL url = new URL(p.getStreamUrl());
ChapterReader reader = new ChapterReader();
in = url.openStream();
reader.readInputStream(in);
List<Chapter> chapters = reader.getChapters();
if (chapters != null) {
Collections.sort(chapters, new ChapterStartTimeComparator());
processChapters(chapters, p);
if (chaptersValid(chapters)) {
p.setChapters(chapters);
Log.i(TAG, "Chapters loaded");
} else {
Log.e(TAG, "Chapter data was invalid");
}
} else {
Log.i(TAG, "ChapterReader could not find any ID3 chapters");
}
} catch (IOException | ID3ReaderException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
Log.e(TAG, "Unable to read ID3 chapters: media or download URL was null");
}
}
use of de.danoeh.antennapod.core.util.comparator.ChapterStartTimeComparator in project AntennaPod by AntennaPod.
the class ChapterUtils method readOggChaptersFromInputStream.
private static void readOggChaptersFromInputStream(Playable p, InputStream input) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Trying to read chapters from item with title " + p.getEpisodeTitle());
try {
VorbisCommentChapterReader reader = new VorbisCommentChapterReader();
reader.readInputStream(input);
List<Chapter> chapters = reader.getChapters();
if (chapters != null) {
Collections.sort(chapters, new ChapterStartTimeComparator());
processChapters(chapters, p);
if (chaptersValid(chapters)) {
p.setChapters(chapters);
Log.i(TAG, "Chapters loaded");
} else {
Log.e(TAG, "Chapter data was invalid");
}
} else {
Log.i(TAG, "ChapterReader could not find any Ogg vorbis chapters");
}
} catch (VorbisCommentReaderException e) {
e.printStackTrace();
}
}
use of de.danoeh.antennapod.core.util.comparator.ChapterStartTimeComparator in project AntennaPod by AntennaPod.
the class ChapterUtils method readID3ChaptersFromPlayableFileUrl.
/**
* Uses the file URL of a media object of a feeditem to read its ID3
* chapters.
*/
public static void readID3ChaptersFromPlayableFileUrl(Playable p) {
if (p != null && p.localFileAvailable() && p.getLocalMediaUrl() != null) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Reading id3 chapters from item " + p.getEpisodeTitle());
File source = new File(p.getLocalMediaUrl());
if (source.exists()) {
ChapterReader reader = new ChapterReader();
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(source));
reader.readInputStream(in);
List<Chapter> chapters = reader.getChapters();
if (chapters != null) {
Collections.sort(chapters, new ChapterStartTimeComparator());
processChapters(chapters, p);
if (chaptersValid(chapters)) {
p.setChapters(chapters);
Log.i(TAG, "Chapters loaded");
} else {
Log.e(TAG, "Chapter data was invalid");
}
} else {
Log.i(TAG, "ChapterReader could not find any ID3 chapters");
}
} catch (IOException | ID3ReaderException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
Log.e(TAG, "Unable to read id3 chapters: Source doesn't exist");
}
}
}
Aggregations