Post-processing infrastructure * remove interfaces with one implementation * fix download resources with unknow length * marquee style for ProgressDrawable * "view details" option in mission context menu * notification for finished downloads * postprocessing infrastructure: sub-missions, circular file, layers for layers of abstractions for Java IO streams * Mp4 muxing (only DASH brand) * WebM muxing * Captions downloading * alert dialog for overwrite existing downloads finished or not. Misc changes * delete SQLiteDownloadDataSource.java * delete DownloadMissionSQLiteHelper.java * implement Localization from #114 Misc fixes (this branch) * restore old mission listeners variables. Prevents registered listeners get de-referenced on low-end devices * DownloadManagerService.checkForRunningMission() now return false if the mission has a error. * use Intent.FLAG_ACTIVITY_NEW_TASK when launching an activity from gigaget threads (apparently it is required in old versions of android) More changes * proper error handling "infrastructure" * queue instead of multiple downloads * move serialized pending downloads (.giga files) to app data * stop downloads when swicthing to mobile network (never works, see 2nd point) * save the thread count for next downloads * a lot of incoherences fixed * delete DownloadManagerTest.java (too many changes to keep this file updated)
49 lines
1.6 KiB
Java
49 lines
1.6 KiB
Java
package us.shandian.giga.postprocessing;
|
|
|
|
import org.schabi.newpipe.extractor.utils.io.SharpStream;
|
|
import org.schabi.newpipe.extractor.utils.SubtitleConverter;
|
|
|
|
import java.io.IOException;
|
|
|
|
import us.shandian.giga.get.DownloadMission;
|
|
import us.shandian.giga.postprocessing.io.SharpInputStream;
|
|
/**
|
|
* @author kapodamy
|
|
*/
|
|
class TttmlConverter extends Postprocessing {
|
|
|
|
TttmlConverter(DownloadMission mission) {
|
|
super(mission);
|
|
recommendedReserve = 0;// due how XmlPullParser works, the xml is fully loaded on the ram
|
|
worksOnSameFile = true;
|
|
}
|
|
|
|
@Override
|
|
int process(SharpStream out, SharpStream... sources) throws IOException {
|
|
// check if the subtitle is already in srt and copy, this should never happen
|
|
String format = getArgumentAt(0, null);
|
|
|
|
if (format == null || format.equals("ttml")) {
|
|
SubtitleConverter ttmlDumper = new SubtitleConverter();
|
|
|
|
int res = ttmlDumper.dumpTTML(
|
|
sources[0],
|
|
out,
|
|
getArgumentAt(1, "true").equals("true"),
|
|
getArgumentAt(2, "true").equals("true")
|
|
);
|
|
|
|
return res == 0 ? OK_RESULT : res;
|
|
} else if (format.equals("srt")) {
|
|
byte[] buffer = new byte[8 * 1024];
|
|
int read;
|
|
while ((read = sources[0].read(buffer)) > 0) {
|
|
out.write(buffer, 0, read);
|
|
}
|
|
return OK_RESULT;
|
|
}
|
|
|
|
throw new UnsupportedOperationException("Can't convert this subtitle, unimplemented format: " + format);
|
|
}
|
|
|
|
}
|