OSDN Git Service

Converterのコンストラクタ引数に指定するのはURLでなく動画IDとする.
authoryukihane <yukihane.feather@gmail.com>
Sat, 20 Aug 2011 00:23:36 +0000 (09:23 +0900)
committeryukihane <yukihane.feather@gmail.com>
Sat, 20 Aug 2011 00:37:28 +0000 (09:37 +0900)
frontend/src/saccubus/MainFrame.java
frontend/src/saccubus/converter/Converter.java
frontend/src/saccubus/prompt/Prompt.java
frontend/src/yukihane/Util.java

index 40f5213..d50d5d4 100644 (file)
@@ -59,6 +59,7 @@ import saccubus.properties.OutputVideoSetting;
 import saccubus.util.FileDropTarget;
 import saccubus.util.PopupRightClick;
 import saccubus.util.WayBackTimeParser;
+import yukihane.Util;
 import yukihane.nicovideo.NicoDBFinder;
 
 /**
@@ -929,6 +930,7 @@ public class MainFrame extends JFrame {
                 if (info != null) {
                     url = info.getNicoId();
                 } else {
+                    // TODO これはダメ…だけどそのうちこの処理自体削除になる
                     url = "";
                 }
             } catch (Exception ex) {
@@ -969,7 +971,8 @@ public class MainFrame extends JFrame {
             }
         };
 
-        Converter = new Converter(url, getSetting().toProfile(), sl,
+        final String id = Util.getVideoId(url);
+        Converter = new Converter(id, getSetting().toProfile(), sl,
                 new ConvertStopFlag(scl));
         doButton.setText(DoButtonStopString);
         FutureTask<Boolean> task = new FutureTask<Boolean>(Converter);
index 84c934f..e0847f3 100644 (file)
@@ -3,8 +3,6 @@ package saccubus.converter;
 import java.io.File;
 import java.io.IOException;
 import java.util.concurrent.Callable;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 import saccubus.ConvertStopFlag;
 import saccubus.converter.filegetter.FileInstanciator;
 import saccubus.net.TextProgressListener;
@@ -30,27 +28,16 @@ public class Converter extends AbstractCommand implements Callable<Boolean> {
 
     /**
      * コンバータを構築します.
-     * @param url 対象となる動画のURL.
+     * @param id 対象となる動画のID.
      * @param time
      * @param profile
      * @param listener
      * @param flag
      */
-    public Converter(String url, Profile profile,
+    public Converter(String id, Profile profile,
             TextProgressListener listener, ConvertStopFlag flag) {
         super(listener, flag);
-
-        // TODO 入力欄の値から動画IDの切り出しはGUI側でやるべきだろう
-        final int startIdIdx = url.lastIndexOf("/") + 1;
-        final String altId = url.substring(startIdIdx);
-        final Pattern idPattern = Pattern.compile("([a-z]*\\d+)");
-        final Matcher idMatcher = idPattern.matcher(altId);
-        if (idMatcher.find()) {
-            this.movieId = idMatcher.group(1);
-        } else {
-            throw new IllegalArgumentException("URL/IDの指定が不正です: " + url);
-        }
-
+        this.movieId = id;
         this.profile = profile;
     }
 
index e969693..ab08d42 100644 (file)
@@ -79,7 +79,7 @@ public class Prompt {
             throw new IOException(e);
         }
 
-        Converter conv = new Converter("dummy", profile, tpl, new ConvertStopFlag(scl));
+        Converter conv = new Converter("dummy0", profile, tpl, new ConvertStopFlag(scl));
         ExecutorService es = Executors.newSingleThreadExecutor();
         Future<Boolean> future = es.submit((Callable<Boolean>) conv);
         try {
index 6c8175c..bb678fd 100644 (file)
@@ -1,11 +1,18 @@
 /* $Id$ */
 package yukihane;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * nicobrowser.util.Utilより, 必要なものをピックアップしたクラス.
+ * その後増えました.
  * @author yuki
  */
-public class Util {
+public final class Util {
+
+    private Util() {
+    }
 
     /**
      * Content-Type から拡張子を決定する.
@@ -22,4 +29,16 @@ public class Util {
         }
         return contentType.split("/")[1];
     }
+
+    public static String getVideoId(final String alterId) {
+        final int startIdIdx = alterId.lastIndexOf("/") + 1;
+        final String altId = alterId.substring(startIdIdx);
+        final Pattern idPattern = Pattern.compile("([a-z]*\\d+)");
+        final Matcher idMatcher = idPattern.matcher(altId);
+        if (!idMatcher.find()) {
+            throw new IllegalArgumentException("URL/IDの指定が不正です: " + alterId);
+        }
+
+        return idMatcher.group(1);
+    }
 }