1 package yukihane.inqubus.config;
4 import java.util.ArrayList;
6 import org.apache.commons.configuration.ConfigurationException;
7 import org.apache.commons.configuration.XMLConfiguration;
8 import yukihane.inqubus.cookie.Cookie.BrowserType;
14 public enum CookieBrowser {
19 public BrowserType toBrowserType() {
20 return BrowserType.MSIE;
25 public BrowserType toBrowserType() {
26 return BrowserType.FIREFOX;
31 public BrowserType toBrowserType() {
32 return BrowserType.CHROME;
37 public BrowserType toBrowserType() {
38 return BrowserType.CHROMIUM;
43 public BrowserType toBrowserType() {
44 return BrowserType.OPERA;
49 public BrowserType toBrowserType() {
50 return BrowserType.OTHER;
54 public abstract BrowserType toBrowserType();
56 private final XMLConfiguration config = new XMLConfiguration();
65 private static final String LOGIN_NEED = "network.login";
67 public boolean getNeedsLogin() {
68 return config.getBoolean(LOGIN_NEED, true);
71 public void setNeedsLogin(boolean s) {
72 config.setProperty(LOGIN_NEED, s);
74 private static final String ACCOUNT_ID = "network.account.id";
76 public String getId() {
77 return config.getString(ACCOUNT_ID, "");
80 public void setId(String s) {
81 config.setProperty(ACCOUNT_ID, s);
83 private static final String ACCOUNT_PASSWORD = "network.account.password";
85 public String getPassword() {
86 return config.getString(ACCOUNT_PASSWORD, "");
89 public void setPassword(String s) {
90 config.setProperty(ACCOUNT_PASSWORD, s);
92 private static final String COOKIE_BROWSER = "network.cookie.browser";
94 public CookieBrowser getCookieBrowser() {
95 final String str = config.getString(COOKIE_BROWSER, CookieBrowser.MSIE.name());
96 return CookieBrowser.valueOf(str);
99 public void setCookieBrowser(CookieBrowser s) {
100 config.setProperty(COOKIE_BROWSER, s.name());
102 private static final String COOKIE_DIR = "network.cookie.dir";
104 public String getCookieDir() {
105 return config.getString(COOKIE_DIR, "");
108 public void setCookieDir(String s) {
109 config.setProperty(COOKIE_DIR, s);
114 private static final String PROXY_USE = "network.proxy.use";
116 public boolean getProxyUse() {
117 return config.getBoolean(PROXY_USE, false);
120 public void setProxyUse(boolean s) {
121 config.setProperty(PROXY_USE, s);
123 private static final String PROXY_HOST = "network.proxy.host";
125 public String getProxyHost() {
126 return config.getString(PROXY_HOST, "localhost");
129 public void setProxyHost(String s) {
130 config.setProperty(PROXY_HOST, s);
132 private static final String PROXY_PORT = "network.proxy.port";
134 public String getProxyPort() {
135 return config.getString(PROXY_PORT, "8080");
138 public void setProxyPort(String s) {
139 config.setProperty(PROXY_PORT, s);
145 private static final String FILE_VIDEO_DIR = "file.video.dir";
147 public String getVideoDir() {
148 return config.getString(FILE_VIDEO_DIR, "_video");
151 public void setVideoDir(String s) {
152 config.setProperty(FILE_VIDEO_DIR, s);
154 private static final String FILE_VIDEO_FILENAME = "file.video.filename";
156 public String getVideoFileNamePattern() {
157 return config.getString(FILE_VIDEO_FILENAME, "[{id}]{title}");
160 public void setVideoFileNamePattern(String s) {
161 config.setProperty(FILE_VIDEO_FILENAME, s.toString());
163 private static final String FILE_VIDEO_LOCAL = "file.video.local";
165 public boolean getVideoUseLocal() {
166 return config.getBoolean(FILE_VIDEO_LOCAL, false);
169 public void setVideoUseLocal(boolean s) {
170 config.setProperty(FILE_VIDEO_LOCAL, s);
176 private static final String FILE_COMMENT_DIR = "file.comment.dir";
178 public String getCommentDir() {
179 return config.getString(FILE_COMMENT_DIR, "_comment");
182 public void setCommentDir(String s) {
183 config.setProperty(FILE_COMMENT_DIR, s);
185 private static final String FILE_COMMENT_FILENAME = "file.comment.filename";
187 public String getCommentFileNamePattern() {
188 return config.getString(FILE_COMMENT_FILENAME, "[{id}]{title}");
191 public void setCommentFileNamePattern(String s) {
192 config.setProperty(FILE_COMMENT_FILENAME, s.toString());
194 private static final String FILE_COMMENT_LOCAL = "file.comment.local";
196 public boolean getCommentUseLocal() {
197 return config.getBoolean(FILE_COMMENT_LOCAL, false);
200 public void setCommentUseLocal(boolean s) {
201 config.setProperty(FILE_COMMENT_LOCAL, s);
207 private static final String FILE_OUTPUT_DIR = "file.output.dir";
209 public String getOutputDir() {
210 return config.getString(FILE_OUTPUT_DIR, "__converted");
213 public void setOutputDir(String s) {
214 config.setProperty(FILE_OUTPUT_DIR, s);
216 private static final String FILE_OUTPUT_FILENAME = "file.output.filename";
218 public String getOutputFileNamePattern() {
219 return config.getString(FILE_OUTPUT_FILENAME, "{filename}");
222 public void setOutputFileNamePattern(String s) {
223 config.setProperty(FILE_OUTPUT_FILENAME, s.toString());
225 private static final String FILE_OUTPUT_ENABLE = "file.output.enable";
227 public boolean getOutputEnable() {
228 return config.getBoolean(FILE_OUTPUT_ENABLE, true);
231 public void setOutputEnable(boolean s) {
232 config.setProperty(FILE_OUTPUT_ENABLE, s);
234 private static final String FILE_OUTPUT_COMMENT_OVERLAY = "file.output.comment_overlay";
236 public boolean getOutputCommentOverlay() {
237 return config.getBoolean(FILE_OUTPUT_COMMENT_OVERLAY, true);
240 public void setOutputCommentOverlay(boolean s) {
241 config.setProperty(FILE_OUTPUT_COMMENT_OVERLAY, s);
243 private static final String FILE_OUTPUT_DISPLAY_PROGRESS = "file.output.display";
245 public boolean getOutputDisplayProgress() {
246 return config.getBoolean(FILE_OUTPUT_DISPLAY_PROGRESS, true);
249 public void setOutputDisplayProgress(boolean s) {
250 config.setProperty(FILE_OUTPUT_DISPLAY_PROGRESS, s);
255 private static final String FILE_REPLACE_FROM = "file.prohibit.replace_from";
257 public String getReplaceFrom() {
258 return config.getString(FILE_REPLACE_FROM, "/\\:*?\"<>|.");
261 public void setReplaceFrom(String s) {
262 config.setProperty(FILE_REPLACE_FROM, s);
264 private static final String FILE_REPLACE_TO = "file.prohibit.replace_to";
266 public String getReplaceTo() {
267 return config.getString(FILE_REPLACE_TO, "_");
270 public void setReplaceTo(String s) {
271 config.setProperty(FILE_REPLACE_TO, s);
276 private static final String COMMENT_SIZE_AUTOSIZE = "comment.size.autosize";
278 public boolean getCommentSizeAutosize() {
279 return config.getBoolean(COMMENT_SIZE_AUTOSIZE, true);
282 public void setCommentSizeAutosize(boolean s) {
283 config.setProperty(COMMENT_SIZE_AUTOSIZE, s);
285 private static final String COMMENT_SIZE_MANUAL = "comment.size.manual";
287 public String getCommentSizeManual() {
288 return config.getString(COMMENT_SIZE_MANUAL, "");
291 public void setCommentSizeManual(String s) {
292 config.setProperty(COMMENT_SIZE_MANUAL, s);
294 private static final String COMMENT_MIN_DISABLED = "comment.minutesize.disable";
296 public boolean getCommentMinDisabled() {
297 return config.getBoolean(COMMENT_MIN_DISABLED, false);
300 public void setCommentMinDisabled(boolean s) {
301 config.setProperty(COMMENT_MIN_DISABLED, s);
303 private static final String COMMENT_MIN_SIZE_AUTOSIZE = "comment.minutesize.autosize";
305 public boolean getCommentMinSizeAutosize() {
306 return config.getBoolean(COMMENT_MIN_SIZE_AUTOSIZE, true);
309 public void setCommentMinSizeAutosize(boolean s) {
310 config.setProperty(COMMENT_MIN_SIZE_AUTOSIZE, s);
312 private static final String COMMENT_MIN_SIZE_MANUAL = "comment.minutesize.manual";
314 public String getCommentMinSizeManual() {
315 return config.getString(COMMENT_MIN_SIZE_MANUAL, "");
318 public void setCommentMinSizeManual(String s) {
319 config.setProperty(COMMENT_MIN_SIZE_MANUAL, s);
321 private static final String COMMENT_DISPLAY_MAX_SIZE_DEFAULT = "comment.displaysize.default";
323 public boolean getCommentDisplaySizeDefault() {
324 return config.getBoolean(COMMENT_DISPLAY_MAX_SIZE_DEFAULT, true);
327 public void setCommentDisplaySizeDefault(boolean s) {
328 config.setProperty(COMMENT_DISPLAY_MAX_SIZE_DEFAULT, s);
330 private static final String COMMENT_DISPLAY_MAX_SIZE_MANUAL = "comment.displaysize.manual";
332 public String getCommentDisplaySizeManual() {
333 return config.getString(COMMENT_DISPLAY_MAX_SIZE_MANUAL, "");
336 public void setCommentDisplaySizeManual(String s) {
337 config.setProperty(COMMENT_DISPLAY_MAX_SIZE_MANUAL, s);
339 private static final String COMMENT_FONTPATH = "comment.fontpath";
341 public String getFontPath() {
342 return config.getString(COMMENT_FONTPATH, "C:/Windows/Fonts/msgothic.ttc");
345 public void setFontPath(String s) {
346 config.setProperty(COMMENT_FONTPATH, s);
348 private static final String COMMENT_FONT_INDEX = "comment.fontindex";
350 public String getFontIndex() {
351 return config.getString(COMMENT_FONT_INDEX, "1");
354 public void setFontIndex(String s) {
355 config.setProperty(COMMENT_FONT_INDEX, s);
357 private static final String COMMENT_FONT_SHADOW = "comment.fontshadow";
359 public int getFontShadow() {
360 return config.getInt(COMMENT_FONT_SHADOW, 1);
363 public void setFontShadow(int s) {
364 config.setProperty(COMMENT_FONT_SHADOW, s);
366 private static final String COMMENT_FONT_SIZING_DISABLE = "comment.font_no_sizing";
368 public boolean getFontSizeArrangeDisable() {
369 return config.getBoolean(COMMENT_FONT_SIZING_DISABLE, false);
372 public void setFontSizeArrangeDisable(boolean s) {
373 config.setProperty(COMMENT_FONT_SIZING_DISABLE, s);
375 private static final String COMMENT_FONT_OPAQUE = "comment.opaque";
377 public boolean getCommentOpaque() {
378 return config.getBoolean(COMMENT_FONT_OPAQUE, false);
381 public void setCommentOpaque(boolean s) {
382 config.setProperty(COMMENT_FONT_OPAQUE, s);
384 private static final String FFMPEG_PATH = "ffmpeg.path";
386 public String getFfmpegPath() {
387 return config.getString(FFMPEG_PATH, "bin/ffmpeg.exe");
390 public void setFfmpegPath(String s) {
391 config.setProperty(FFMPEG_PATH, s);
393 private static final String FFMPEG_DLLPATH = "ffmpeg.dllpath";
395 public String getFfmpegDllPath() {
396 return config.getString(FFMPEG_DLLPATH, "bin/nicovideo.dll");
399 public void setFfmpegDllPath(String s) {
400 config.setProperty(FFMPEG_DLLPATH, s);
402 private static final String MEDIAINFO_PATH = "ffmpeg.mediainfopath";
404 public String getMediaInfoPath() {
405 return config.getString(MEDIAINFO_PATH, "bin/MediaInfo.exe");
408 public void setMediaInfoPath(String s) {
409 config.setProperty(MEDIAINFO_PATH, s);
411 private static final String FFMPEG_PARAM_OPTIONFILE = "ffmpeg.param.optionfile";
413 public String getFfmpegOptionFile() {
414 return config.getString(FFMPEG_PARAM_OPTIONFILE, null);
417 public void setFfmpegOptionFile(String s) {
418 config.setProperty(FFMPEG_PARAM_OPTIONFILE, s);
420 private static final String FFMPEG_PARAM_EXT = "ffmpeg.param.ext";
422 public String getFfmpegExtension() {
423 return config.getString(FFMPEG_PARAM_EXT, ".m4v");
426 public void setFfmpegExtension(String s) {
427 config.setProperty(FFMPEG_PARAM_EXT, s);
429 private static final String FFMPEG_PARAM_MAIN = "ffmpeg.param.main";
431 public String getFfmpegMainOption() {
432 return config.getString(FFMPEG_PARAM_MAIN, "");
435 public void setFfmpegMainOption(String s) {
436 config.setProperty(FFMPEG_PARAM_MAIN, s);
438 private static final String FFMPEG_PARAM_IN = "ffmpeg.param.in";
440 public String getFfmpegInOption() {
441 return config.getString(FFMPEG_PARAM_IN, "");
444 public void setFfmpegInOption(String s) {
445 config.setProperty(FFMPEG_PARAM_IN, s);
447 private static final String FFMPEG_PARAM_OUT = "ffmpeg.param.out";
449 public String getFfmpegOutOption() {
450 return config.getString(FFMPEG_PARAM_OUT,
451 "-f ipod -g 150 -qcomp 0.7 -qmin 20 -qmax 30 -qdiff 4 -subq 6 -me_range 16 -i_qfactor 0.714286");
454 public void setFfmpegOutOption(String s) {
455 config.setProperty(FFMPEG_PARAM_OUT, s);
457 private static final String FFMPEG_PARAM_AV = "ffmpeg.param.av";
459 public String getFfmpegAvOption() {
460 return config.getString(FFMPEG_PARAM_AV, "");
463 public void setFfmpegAvOption(String s) {
464 config.setProperty(FFMPEG_PARAM_AV, s);
466 private static final String FFMPEG_PARAM_RESIZE = "ffmpeg.param.resize";
468 public boolean getFfmpegResizeEnable() {
469 return config.getBoolean(FFMPEG_PARAM_RESIZE, false);
472 public void setFfmpegResizeEnable(boolean s) {
473 config.setProperty(FFMPEG_PARAM_RESIZE, s);
475 private static final String FFMPEG_PARAM_RESIZE_WIDTH = "ffmpeg.param.resize_width";
477 public String getFfmpegResizeWidth() {
478 return config.getString(FFMPEG_PARAM_RESIZE_WIDTH, "480");
481 public void setFfmpegResizeWidth(String s) {
482 config.setProperty(FFMPEG_PARAM_RESIZE_WIDTH, s);
484 private static final String FFMPEG_PARAM_RESIZE_HEIGHT = "ffmpeg.param.resize_height";
486 public String getFfmpegResizeHeight() {
487 return config.getString(FFMPEG_PARAM_RESIZE_HEIGHT, "320");
490 public void setFfmpegResizeHeight(String s) {
491 config.setProperty(FFMPEG_PARAM_RESIZE_HEIGHT, s);
493 private static final String FFMPEG_PARAM_KEEP_ASPECT = "ffmpeg.param.keep_aspect";
495 public boolean getFfmpegKeepAspect() {
496 return config.getBoolean(FFMPEG_PARAM_KEEP_ASPECT, true);
499 public void setFfmpegKeepAspect(boolean s) {
500 config.setProperty(FFMPEG_PARAM_KEEP_ASPECT, s);
502 private static final String DISPLAY_CONVERTING = "convert.display_converting";
504 public boolean getFfmpegDisplayConverting() {
505 return config.getBoolean(DISPLAY_CONVERTING, true);
508 public void setFfmpegDisplayConverting(boolean s) {
509 config.setProperty(DISPLAY_CONVERTING, s);
511 private static final String DLL_DISABLE = "convert.dll_disabled";
513 public boolean getFfmpegDllDisabled() {
514 return config.getBoolean(DLL_DISABLE, false);
517 public void setFfmpegDllDisabled(boolean s) {
518 config.setProperty(DLL_DISABLE, s);
520 private static final String NG_WORD = "ng.word";
522 @SuppressWarnings("unchecked")
523 public List<String> getNgWords() {
524 return config.getList(NG_WORD, new ArrayList<String>(0));
527 public void setNgWords(List<String> s) {
528 config.setProperty(NG_WORD, s);
530 private static final String NG_ID = "ng.id";
532 @SuppressWarnings("unchecked")
533 public List<String> getNgIds() {
534 return config.getList(NG_ID, new ArrayList<String>(0));
537 public void setNgIds(List<String> s) {
538 config.setProperty(NG_ID, s);
544 private static final String SEARCH_VIDEO = "search.video";
546 @SuppressWarnings("unchecked")
547 public List<String> getSearchVideoDirs() {
548 return config.getList(SEARCH_VIDEO, new ArrayList<String>(1));
551 public void setSearchVideoDirs(List<String> s) {
552 config.setProperty(SEARCH_VIDEO, s);
554 private static final String SEARCH_COMMENT = "search.comment";
556 @SuppressWarnings("unchecked")
557 public List<String> getSearchCommentDirs() {
558 return config.getList(SEARCH_COMMENT, new ArrayList<String>(1));
561 public void setSearchCommentDirs(List<String> s) {
562 config.setProperty(SEARCH_COMMENT, s);
568 private static final String SYSTEM_DOWNLOAD_THREAD = "system.download.thread";
570 public int getSystemDownloadThread() {
571 return config.getInt(SYSTEM_DOWNLOAD_THREAD, 1);
574 public void setSystemDownloadThread(int s) {
575 config.setProperty(SYSTEM_DOWNLOAD_THREAD, s);
577 private static final String SYSTEM_DOWNLOAD_WAIT = "system.download.wait";
579 public int getSystemDownloadWait() {
580 return config.getInt(SYSTEM_DOWNLOAD_WAIT, 30);
583 public void setSystemDownloadWait(int s) {
584 config.setProperty(SYSTEM_DOWNLOAD_WAIT, s);
586 private static final String SYSTEM_CONVERT_THREAD = "system.convert.thread";
588 public int getSystemConvertThread() {
589 return config.getInt(SYSTEM_CONVERT_THREAD, 2);
592 public void setSystemConvertThread(int s) {
593 config.setProperty(SYSTEM_CONVERT_THREAD, s);
595 private static final String SYSTEM_TEMPDIR = "system.tempdir";
597 public String getSystemTempDir() {
598 return config.getString(SYSTEM_TEMPDIR, "tmp");
601 public void setSystemTempDir(String s) {
602 config.setProperty(SYSTEM_TEMPDIR, s);
604 private static final String SYSTEM_WINDOW_WIDTH = "system.window.width";
606 public int getSystemWindowWidth() {
607 return config.getInt(SYSTEM_WINDOW_WIDTH, -1);
610 public void setSystemWindowWidth(int s) {
611 config.setProperty(SYSTEM_WINDOW_WIDTH, s);
613 private static final String SYSTEM_WINDOW_HEIGHT = "system.window.height";
615 public int getSystemWindowHeight() {
616 return config.getInt(SYSTEM_WINDOW_HEIGHT, -1);
619 public void setSystemWindowHeight(int s) {
620 config.setProperty(SYSTEM_WINDOW_HEIGHT, s);
622 private static final String SYSTEM_WINDOW_POS_X = "system.window.posx";
624 public int getSystemWindowPosX() {
625 return config.getInt(SYSTEM_WINDOW_POS_X, Integer.MIN_VALUE / 2);
628 public void setSystemWindowPosX(int s) {
629 config.setProperty(SYSTEM_WINDOW_POS_X, s);
631 private static final String SYSTEM_WINDOW_POS_Y = "system.window.posy";
633 public int getSystemWindowPosY() {
634 return config.getInt(SYSTEM_WINDOW_POS_Y, Integer.MIN_VALUE / 2);
637 public void setSystemWindowPosY(int s) {
638 config.setProperty(SYSTEM_WINDOW_POS_Y, s);
640 private static final String SYSTEM_COLUMN_ID = "system.column.id";
642 public int getSystemColumnId() {
643 return config.getInt(SYSTEM_COLUMN_ID, -1);
646 public void setSystemColumnId(int s) {
647 config.setProperty(SYSTEM_COLUMN_ID, s);
649 private static final String SYSTEM_COLUMN_VIDEO = "system.column.video";
651 public int getSystemColumnVideo() {
652 return config.getInt(SYSTEM_COLUMN_VIDEO, -1);
655 public void setSystemColumnVideo(int s) {
656 config.setProperty(SYSTEM_COLUMN_VIDEO, s);
658 private static final String SYSTEM_COLUMN_COMMENT = "system.column.comment";
660 public int getSystemColumnComment() {
661 return config.getInt(SYSTEM_COLUMN_COMMENT, -1);
664 public void setSystemColumnComment(int s) {
665 config.setProperty(SYSTEM_COLUMN_COMMENT, s);
667 private static final String SYSTEM_COLUMN_CONVERT = "system.column.convert";
669 public int getSystemColumnConvert() {
670 return config.getInt(SYSTEM_COLUMN_CONVERT, -1);
673 public void setSystemColumnConvert(int s) {
674 config.setProperty(SYSTEM_COLUMN_CONVERT, s);
676 private static final String SYSTEM_COLUMN_STATUS = "system.column.status";
678 public int getSystemColumnStatus() {
679 return config.getInt(SYSTEM_COLUMN_STATUS, -1);
682 public void setSystemColumnStatus(int s) {
683 config.setProperty(SYSTEM_COLUMN_STATUS, s);
689 public void load(String fileName) throws ConfigurationException {
690 config.setFileName(fileName);
694 public void save(File file) throws ConfigurationException {
695 config.setFile(file);
699 public void save() throws ConfigurationException {