OSDN Git Service

確実に不要になるクラスを削除
[coroid/inqubus.git] / frontend / src / saccubus / prompt / Prompt.java
1 package saccubus.prompt;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.concurrent.Callable;
6 import java.util.concurrent.ExecutorService;
7 import java.util.concurrent.Executors;
8 import java.util.concurrent.Future;
9 import org.apache.commons.cli.BasicParser;
10 import org.apache.commons.cli.CommandLine;
11 import org.apache.commons.cli.CommandLineParser;
12 import org.apache.commons.cli.HelpFormatter;
13 import org.apache.commons.cli.Option;
14 import org.apache.commons.cli.OptionBuilder;
15 import org.apache.commons.cli.Options;
16 import saccubus.ConvertStopFlag;
17 import saccubus.ConvertStopFlag.State;
18 import saccubus.converter.Converter;
19 import saccubus.converter.classic.profile.LoginInfo;
20 import saccubus.converter.classic.profile.CommentGetInfo;
21 import saccubus.converter.classic.profile.Ffmpeg;
22 import saccubus.converter.classic.profile.FfmpegOption;
23 import saccubus.converter.classic.profile.GeneralSetting;
24 import saccubus.converter.classic.profile.InputFileSetting;
25 import saccubus.converter.classic.profile.OutputFileSetting;
26 import saccubus.converter.classic.profile.Profile;
27 import saccubus.net.TextProgressListener;
28
29 /**
30  * <p>
31  * タイトル: さきゅばす
32  * </p>
33  *
34  * <p>
35  * 説明: ニコニコ動画の動画をコメントつきで保存
36  * </p>
37  *
38  * <p>
39  * 著作権: Copyright (c) 2007 PSI
40  * </p>
41  *
42  * <p>
43  * 会社名:
44  * </p>
45  *
46  * @author 未入力
47  * @version 1.0
48  */
49 public class Prompt {
50
51     public static void main(String[] args) throws IOException {
52         // 第1引数がメールアドレスと思しき時は昔の引数であるとみなしてパース、実行する.
53         if (args.length > 0 && args[0].contains("@")) {
54             doWithOldArguments(args);
55             return;
56         }
57
58         new Prompt().execute(args);
59     }
60
61     public void execute(String[] args) throws IOException {
62         execute(args, TextProgressListener.EMPTY_LISTENER, ConvertStopFlag.StateChangeListener.EMPTY_LISTENER);
63     }
64
65     public void execute(String[] args, TextProgressListener tpl, ConvertStopFlag.StateChangeListener scl) throws
66             IOException {
67         Options options = createOptions(args);
68         Profile profile;
69         try {
70             CommandLineParser parser = new BasicParser();
71             CommandLine cmd = parser.parse(options, args);
72             profile = createExecuteOption(cmd);
73         } catch (Exception e) {
74             HelpFormatter hf = new HelpFormatter();
75             hf.printHelp("java -jar Saccubus.jar [opts]", options);
76             System.out.flush();
77             throw new IOException(e);
78         }
79
80         Converter conv = new Converter("dummy0", profile, tpl, new ConvertStopFlag(scl));
81         ExecutorService es = Executors.newSingleThreadExecutor();
82         Future<Boolean> future = es.submit((Callable<Boolean>) conv);
83         try {
84             boolean res = future.get().booleanValue();
85             if (!res) {
86                 throw new IOException("ffmpeg変換処理が正常に終了しませんでした。");
87             }
88         } catch (Exception ex) {
89             throw new IOException("取得失敗", ex);
90         }
91         System.out.println("Finished.");
92     }
93
94     private Options createOptions(String[] args) {
95         Options options = new Options();
96 //        Option id = OptionBuilder.withArgName("mail").hasArg().withDescription("ニコニコ動画ログインID(メールアドレス)").create("id");
97 //        Option password = OptionBuilder.withArgName("password").hasArg().withDescription("ニコニコ動画ログインパスワード").
98 //                create("password");
99 //        Option video = OptionBuilder.withArgName("id").hasArg().withDescription("ニコニコ動画ビデオID").create("video");
100         Option videoFile = OptionBuilder.withArgName("file").hasArg().withDescription("動画ファイル").create("file_video");
101         Option commentFile = OptionBuilder.withArgName("file").hasArg().withDescription("コメントファイル").
102                 create("file_comment");
103         Option tcommentFile = OptionBuilder.withArgName("file").hasArg().withDescription("投稿者コメントファイル").
104                 create("file_tcomment");
105         Option outputFile = OptionBuilder.withArgName("file").hasArg().withDescription("出力ファイル").create("file_output");
106         Option ffmpeg = OptionBuilder.withArgName("option").hasArg().withDescription("ffmpeg変換オプション").create("ffmpeg");
107 //        options.addOption(id);
108 //        options.addOption(password);
109 //        options.addOption(video);
110         options.addOption(videoFile);
111         options.addOption(commentFile);
112         options.addOption(tcommentFile);
113         options.addOption(outputFile);
114         options.addOption(ffmpeg);
115         return options;
116     }
117
118     private Profile createExecuteOption(CommandLine cmd) throws IOException {
119 //        final String mail = "dmy";
120 //        final String pass = "dmy";
121 //        final String video = cmd.getOptionValue("file_video");
122 //        final String comm = cmd.getOptionValue("file_comment");
123 //        final String tcomm = cmd.getOptionValue("file_tcomment");
124 //        final String output = cmd.getOptionValue("file_output");
125 //        final String ff = cmd.getOptionValue("ffmpeg");
126 //
127 //        // TODO 後で実装
128 ////        SProperties setting = SProperties.loadSetting(mail, pass);
129 ////        Profile p = setting.toProfile();
130 //        Profile p = null;
131 //        GeneralSetting general = p.getGeneralSetting();
132 //        LoginInfo loginInfo = p.getLoginInfo();
133 ////        InputFileSetting videoSetting = p.getVideoSetting();
134 ////        InputFileSetting commentSetting = p.getCommentSetting();
135 //        CommentGetInfo commentGetInfo = p.getCommentGetInfo();
136 ////        InputFileSetting tcommentSetting = p.getTcommentSetting();
137 ////        OutputFileSetting outputFileSetting = p.getOutputFileSetting();
138 //        Ffmpeg ffmpeg = p.getFfmpeg();
139 //
140 //        FfmpegOption newFfmpegOption = new FfmpegOption(ffmpeg.getFfmpegOption().getExtOption(), "", "", ff, "", false,
141 //                "", "", false);
142 //        InputFileSetting newVideoSetting = new InputFileSetting(new SFile(true, new File(video)), false, false, commentGetInfo, -1);
143 //        InputFileSetting newCommentSetting = new InputFileSetting(new SFile(true, new File(comm)), false, false, commentGetInfo, -1);
144 //        InputFileSetting newTcommentSetting = new InputFileSetting(new SFile(true, new File(tcomm)), false, false, commentGetInfo, -1);
145 //        OutputFileSetting newOutputFileSetting = new OutputFileSetting(new SFile(true, new File(output)), true, false,
146 //                true, true);
147 //        Ffmpeg newFfmpeg = new Ffmpeg(ffmpeg.getFfmpeg(), ffmpeg.getVhook(), newFfmpegOption, ffmpeg.isVhookDisabled(), ffmpeg.
148 //                getMaxNumOfComment(), ffmpeg.getFont(), ffmpeg.getFontIndex(), ffmpeg.getShadowIndex(), ffmpeg.
149 //                isShowConverting(), ffmpeg.isSelfAdjustFontSize(), ffmpeg.isCommentOpaque(), ffmpeg.getNgSetting());
150 //
151 //        p = new Profile(general, loginInfo, newVideoSetting, newCommentSetting, commentGetInfo, newTcommentSetting,
152 //                newOutputFileSetting, newFfmpeg);
153 //
154 //        return p;
155         return null;
156     }
157
158     /**
159      * 昔の引数形式でプログラムを実行する.
160      */
161     private static void doWithOldArguments(String[] args) throws IOException {
162         String mail = args[0];
163         String pass = args[1];
164         String tag = args[2];
165         String time = args.length < 4 ? "" : args[3];
166         // TODO
167 //        SProperties setting = SProperties.loadSetting(mail, pass);
168 //        Converter conv = new Converter(tag, setting.toProfile(), TextProgressListener.EMPTY_LISTENER, new ConvertStopFlag(
169 //                ConvertStopFlag.StateChangeListener.EMPTY_LISTENER));
170         Converter conv = new Converter(tag, null/*この部分*/, TextProgressListener.EMPTY_LISTENER, new ConvertStopFlag(
171                 ConvertStopFlag.StateChangeListener.EMPTY_LISTENER));
172         System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
173         System.out.println("Saccubus on CUI");
174         System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
175         System.out.println("Mailaddr: " + mail);
176         System.out.println("Password: hidden");
177         System.out.println("VideoID: " + tag);
178         System.out.println("WaybackTime: " + time);
179         System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
180         conv.run();
181         System.out.println("Finished.");
182     }
183 }