1 package yukihane.inqubus;
4 import java.util.ArrayList;
6 import org.apache.commons.configuration.ConfigurationException;
7 import org.apache.commons.configuration.XMLConfiguration;
12 private final XMLConfiguration config = new XMLConfiguration();
21 private static final String ACCOUNT_ID = "network.account.id";
23 public String getId() {
24 return config.getString(ACCOUNT_ID, "");
27 public void setId(String s) {
28 config.setProperty(ACCOUNT_ID, s);
30 private static final String ACCOUNT_PASSWORD = "network.account.password";
32 public String getPassword() {
33 return config.getString(ACCOUNT_PASSWORD, "");
36 public void setPassword(String s) {
37 config.setProperty(ACCOUNT_PASSWORD, s);
43 private static final String PROXY_USE = "network.proxy.use";
45 public boolean getProxyUse() {
46 return config.getBoolean(PROXY_USE, false);
49 public void setProxyUse(boolean s) {
50 config.setProperty(PROXY_USE, s);
52 private static final String PROXY_HOST = "network.proxy.host";
54 public String getProxyHost() {
55 return config.getString(PROXY_HOST, "localhost");
58 public void setProxyHost(String s) {
59 config.setProperty(PROXY_HOST, s);
61 private static final String PROXY_PORT = "network.proxy.port";
63 public String getProxyPort() {
64 return config.getString(PROXY_PORT, "8080");
67 public void setProxyPort(String s) {
68 config.setProperty(PROXY_PORT, s);
74 private static final String FILE_VIDEO_DIR = "file.video.dir";
76 public String getVideoDir() {
77 return config.getString(FILE_VIDEO_DIR, "in/video");
80 public void setVideoDir(String s) {
81 config.setProperty(FILE_VIDEO_DIR, s);
83 private static final String FILE_VIDEO_FILENAME = "file.video.filename";
85 public String getVideoFileNamePattern() {
86 return config.getString(FILE_VIDEO_FILENAME, "[{id}]{title}");
89 public void setVideoFileNamePattern(String s) {
90 config.setProperty(FILE_VIDEO_FILENAME, s.toString());
92 private static final String FILE_VIDEO_LOCAL = "file.video.local";
94 public boolean getVideoUseLocal() {
95 return config.getBoolean(FILE_VIDEO_LOCAL, false);
98 public void setVideoUseLocal(boolean s) {
99 config.setProperty(FILE_VIDEO_LOCAL, s);
105 private static final String FILE_COMMENT_DIR = "file.comment.dir";
107 public String getCommentDir() {
108 return config.getString(FILE_COMMENT_DIR, "in/comment");
111 public void setCommentDir(String s) {
112 config.setProperty(FILE_COMMENT_DIR, s);
114 private static final String FILE_COMMENT_FILENAME = "file.comment.filename";
116 public String getCommentFileNamePattern() {
117 return config.getString(FILE_COMMENT_FILENAME, "[{id}]{title}");
120 public void setCommentFileNamePattern(String s) {
121 config.setProperty(FILE_COMMENT_FILENAME, s.toString());
123 private static final String FILE_COMMENT_LOCAL = "file.comment.local";
125 public boolean getCommentUseLocal() {
126 return config.getBoolean(FILE_COMMENT_LOCAL, false);
129 public void setCommentUseLocal(boolean s) {
130 config.setProperty(FILE_COMMENT_LOCAL, s);
136 private static final String FILE_OUTPUT_DIR = "file.output.dir";
138 public String getOutputDir() {
139 return config.getString(FILE_OUTPUT_DIR, "out");
142 public void setOutputDir(String s) {
143 config.setProperty(FILE_OUTPUT_DIR, s);
145 private static final String FILE_OUTPUT_FILENAME = "file.output.filename";
147 public String getOutputFileNamePattern() {
148 return config.getString(FILE_OUTPUT_FILENAME, "{filename}");
151 public void setOutputFileNamePattern(String s) {
152 config.setProperty(FILE_OUTPUT_FILENAME, s.toString());
154 private static final String FILE_OUTPUT_ENABLE = "file.output.enable";
156 public boolean getOutputEnable() {
157 return config.getBoolean(FILE_OUTPUT_ENABLE, true);
160 public void setOutputEnable(boolean s) {
161 config.setProperty(FILE_OUTPUT_ENABLE, s);
163 private static final String FILE_OUTPUT_COMMENT_OVERLAY = "file.output.comment_overlay";
165 public boolean getOutputCommentOverlay() {
166 return config.getBoolean(FILE_OUTPUT_COMMENT_OVERLAY, true);
169 public void setOutputCommentOverlay(boolean s) {
170 config.setProperty(FILE_OUTPUT_COMMENT_OVERLAY, s);
172 private static final String FILE_OUTPUT_DISPLAY_PROGRESS = "file.output.display";
174 public boolean getOutputDisplayProgress() {
175 return config.getBoolean(FILE_OUTPUT_DISPLAY_PROGRESS, true);
178 public void setOutputDisplayProgress(boolean s) {
179 config.setProperty(FILE_OUTPUT_DISPLAY_PROGRESS, s);
184 private static final String COMMENT_SIZE_AUTOSIZE = "comment.size.autosize";
186 public boolean getCommentSizeAutosize() {
187 return config.getBoolean(COMMENT_SIZE_AUTOSIZE, true);
190 public void setCommentSizeAutosize(boolean s) {
191 config.setProperty(COMMENT_SIZE_AUTOSIZE, s);
193 private static final String COMMENT_SIZE_MANUAL = "comment.size.manual";
195 public String getCommentSizeManual() {
196 return config.getString(COMMENT_SIZE_MANUAL, "");
199 public void setCommentSizeManual(String s) {
200 config.setProperty(COMMENT_SIZE_MANUAL, s);
202 private static final String COMMENT_MIN_SIZE_AUTOSIZE = "comment.minutesize.autosize";
204 public boolean getCommentMinSizeAutosize() {
205 return config.getBoolean(COMMENT_MIN_SIZE_AUTOSIZE, true);
208 public void setCommentMinSizeAutosize(boolean s) {
209 config.setProperty(COMMENT_MIN_SIZE_AUTOSIZE, s);
211 private static final String COMMENT_MIN_SIZE_MANUAL = "comment.minutesize.manual";
213 public String getCommentMinSizeManual() {
214 return config.getString(COMMENT_MIN_SIZE_MANUAL, "");
217 public void setCommentMinSizeManual(String s) {
218 config.setProperty(COMMENT_MIN_SIZE_MANUAL, s);
220 private static final String COMMENT_DISPLAY_MAX_SIZE_DEFAULT = "comment.displaysize.default";
222 public boolean getCommentDisplaySizeDefault() {
223 return config.getBoolean(COMMENT_DISPLAY_MAX_SIZE_DEFAULT, true);
226 public void setCommentDisplaySizeDefault(boolean s) {
227 config.setProperty(COMMENT_DISPLAY_MAX_SIZE_DEFAULT, s);
229 private static final String COMMENT_DISPLAY_MAX_SIZE_MANUAL = "comment.displaysize.manual";
231 public String getCommentDisplaySizeManual() {
232 return config.getString(COMMENT_DISPLAY_MAX_SIZE_MANUAL, "");
235 public void setCommentDisplaySizeManual(String s) {
236 config.setProperty(COMMENT_DISPLAY_MAX_SIZE_MANUAL, s);
238 private static final String COMMENT_FONTPATH = "comment.fontpath";
240 public String getFontPath() {
241 return config.getString(COMMENT_FONTPATH, "C:/Windows/Fonts/msgothic.ttc");
244 public void setFontPath(String s) {
245 config.setProperty(COMMENT_FONTPATH, s);
247 private static final String COMMENT_FONT_INDEX = "comment.fontindex";
249 public String getFontIndex() {
250 return config.getString(COMMENT_FONT_INDEX, "");
253 public void setFontIndex(String s) {
254 config.setProperty(COMMENT_FONT_INDEX, s);
256 private static final String COMMENT_FONT_SHADOW = "comment.fontshadow";
258 public int getFontShadow() {
259 return config.getInt(COMMENT_FONT_SHADOW, 1);
262 public void setFontIndex(int s) {
263 config.setProperty(COMMENT_FONT_SHADOW, s);
265 private static final String COMMENT_FONT_SIZING_DISABLE = "comment.font_no_sizing";
267 public boolean getFontSizeArrangeDisable() {
268 return config.getBoolean(COMMENT_FONT_SIZING_DISABLE, false);
271 public void setFontSizeArrangeDisable(boolean s) {
272 config.setProperty(COMMENT_FONT_SIZING_DISABLE, s);
274 private static final String COMMENT_FONT_OPAQUE = "comment.opaque";
276 public boolean getCommentOpaque() {
277 return config.getBoolean(COMMENT_FONT_OPAQUE, false);
280 public void setCommentOpaque(boolean s) {
281 config.setProperty(COMMENT_FONT_OPAQUE, s);
283 private static final String FFMPEG_PATH = "ffmpeg.path";
285 public String getFfmpegPath() {
286 return config.getString(FFMPEG_PATH, "bin/ffmpeg.exe");
289 public void setFfmpegPath(String s) {
290 config.setProperty(FFMPEG_PATH, s);
292 private static final String FFMPEG_DLLPATH = "ffmpeg.dllpath";
294 public String getFfmpegDllPath() {
295 return config.getString(FFMPEG_DLLPATH, "bin/nicovideo.dll");
298 public void setFfmpegDllPath(String s) {
299 config.setProperty(FFMPEG_DLLPATH, s);
301 private static final String FFMPEG_PARAM_DIRECT = "ffmpeg.param.direct";
303 public boolean getFfmpegParamInputDirect() {
304 return config.getBoolean(FFMPEG_PARAM_DIRECT, true);
307 public void setFfmpegParamInputDirect(boolean s) {
308 config.setProperty(FFMPEG_PARAM_DIRECT, s);
310 private static final String FFMPEG_PARAM_OPTIONFILE = "ffmpeg.param.optionfile";
312 public String getFfmpegOptionFile() {
313 return config.getString(FFMPEG_PARAM_OPTIONFILE, "");
316 public void setFfmpegOptionFile(String s) {
317 config.setProperty(FFMPEG_PARAM_OPTIONFILE, s);
319 private static final String FFMPEG_PARAM_EXT = "ffmpeg.param.ext";
321 public String getFfmpegExtension() {
322 return config.getString(FFMPEG_PARAM_EXT, "");
325 public void setFfmpegExtension(String s) {
326 config.setProperty(FFMPEG_PARAM_EXT, s);
328 private static final String FFMPEG_PARAM_MAIN = "ffmpeg.param.main";
330 public String getFfmpegMainOption() {
331 return config.getString(FFMPEG_PARAM_MAIN, "");
334 public void setFfmpegMainOption(String s) {
335 config.setProperty(FFMPEG_PARAM_MAIN, s);
337 private static final String FFMPEG_PARAM_IN = "ffmpeg.param.in";
339 public String getFfmpegInOption() {
340 return config.getString(FFMPEG_PARAM_IN, "");
343 public void setFfmpegInOption(String s) {
344 config.setProperty(FFMPEG_PARAM_IN, s);
346 private static final String FFMPEG_PARAM_OUT = "ffmpeg.param.out";
348 public String getFfmpegOutOption() {
349 return config.getString(FFMPEG_PARAM_OUT, "");
352 public void setFfmpegOutOption(String s) {
353 config.setProperty(FFMPEG_PARAM_OUT, s);
355 private static final String FFMPEG_PARAM_AV = "ffmpeg.param.av";
357 public String getFfmpegAvOption() {
358 return config.getString(FFMPEG_PARAM_AV, "");
361 public void setFfmpegAvOption(String s) {
362 config.setProperty(FFMPEG_PARAM_AV, s);
364 private static final String FFMPEG_PARAM_RESIZE = "ffmpeg.param.resize";
366 public boolean getFfmpegResizeEnable() {
367 return config.getBoolean(FFMPEG_PARAM_RESIZE, false);
370 public void setFfmpegResizeEnable(boolean s) {
371 config.setProperty(FFMPEG_PARAM_RESIZE, s);
373 private static final String FFMPEG_PARAM_RESIZE_WIDTH = "ffmpeg.param.resize_width";
375 public String getFfmpegResizeWidth() {
376 return config.getString(FFMPEG_PARAM_RESIZE_WIDTH, "480");
379 public void setFfmpegResizeWidth(String s) {
380 config.setProperty(FFMPEG_PARAM_RESIZE_WIDTH, s);
382 private static final String FFMPEG_PARAM_RESIZE_HEIGHT = "ffmpeg.param.resize_height";
384 public String getFfmpegResizeHeight() {
385 return config.getString(FFMPEG_PARAM_RESIZE_HEIGHT, "480");
388 public void setFfmpegResizeHeight(String s) {
389 config.setProperty(FFMPEG_PARAM_RESIZE_HEIGHT, s);
391 private static final String FFMPEG_PARAM_KEEP_ASPECT = "ffmpeg.param.keep_aspect";
393 public boolean getFfmpegKeepAspect() {
394 return config.getBoolean(FFMPEG_PARAM_KEEP_ASPECT, true);
397 public void setFfmpegKeepAspect(boolean s) {
398 config.setProperty(FFMPEG_PARAM_KEEP_ASPECT, s);
400 private static final String NG_WORD = "ng.word";
402 @SuppressWarnings("unchecked")
403 public List<String> getNgWords() {
404 return config.getList(NG_WORD, new ArrayList<String>(0));
407 public void setNgWords(List<String> s) {
408 final String[] str = s.toArray(new String[0]);
409 config.setProperty(NG_WORD, s);
411 private static final String NG_ID = "ng.id";
413 @SuppressWarnings("unchecked")
414 public List<String> getNgIds() {
415 return config.getList(NG_ID, new ArrayList<String>(0));
418 public void setNgIds(List<String> s) {
419 config.setProperty(NG_ID, s);
425 public void load(String fileName) throws ConfigurationException {
426 config.setFileName(fileName);
430 public void save(File file) throws ConfigurationException {
431 config.setFile(file);
435 public void save() throws ConfigurationException {
436 throw new UnsupportedOperationException();
438 // final Class<? extends Properties> clazz = this.getClass();
439 // final Field[] fields = clazz.getDeclaredFields();
440 // final Field[] propertyFields = getPropertyFields(fields);
441 // for (Field f : propertyFields) {
442 // config.setProperty(getPropertyName(f), getPropertyValue(f));
445 // } catch (SecurityException | IllegalArgumentException | IllegalAccessException | ConfigurationException ex) {
446 // throw new ConfigurationException(ex);
449 // private Field[] getPropertyFields(Field[] fields) {
450 // List<Field> res = new ArrayList<Field>();
451 // for (Field f : fields) {
452 // if (f.getName().startsWith(getPrefix())) {
456 // return res.toArray(new Field[0]);
459 // private String getPropertyName(Field field) {
460 // return field.getName().replace(getPrefix(), "").replace("_", ".");
463 // private String getPropertyValue(Field field) throws IllegalArgumentException, IllegalAccessException {
464 // field.setAccessible(true);
465 // return (String) field.get(this);
468 // public boolean getUseMovieFileLocal() {
473 // public boolean getCommentFileLocal() {
478 // public boolean getOutputConvert() {
483 // public String getFileNamePattern() {
485 // return "[{id}]{title}";