OSDN Git Service

一旦コミット
authoryukihane <yukihane.feather@gmail.com>
Sat, 20 Aug 2011 02:35:31 +0000 (11:35 +0900)
committeryukihane <yukihane.feather@gmail.com>
Sat, 20 Aug 2011 02:35:31 +0000 (11:35 +0900)
frontend/src/saccubus/converter/Converter.java
frontend/src/saccubus/converter/FfmpegCommand.java
frontend/src/saccubus/converter/classic/profile/InputFileSetting.java
frontend/src/yukihane/inqubus/saccubus_adapter/NicoBrowserAdapter.java
frontend/src/yukihane/saccubus/converter/profile/CommentProfile.java
frontend/src/yukihane/saccubus/converter/profile/VideoProfile.java

index 04c12bf..48a827d 100644 (file)
@@ -2,12 +2,27 @@ package saccubus.converter;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.concurrent.Callable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import nicobrowser.GetFlvResult;
+import nicobrowser.NamePattern;
+import nicobrowser.NicoHttpClient;
+import nicobrowser.ProgressListener;
+import nicobrowser.WayBackInfo;
+import nicobrowser.entity.NicoContent.Status;
 import saccubus.ConvertStopFlag;
 import saccubus.converter.filegetter.FileInstanciator;
+import saccubus.net.CommentInfo;
 import saccubus.net.TextProgressListener;
+import yukihane.inqubus.saccubus_adapter.NicoBrowserAdapter;
+import yukihane.saccubus.converter.profile.CommentProfile;
 import yukihane.saccubus.converter.profile.FfmpegOption;
+import yukihane.saccubus.converter.profile.LoinProfile;
 import yukihane.saccubus.converter.profile.Profile;
+import yukihane.saccubus.converter.profile.ProxyProfile;
+import yukihane.saccubus.converter.profile.VideoProfile;
 
 /**
  * <p>タイトル: さきゅばす</p>
@@ -63,7 +78,7 @@ public class Converter extends AbstractCommand implements Callable<Boolean> {
         }
     }
 
-    private boolean runConvert() throws IOException, InterruptedException {
+    private boolean runConvert() throws IOException, InterruptedException, Exception {
         if (!shouldRun(profile)) {
             sendText("何もすることがありません");
             return true;
@@ -72,21 +87,54 @@ public class Converter extends AbstractCommand implements Callable<Boolean> {
         validSetting();
         final FfmpegOption ov = profile.getFfmpeg().getFfmpegOption();
 
+        // TODO ログインしないで良い場合もある.
         sendText("ログイン中");
 
-        final FileInstanciator fi = createInstanciator();
-
-        stopFlagReturn();
+        final NicoHttpClient client = createClient(profile.getProxySetting());
+        final boolean hasLogin;
+        try {
+            hasLogin = client.login(profile.getLoginInfo().getMail(), profile.getLoginInfo().getPass());
+            if (!hasLogin) {
+                throw new IOException("login fail");
+            }
+        } catch (URISyntaxException ex) {
+            throw new IOException("login fail", ex);
+        }
+        final nicobrowser.VideoInfo vi = client.getVideoInfo(movieId);
 
-        File commentFile = fi.getCommentFile(getListener());
+//        final FileInstanciator fi = createInstanciator();
 
         stopFlagReturn();
 
-        File tcommFile = fi.getTcommFile(getListener());
+        WayBackInfo wbi = null;
+        if (profile.getCommentSetting().getBackLogPoint() >= 0L) {
+            final String key = client.getWayBackKey(vi);
+            wbi = new WayBackInfo(key, profile.getCommentSetting().getBackLogPoint());
+        }
+
+        File commentFile = client.getCommentFile(vi, profile.getCommentSetting().getFile().getPath(), wbi, profile.
+                getCommentSetting().getBackComment(), profile.getCommentSetting().isReduceComment());
 
         stopFlagReturn();
+        //        File tcommFile = fi.getTcommFile(getListener());
+        //
+        //        stopFlagReturn();
+        //        final File videoFile = getVideoFile(client, getListener(), profile.getVideoSetting());
+        GetFlvResult vf = client.getFlvFile(vi, profile.getVideoSetting().getDir(), new NamePattern("test", "_", "_",
+                "title"), Status.GET_INFO, true, new ProgressListener() {
+
+            @Override
+            public void progress(long fileSize, long downloadSize) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
 
-        final File videoFile = fi.getVideoFile(getListener());
+            @Override
+            public boolean getCancel() {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+        });
+
+        final File videoFile = vf.getFile();
 
         if (!profile.getOutputFileSetting().isConvert()) {
             sendText("動画・コメントを保存し、変換は行いませんでした。");
@@ -105,54 +153,54 @@ public class Converter extends AbstractCommand implements Callable<Boolean> {
             commentFile = null;
         }
 
-        if (profile.getOutputFileSetting().isAddTcomment()) {
-            if (!tcommFile.isFile()) {
-                throw new IOException("入力投稿者コメントファイルが存在しません" + tcommFile.getPath());
-            }
-        } else {
-            tcommFile = null;
-        }
+//        if (profile.getOutputFileSetting().isAddTcomment()) {
+//            if (!tcommFile.isFile()) {
+//                throw new IOException("入力投稿者コメントファイルが存在しません" + tcommFile.getPath());
+//            }
+//        } else {
+//            tcommFile = null;
+//        }
 
         /*ビデオ名の確定*/
-        File convertedVideoFile;
-        if (!profile.getOutputFileSetting().getFile().isFile()) {
-            String conv_name = fi.getVideoTitle();
-            if (profile.getOutputFileSetting().isAppendPrefixVideoId()) {
-                conv_name = getVideoIDWithBracket() + conv_name;
-            }
-            convertedVideoFile = new File(profile.getOutputFileSetting().getFile().getFile(),
-                    conv_name + ov.getExtOption());
-        } else {
-            String filename = profile.getOutputFileSetting().getFile().getFile().getPath();
-            if (!filename.endsWith(ov.getExtOption())) {
-                filename = filename.substring(0, filename.lastIndexOf('.')) + ov.getExtOption();
-                convertedVideoFile = new File(filename);
-            } else {
-                convertedVideoFile = profile.getOutputFileSetting().getFile().getFile();
-            }
-        }
-
-        boolean res = new FfmpegCommand(getListener(), getStopFlag(), commentFile, tcommFile, videoFile,
+        File convertedVideoFile = videoFile;
+//        if (!profile.getOutputFileSetting().getFile().isFile()) {
+//            String conv_name = fi.getVideoTitle();
+//            if (profile.getOutputFileSetting().isAppendPrefixVideoId()) {
+//                conv_name = getVideoIDWithBracket() + conv_name;
+//            }
+//            convertedVideoFile = new File(profile.getOutputFileSetting().getFile().getFile(),
+//                    conv_name + ov.getExtOption());
+//        } else {
+//            String filename = profile.getOutputFileSetting().getFile().getFile().getPath();
+//            if (!filename.endsWith(ov.getExtOption())) {
+//                filename = filename.substring(0, filename.lastIndexOf('.')) + ov.getExtOption();
+//                convertedVideoFile = new File(filename);
+//            } else {
+//                convertedVideoFile = profile.getOutputFileSetting().getFile().getFile();
+//            }
+//        }
+
+        boolean res = new FfmpegCommand(getListener(), getStopFlag(), commentFile, videoFile,
                 convertedVideoFile, profile.getFfmpeg(), profile.getGeneralSetting()).execute();
         return res;
     }
 
-    private FileInstanciator createInstanciator() throws IOException {
-        FileInstanciator fi;
-
-        FileInstanciator.InstanciationType videoType = new FileInstanciator.InstanciationType(profile.getVideoSetting());
-
-        FileInstanciator.CommentInstanciationType commentType = new FileInstanciator.CommentInstanciationType(profile.
-                getCommentSetting(), profile.getCommentSetting().isSelfAdjustCommentNum(), profile.getCommentSetting().
-                getBackComment(), profile.getCommentSetting().isReduceComment());
-
-        FileInstanciator.InstanciationType tcommType = new FileInstanciator.InstanciationType(
-                profile.getCommentSetting());
-
-        fi = FileInstanciator.create(getStopFlag(), videoType, commentType, tcommType, profile.getLoginInfo(), profile.
-                getProxySetting(), movieId, profile.getCommentSetting().getBackLogPoint());
-        return fi;
-    }
+//    private FileInstanciator createInstanciator() throws IOException {
+//        FileInstanciator fi;
+//
+//        FileInstanciator.InstanciationType videoType = new FileInstanciator.InstanciationType(profile.getVideoSetting());
+//
+//        FileInstanciator.CommentInstanciationType commentType = new FileInstanciator.CommentInstanciationType(profile.
+//                getCommentSetting(), profile.getCommentSetting().isSelfAdjustCommentNum(), profile.getCommentSetting().
+//                getBackComment(), profile.getCommentSetting().isReduceComment());
+//
+//        FileInstanciator.InstanciationType tcommType = new FileInstanciator.InstanciationType(
+//                profile.getCommentSetting());
+//
+//        fi = FileInstanciator.create(getStopFlag(), videoType, commentType, tcommType, profile.getLoginInfo(), profile.
+//                getProxySetting(), movieId, profile.getCommentSetting().getBackLogPoint());
+//        return fi;
+//    }
 
     /**
      * (ネットワーク設定以外の)設定を検証する.
@@ -200,4 +248,32 @@ public class Converter extends AbstractCommand implements Callable<Boolean> {
     private static boolean needsDownload(Profile profile) {
         return (profile.getVideoSetting().isDownload() || profile.getCommentSetting().isDownload());
     }
+
+//    private File getCommentFile(NicoBrowserAdapter client, VideoInfo vi, CommentProfile prof,
+//            TextProgressListener listener) throws IOException {
+//        if (prof.isDownload()) {
+//            WayBackInfo wbi = null;
+//            if (profile.getCommentSetting().getBackLogPoint() >= 0L) {
+//                final String key = client.getWayBackKey(vi);
+//                wbi = new WayBackInfo(key, profile.getCommentSetting().getBackLogPoint());
+//            }
+//
+//            return client.getCommentFile(nicoBrowserVi, prof.getFile().getPath(), wbi, prof.getBackComment(), prof.
+//                    isReduceComment());
+//
+//
+//        } else {
+//        }
+//    }
+    private File getVideoFile(NicoBrowserAdapter client, TextProgressListener listener, VideoProfile videoSetting) {
+        throw new UnsupportedOperationException("Not yet implemented");
+    }
+
+    private NicoHttpClient createClient(ProxyProfile proxy) {
+        if (proxy.use()) {
+            return new NicoHttpClient(proxy.getHost(), proxy.getPort());
+        } else {
+            return new NicoHttpClient();
+        }
+    }
 }
index 08b3384..89b113a 100644 (file)
@@ -34,16 +34,14 @@ public class FfmpegCommand extends AbstractCommand {
     private final File tcommMiddleFile;
     private final File TMP_CWS;
     private final File commentFile;
-    private final File tcommFile;
     private final File videoFile;
     private final File convertedVideoFile;
     private final FfmpegProfile ffmpeg;
 
-    FfmpegCommand(TextProgressListener listener, ConvertStopFlag flag, File commentFile, File tcommFile,
+    FfmpegCommand(TextProgressListener listener, ConvertStopFlag flag, File commentFile,
             File videoFile, File convertedVideoFile, FfmpegProfile ffmpeg, GeneralProfile general) throws IOException {
         super(listener, flag);
         this.commentFile = commentFile;
-        this.tcommFile = tcommFile;
         this.videoFile = videoFile;
         this.convertedVideoFile = convertedVideoFile;
         this.ffmpeg = ffmpeg;
@@ -82,20 +80,19 @@ public class FfmpegCommand extends AbstractCommand {
             }
         }
         stopFlagReturn();
-        if (tcommFile != null) {
-            sendText("投稿者コメントの中間ファイルへの変換中");
-            boolean conv = ConvertToVideoHook.convert(tcommFile, tcommMiddleFile, ngSetting.getId(), ngSetting.getWord());
-            if (!conv) {
-                sendText("コメント変換に失敗。ファイル名に使用できない文字が含まれているか正規表現の間違い?");
-                return false;
-            }
-        }
+//        if (tcommFile != null) {
+//            sendText("投稿者コメントの中間ファイルへの変換中");
+//            boolean conv = ConvertToVideoHook.convert(tcommFile, tcommMiddleFile, ngSetting.getId(), ngSetting.getWord());
+//            if (!conv) {
+//                sendText("コメント変換に失敗。ファイル名に使用できない文字が含まれているか正規表現の間違い?");
+//                return false;
+//            }
+//        }
         stopFlagReturn();
         sendText("動画の変換を開始");
         int code;
         if ((code = converting_video(videoFile, convertedVideoFile, (commentFile != null), commentMiddleFile.getPath(),
-                (tcommFile
-                != null), tcommMiddleFile.getPath(), getFfmpeg().getFfmpegOption())) == 0) {
+                false, tcommMiddleFile.getPath(), getFfmpeg().getFfmpegOption())) == 0) {
             sendText("変換が正常に終了しました。");
             return true;
         } else {
index 29da07b..0c82fe8 100644 (file)
@@ -1,6 +1,7 @@
 /* $Id$ */
 package saccubus.converter.classic.profile;
 
+import java.io.File;
 import yukihane.saccubus.converter.profile.CommentProfile;
 import yukihane.saccubus.converter.profile.VideoProfile;
 
@@ -8,9 +9,8 @@ import yukihane.saccubus.converter.profile.VideoProfile;
  *
  * @author yuki
  */
-public class InputFileSetting implements yukihane.saccubus.converter.profile.InputFileSetting, VideoProfile, CommentProfile {
+public class InputFileSetting implements VideoProfile, CommentProfile {
 
-    private final SFile file;
     private final boolean download;
     private final boolean delete;
     private final CommentGetInfo commentGetInfo;
@@ -22,7 +22,6 @@ public class InputFileSetting implements yukihane.saccubus.converter.profile.Inp
      * @param delete 変換後にファイルを削除するのであればtrue, 残したままにするのであればfalse.
      */
     public InputFileSetting(SFile file, boolean download, boolean delete, CommentGetInfo cominfo, long backLogPoint) {
-        this.file = file;
         this.download = download;
         this.delete = delete;
         this.commentGetInfo = cominfo;
@@ -30,8 +29,8 @@ public class InputFileSetting implements yukihane.saccubus.converter.profile.Inp
     }
 
     @Override
-    public SFile getFile() {
-        return file;
+    public File getFile() {
+        return null;
     }
 
     @Override
@@ -62,4 +61,9 @@ public class InputFileSetting implements yukihane.saccubus.converter.profile.Inp
     public long getBackLogPoint() {
         return backLogPoint;
     }
+
+    @Override
+    public File getDir() {
+        return null;
+    }
 }
index 9bcdbcb..1263a97 100644 (file)
@@ -14,6 +14,9 @@ import saccubus.net.NicoClient;
 import saccubus.net.TextProgressListener;
 import saccubus.net.VideoInfo;
 import saccubus.util.FileUtil;
+import yukihane.saccubus.converter.profile.CommentProfile;
+import yukihane.saccubus.converter.profile.LoinProfile;
+import yukihane.saccubus.converter.profile.ProxyProfile;
 
 /**
  * NicoBrowserのニコニコ動画サービスアクセス機能をいんきゅばすから使用するためのアダプタ.
@@ -49,6 +52,25 @@ public class NicoBrowserAdapter implements NicoClient {
 
     }
 
+    public NicoBrowserAdapter(LoinProfile loginInfo, ProxyProfile proxy, ConvertStopFlag flag) {
+        if (proxy.use()) {
+            this.client = new NicoHttpClient(proxy.getHost(), proxy.getPort());
+        } else {
+            this.client = new NicoHttpClient();
+        }
+
+        // ログイン
+        boolean loginned = false;
+        try {
+            loginned = client.login(loginInfo.getMail(), loginInfo.getPass());
+        } catch (Exception ex) {
+            logger.log(Level.SEVERE, "ログイン処理時に例外発生", ex);
+        }
+        this.hasLogin = loginned;
+
+        this.stopFlag = flag;
+    }
+
     @Override
     public VideoInfo getVideoInfo(String videoId) throws IOException {
         nicoBrowserVi = client.getVideoInfo(videoId);
index 8e3305b..4a761bc 100644 (file)
@@ -1,10 +1,16 @@
 package yukihane.saccubus.converter.profile;
 
+import java.io.File;
+
 /**
  *
  * @author yuki
  */
-public interface CommentProfile extends InputFileSetting {
+public interface CommentProfile {
+
+    boolean isDownload();
+
+    File getFile();
 
     boolean isSelfAdjustCommentNum();
 
index 142acfe..6e30eee 100644 (file)
@@ -1,8 +1,12 @@
 package yukihane.saccubus.converter.profile;
 
+import java.io.File;
+
 /**
  *
  * @author yuki
  */
-public interface VideoProfile extends InputFileSetting {
+public interface VideoProfile {
+    boolean isDownload();
+    File getDir();
 }