1 package saccubus.prompt;
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.filegetter.LoginInfo;
20 import saccubus.converter.profile.CommentGetInfo;
21 import saccubus.converter.profile.Ffmpeg;
22 import saccubus.converter.profile.FfmpegOption;
23 import saccubus.converter.profile.GeneralSetting;
24 import saccubus.converter.profile.InputFileSetting;
25 import saccubus.converter.profile.OutputFileSetting;
26 import saccubus.converter.profile.Profile;
27 import saccubus.converter.profile.SFile;
28 import saccubus.properties.SProperties;
29 import saccubus.net.TextProgressListener;
33 *
\83^
\83C
\83g
\83\8b:
\82³
\82«
\82ã
\82Î
\82·
37 *
\90à
\96¾:
\83j
\83R
\83j
\83R
\93®
\89æ
\82Ì
\93®
\89æ
\82ð
\83R
\83\81\83\93\83g
\82Â
\82«
\82Å
\95Û
\91¶
41 *
\92\98\8dì
\8c : Copyright (c) 2007 PSI
48 * @author
\96¢
\93ü
\97Í
53 public static void main(String[] args) throws IOException {
54 //
\91æ1
\88ø
\90\94\82ª
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
\82Æ
\8ev
\82µ
\82«
\8e\9e\82Í
\90Ì
\82Ì
\88ø
\90\94\82Å
\82 \82é
\82Æ
\82Ý
\82È
\82µ
\82Ä
\83p
\81[
\83X
\81A
\8eÀ
\8ds
\82·
\82é.
55 if (args.length > 0 && args[0].contains("@")) {
56 doWithOldArguments(args);
60 new Prompt().execute(args);
63 public void execute(String[] args) throws IOException {
64 execute(args, TextProgressListener.EMPTY_LISTENER, ConvertStopFlag.StateChangeListener.EMPTY_LISTENER);
67 public void execute(String[] args, TextProgressListener tpl, ConvertStopFlag.StateChangeListener scl) throws
69 Options options = createOptions(args);
72 CommandLineParser parser = new BasicParser();
73 CommandLine cmd = parser.parse(options, args);
74 profile = createExecuteOption(cmd);
75 } catch (Exception e) {
76 HelpFormatter hf = new HelpFormatter();
77 hf.printHelp("java -jar Saccubus.jar [opts]", options);
79 throw new IOException(e);
82 Converter conv = new Converter("dummy", "", profile, tpl, new ConvertStopFlag(scl));
83 ExecutorService es = Executors.newSingleThreadExecutor();
84 Future<Boolean> future = es.submit((Callable<Boolean>) conv);
86 boolean res = future.get().booleanValue();
88 throw new IOException("ffmpeg
\95Ï
\8a·
\8f\88\97\9d\82ª
\90³
\8fí
\82É
\8fI
\97¹
\82µ
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B");
90 } catch (Exception ex) {
91 throw new IOException("
\8eæ
\93¾
\8e¸
\94s", ex);
93 System.out.println("Finished.");
96 private Options createOptions(String[] args) {
97 Options options = new Options();
98 // Option id = OptionBuilder.withArgName("mail").hasArg().withDescription("
\83j
\83R
\83j
\83R
\93®
\89æ
\83\8d\83O
\83C
\83\93ID(
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X)").create("id");
99 // Option password = OptionBuilder.withArgName("password").hasArg().withDescription("
\83j
\83R
\83j
\83R
\93®
\89æ
\83\8d\83O
\83C
\83\93\83p
\83X
\83\8f\81[
\83h").
100 // create("password");
101 // Option video = OptionBuilder.withArgName("id").hasArg().withDescription("
\83j
\83R
\83j
\83R
\93®
\89æ
\83r
\83f
\83IID").create("video");
102 Option videoFile = OptionBuilder.withArgName("file").hasArg().withDescription("
\93®
\89æ
\83t
\83@
\83C
\83\8b").create("file_video");
103 Option commentFile = OptionBuilder.withArgName("file").hasArg().withDescription("
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b").
104 create("file_comment");
105 Option tcommentFile = OptionBuilder.withArgName("file").hasArg().withDescription("
\93\8a\8de
\8eÒ
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b").
106 create("file_tcomment");
107 Option outputFile = OptionBuilder.withArgName("file").hasArg().withDescription("
\8fo
\97Í
\83t
\83@
\83C
\83\8b").create("file_output");
108 Option ffmpeg = OptionBuilder.withArgName("option").hasArg().withDescription("ffmpeg
\95Ï
\8a·
\83I
\83v
\83V
\83\87\83\93").create("ffmpeg");
109 // options.addOption(id);
110 // options.addOption(password);
111 // options.addOption(video);
112 options.addOption(videoFile);
113 options.addOption(commentFile);
114 options.addOption(tcommentFile);
115 options.addOption(outputFile);
116 options.addOption(ffmpeg);
120 private Profile createExecuteOption(CommandLine cmd) throws IOException {
121 final String mail = "dmy";
122 final String pass = "dmy";
123 final String video = cmd.getOptionValue("file_video");
124 final String comm = cmd.getOptionValue("file_comment");
125 final String tcomm = cmd.getOptionValue("file_tcomment");
126 final String output = cmd.getOptionValue("file_output");
127 final String ff = cmd.getOptionValue("ffmpeg");
129 SProperties setting = SProperties.loadSetting(mail, pass);
130 Profile p = setting.toProfile();
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();
140 FfmpegOption newFfmpegOption = new FfmpegOption(ffmpeg.getFfmpegOption().getExtOption(), "", "", ff);
141 InputFileSetting newVideoSetting = new InputFileSetting(new SFile(true, new File(video)), false, false);
142 InputFileSetting newCommentSetting = new InputFileSetting(new SFile(true, new File(comm)), false, false);
143 InputFileSetting newTcommentSetting = new InputFileSetting(new SFile(true, new File(tcomm)), false, false);
144 OutputFileSetting newOutputFileSetting = new OutputFileSetting(new SFile(true, new File(output)), true, false,
146 Ffmpeg newFfmpeg = new Ffmpeg(ffmpeg.getFfmpeg(), ffmpeg.getVhook(), newFfmpegOption, ffmpeg.isVhookDisabled(), ffmpeg.
147 getMaxNumOfComment(), ffmpeg.getFont(), ffmpeg.getFontIndex(), ffmpeg.getShadowIndex(), ffmpeg.
148 isShowConverting(), ffmpeg.isSelfAdjustFontSize(), ffmpeg.isCommentOpaque(), ffmpeg.getNgSetting());
150 p = new Profile(general, loginInfo, newVideoSetting, newCommentSetting, commentGetInfo, newTcommentSetting,
151 newOutputFileSetting, newFfmpeg);
157 *
\90Ì
\82Ì
\88ø
\90\94\8c`
\8e®
\82Å
\83v
\83\8d\83O
\83\89\83\80\82ð
\8eÀ
\8ds
\82·
\82é.
159 private static void doWithOldArguments(String[] args) throws IOException {
160 String mail = args[0];
161 String pass = args[1];
162 String tag = args[2];
163 String time = args.length < 4 ? "" : args[3];
164 SProperties setting = SProperties.loadSetting(mail, pass);
165 Converter conv = new Converter(tag, time, setting.toProfile(), TextProgressListener.EMPTY_LISTENER, new ConvertStopFlag(
166 ConvertStopFlag.StateChangeListener.EMPTY_LISTENER));
167 System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
168 System.out.println("Saccubus on CUI");
169 System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
170 System.out.println("Mailaddr: " + mail);
171 System.out.println("Password: hidden");
172 System.out.println("VideoID: " + tag);
173 System.out.println("WaybackTime: " + time);
174 System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
176 System.out.println("Finished.");