Updated copyright message.
[meviz.git] / src / main / java / eu / svjatoslav / meviz / grabmemcard / Main.java
index 101cc3f..e220e3e 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * Meviz - Various tools collection to work with multimedia.
- * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ * Copyright (C) 2012 -- 2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 2 of the GNU General Public License
  * as published by the Free Software Foundation.
@@ -9,11 +9,6 @@
 
 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;
@@ -22,108 +17,109 @@ import eu.svjatoslav.meviz.encoder.EncodingOptions;
 import eu.svjatoslav.meviz.encoder.EncodingPlan;
 import eu.svjatoslav.meviz.encoder.EncodingTask;
 import eu.svjatoslav.meviz.encoder.converters.AbstractConverter;
-import eu.svjatoslav.meviz.encoder.converters.Ffmpeg;
+import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
 
-public class Main implements Module {
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.GregorianCalendar;
 
-       @Override
-       public String getDescription() {
-               return "Convenience helper to retrieve contents of inserted memory card.";
-       }
+public class Main implements Module {
 
-       public File[] getDiskVideos(final File file) {
-               final String videosPath = file.getAbsolutePath()
-                               + "/AVCHD/BDMV/STREAM/";
-               final File videosDirectory = new File(videosPath);
+    @Override
+    public String getDescription() {
+        return "Convenience helper to retrieve contents of inserted memory card.";
+    }
 
-               if (!videosDirectory.exists())
-                       return new File[0];
+    private File[] getDiskVideos(final File file) {
+        final String videosPath = file.getAbsolutePath() + "/AVCHD/BDMV/STREAM/";
+        final File videosDirectory = new File(videosPath);
 
-               return videosDirectory.listFiles();
-       }
+        if (!videosDirectory.exists())
+            return new File[0];
 
-       public String getDoubleDigit(final int value) {
-               String valueString = Integer.toString(value);
-               if (valueString.length() == 1)
-                       valueString = "0" + valueString;
-               return valueString;
-       };
+        return videosDirectory.listFiles();
+    }
 
-       @Override
-       public String getModuleCommand() {
-               return "grabmemcard";
-       }
+    private String getDoubleDigit(final int value) {
+        String valueString = Integer.toString(value);
+        if (valueString.length() == 1)
+            valueString = "0" + valueString;
+        return valueString;
+    }
 
-       @SuppressWarnings("deprecation")
-       public File getTargetDirectory() {
-               final Date now = new Date();
-               final GregorianCalendar calendar = new GregorianCalendar();
+    private EncodingOptions getEncodingOptions() {
+        final EncodingOptions options = new EncodingOptions();
+        options.setVideoBitrate(BitrateParameter.Bitrate.COPY);
+        options.setAudioBitrate(BitrateParameter.Bitrate.COPY);
+        return options;
+    }
 
-               final StringBuffer directoryName = new StringBuffer();
-               directoryName.append(calendar.get(GregorianCalendar.YEAR) + "."
-                               + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
-                               + "."
-                               + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH))
-                               + " ");
+    @Override
+    public String getModuleCommand() {
+        return "grabmemcard";
+    }
 
-               directoryName.append(getDoubleDigit(now.getHours()) + ":"
-                               + getDoubleDigit(now.getMinutes()) + ":"
-                               + getDoubleDigit(now.getSeconds()));
+    @SuppressWarnings("deprecation")
+    private File getTargetDirectory() {
+        final Date now = new Date();
+        final GregorianCalendar calendar = new GregorianCalendar();
 
-               final String targetDirectoryPath = CommonPathResolver
-                               .getDesktopDirectory().getAbsolutePath()
-                               + "/"
-                               + directoryName.toString() + "/";
+        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());
 
-               System.out.println("Target directory path: " + targetDirectoryPath);
+        final String targetDirectoryPath = CommonPathResolver.getDesktopDirectory().getAbsolutePath() + "/"
+                + directoryName + "/";
 
-               return new File(targetDirectoryPath);
-       }
+        System.out.println("Target directory path: " + targetDirectoryPath);
 
-       @Override
-       public void run(final String[] args) throws IOException {
+        return new File(targetDirectoryPath);
+    }
 
-               final File targetDirectory = getTargetDirectory();
-               targetDirectory.mkdirs();
+    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");
+        return new File(targetFilePath.toString());
+    }
 
-               final AbstractConverter converter = new Ffmpeg();
-               final EncodingPlan encodingPlan = new EncodingPlan();
+    @Override
+    public void run(final String[] args) throws IOException {
 
-               final String userName = System.getProperty("user.name");
+        final File targetDirectory = getTargetDirectory();
+        targetDirectory.mkdirs();
 
-               // final File file = new File("/media/" + userName + "/");
+        final AbstractConverter converter = new AvconvVideo();
+        final EncodingPlan encodingPlan = new EncodingPlan();
 
-               final File file = new File("/media/");
+        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.videoBitrate = 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");
+    }
 
 }