package com.javaeasy.subtitleextractor;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.javaeasy.fileiterator.FileSysIterator;
import com.javaeasy.fileiterator.ProcessFileSysItemIF;
public class SubtitleExtractorMain implements ProcessFileSysItemIF {
public static void main(String[] args) {
List<ProcessFileSysItemIF> list = new ArrayList<ProcessFileSysItemIF>();
list.add(new SubtitleExtractorMain());
FileSysIterator.createInstance(list).runFileIterator();
}
int fileProcessedInFolder = 0;
@Override
public void initProcessor(File root) {
}
@Override
public String[] getProcessFileExtentions() {
return new String[] { "mkv" };
}
@Override
public String[] getProcessFileNames() {
return null;
}
@Override
public void preProcessFolder(File folder) {
fileProcessedInFolder = 0;
}
@Override
public void postProcessFolder(File folder) {
System.out.println(folder.getName() + ":" + fileProcessedInFolder);
}
@Override
public void preProcessFile(File file) {
}
@Override
public void processFile(File file) {
String filePath = file.getAbsolutePath();
String filename = filePath.substring(0, filePath.lastIndexOf('.'));
try {
Process process = Runtime.getRuntime().exec(
"\"C:\\Program Files\\MKVToolNix\\mkvextract.exe\" --ui-language en tracks \""
+ filePath + "\" 2:\"" + filename + ".chs.srt\" 3:\"" + filename
+ ".eng.srt\"");
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (br.readLine() != null) {
}
br.close();
process.destroy();
} catch (IOException e) {
e.printStackTrace();
}
fileProcessedInFolder++;
}
@Override
public void postProcessFile(File file) {
}
@Override
public void done() {
System.out.println("Finished");
}
}