package eu.svjatoslav.meviz.grabmemcard;
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
import eu.svjatoslav.commons.file.CommonPathResolver;
import eu.svjatoslav.commons.file.FilePathParser;
import eu.svjatoslav.meviz.Module;
import eu.svjatoslav.meviz.encoder.converters.AbstractConverter;
import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
public class Main implements Module {
- @Override
- public String getDescription() {
- return "Convenience helper to retrieve contents of inserted memory card.";
- }
+ @Override
+ public String getDescription() {
+ return "Convenience helper to retrieve contents of inserted memory card.";
+ }
- public File[] getDiskVideos(final File file) {
- final String videosPath = file.getAbsolutePath()
- + "/AVCHD/BDMV/STREAM/";
- final File videosDirectory = new File(videosPath);
+ public File[] getDiskVideos(final File file) {
+ final String videosPath = file.getAbsolutePath() + "/AVCHD/BDMV/STREAM/";
+ final File videosDirectory = new File(videosPath);
- if (!videosDirectory.exists())
- return new File[0];
+ if (!videosDirectory.exists())
+ return new File[0];
- return videosDirectory.listFiles();
- }
+ return videosDirectory.listFiles();
+ }
- public String getDoubleDigit(final int value) {
- String valueString = Integer.toString(value);
- if (valueString.length() == 1)
- valueString = "0" + valueString;
- return valueString;
- };
+ public String getDoubleDigit(final int value) {
+ String valueString = Integer.toString(value);
+ if (valueString.length() == 1)
+ valueString = "0" + valueString;
+ return valueString;
+ }
- @Override
- public String getModuleCommand() {
- return "grabmemcard";
- }
+ private EncodingOptions getEncodingOptions() {
+ final EncodingOptions options = new EncodingOptions();
+ options.setVideoBitrate(BitrateParameter.bitrate.COPY);
+ options.setAudioBitrate(BitrateParameter.bitrate.COPY);
+ return options;
+ }
- @SuppressWarnings("deprecation")
- public File getTargetDirectory() {
- final Date now = new Date();
- final GregorianCalendar calendar = new GregorianCalendar();
+ @Override
+ public String getModuleCommand() {
+ return "grabmemcard";
+ }
- final StringBuffer directoryName = new StringBuffer();
- directoryName.append(calendar.get(GregorianCalendar.YEAR) + "."
- + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
- + "."
- + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH))
- + " ");
+ @SuppressWarnings("deprecation")
+ public File getTargetDirectory() {
+ final Date now = new Date();
+ final GregorianCalendar calendar = new GregorianCalendar();
- directoryName.append(getDoubleDigit(now.getHours()) + ":"
- + getDoubleDigit(now.getMinutes()) + ":"
- + getDoubleDigit(now.getSeconds()));
+ String directoryName = (calendar.get(GregorianCalendar.YEAR) + "." + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
+ + "." + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH)) + " ") +
+ getDoubleDigit(now.getHours()) + ":" + getDoubleDigit(now.getMinutes()) + ":"
+ + getDoubleDigit(now.getSeconds());
- final String targetDirectoryPath = CommonPathResolver
- .getDesktopDirectory().getAbsolutePath()
- + "/"
- + directoryName.toString() + "/";
+ final String targetDirectoryPath = CommonPathResolver.getDesktopDirectory().getAbsolutePath() + "/"
+ + directoryName + "/";
- System.out.println("Target directory path: " + targetDirectoryPath);
+ System.out.println("Target directory path: " + targetDirectoryPath);
- return new File(targetDirectoryPath);
- }
+ return new File(targetDirectoryPath);
+ }
- @Override
- public void run(final String[] args) throws IOException {
+ private File getTargetFile(final File targetDirectory, final File sourceFile) {
+ // compute target file path
+ final StringBuilder targetFilePath = new StringBuilder();
+ targetFilePath.append(targetDirectory.getAbsolutePath());
+ targetFilePath.append("/");
+ targetFilePath.append(FilePathParser.getFileNameWithoutExtension(sourceFile));
+ targetFilePath.append(".mp4");
+ final File targetFile = new File(targetFilePath.toString());
+ return targetFile;
+ }
- final File targetDirectory = getTargetDirectory();
- targetDirectory.mkdirs();
+ @Override
+ public void run(final String[] args) throws IOException {
- final AbstractConverter converter = new AvconvVideo();
- final EncodingPlan encodingPlan = new EncodingPlan();
+ final File targetDirectory = getTargetDirectory();
+ targetDirectory.mkdirs();
- final String userName = System.getProperty("user.name");
+ final AbstractConverter converter = new AvconvVideo();
+ final EncodingPlan encodingPlan = new EncodingPlan();
- final File file = new File("/media/" + userName + "/");
+ final String userName = System.getProperty("user.name");
- for (final File insertedDisk : file.listFiles()) {
- final File[] diskVideos = getDiskVideos(insertedDisk);
+ final File file = new File("/media/" + userName + "/");
- for (final File sourceFile : diskVideos) {
+ for (final File insertedDisk : file.listFiles()) {
+ final File[] diskVideos = getDiskVideos(insertedDisk);
- // compute target file path
- final StringBuffer targetFilePath = new StringBuffer();
- targetFilePath.append(targetDirectory.getAbsolutePath());
- targetFilePath.append("/");
- targetFilePath.append(FilePathParser
- .getFileNameWithoutExtension(sourceFile));
- targetFilePath.append(".mp4");
- final File targetFile = new File(targetFilePath.toString());
+ for (final File sourceFile : diskVideos) {
- final EncodingTask encodingTask = new EncodingTask(sourceFile,
- targetFile, converter);
- encodingPlan.scheduleTask(encodingTask);
- }
- }
+ final File targetFile = getTargetFile(targetDirectory, sourceFile);
- final EncodingOptions options = new EncodingOptions();
- options.setVideoBitrate(BitrateParameter.bitrate.COPY);
+ final EncodingTask encodingTask = new EncodingTask(sourceFile, targetFile, converter, "mp4");
+ encodingTask.setUseTerminal(true);
+ encodingPlan.scheduleTask(encodingTask);
+ }
+ }
- encodingPlan.execute(options);
- }
+ encodingPlan.execute(getEncodingOptions());
+ }
- @Override
- public void showCommandlineHelp() {
- System.out.println("memory card grabber has no commandline options");
- }
+ @Override
+ public void showCommandlineHelp() {
+ System.out.println("memory card grabber has no commandline options");
+ }
}