From bb375939bb0ef3500f06c934d981240590ff8907 Mon Sep 17 00:00:00 2001 From: yuki Date: Mon, 19 Apr 2010 13:58:59 +0000 Subject: [PATCH] =?utf8?q?=E3=82=B3=E3=83=B3=E3=83=95=E3=82=A3=E3=82=B0?= =?utf8?q?=E3=82=92=E7=94=A8=E3=81=84=E3=81=9F=E7=A6=81=E5=89=87=E6=96=87?= =?utf8?q?=E5=AD=97=E7=BD=AE=E6=8F=9B=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://192.168.11.7/svn/repository/NicoBrowser/branches/dev20100419_filename@311 bdf3b611-c98c-6041-8292-703d9c9adbe7 --- src/nicobrowser/NamePattern.java | 39 ++++++++++++++++++++++------------- src/nicobrowser/NicoHttpClient.java | 2 +- src/nicobrowser/main/Main.java | 3 ++- test/nicobrowser/NamePatternTest.java | 19 +++++++++-------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/nicobrowser/NamePattern.java b/src/nicobrowser/NamePattern.java index 38a41df..83ae08a 100644 --- a/src/nicobrowser/NamePattern.java +++ b/src/nicobrowser/NamePattern.java @@ -4,18 +4,18 @@ */ package nicobrowser; -import java.util.regex.Pattern; - /** * * @author yuki */ public class NamePattern { - private static final String titlePattern = "\\{title\\}"; - private static final String idPattern = "\\{id\\}"; - private static final String lowPattern = "\\{low\\}"; + private static final String titlePattern = "{title}"; + private static final String idPattern = "{id}"; + private static final String lowPattern = "{low}"; private final String pattern; + private final String replaceFrom; + private final String replaceTo; private final String title; /** @@ -23,21 +23,32 @@ public class NamePattern { * @param pattern 命名パターン. * @param title ファイル名に用いるタイトル文字列. 禁則文字が入っていてはならない. */ - public NamePattern(String pattern, String title) { + public NamePattern(String pattern, String replaceFrom, String replaceTo, String title) { this.pattern = pattern; + this.replaceFrom = replaceFrom; + this.replaceTo = replaceTo; this.title = title; } - public String getTitle(){ - return title; - } - String createFileName(String id, boolean isNotLow) { String res = pattern; - res = res.replaceAll(titlePattern, title); - res = res.replaceAll(idPattern, id); + res = res.replace(titlePattern, title); + res = res.replace(idPattern, id); String low = isNotLow ? "" : "low"; - res = res.replaceAll(lowPattern, low); - return res; + res = res.replace(lowPattern, low); + char[] replaceds = new char[replaceFrom.length()]; + replaceFrom.getChars(0, replaceFrom.length(), replaceds, 0); + StringBuilder str = new StringBuilder(); + for (int i = 0; i < res.length(); i++) { + char c = res.charAt(i); + String moji = new String("" + c); + for (char replaced : replaceds) { + if (c == replaced) { + moji = replaceTo; + } + } + str.append(moji); + } + return str.toString(); } } diff --git a/src/nicobrowser/NicoHttpClient.java b/src/nicobrowser/NicoHttpClient.java index 3b1c7da..557f605 100644 --- a/src/nicobrowser/NicoHttpClient.java +++ b/src/nicobrowser/NicoHttpClient.java @@ -649,7 +649,7 @@ public class NicoHttpClient { ProgressListener listener) throws IOException, URISyntaxException, HttpException, InterruptedException { String file = FilenameUtils.getName(fileName); String dir = fileName.substring(0, fileName.length() - file.length()); - NamePattern np = new NamePattern(file, ""); + NamePattern np = new NamePattern(file, "", "", ""); return getFlvFile(vi, new File(dir), np, nowStatus, needLowFile, listener); } diff --git a/src/nicobrowser/main/Main.java b/src/nicobrowser/main/Main.java index 2ed49de..e39c480 100644 --- a/src/nicobrowser/main/Main.java +++ b/src/nicobrowser/main/Main.java @@ -192,7 +192,8 @@ public class Main { } prevDate = Calendar.getInstance().getTime(); File saveDir = new File(config.getSrcSaveDir()); - NamePattern np = new NamePattern(config.getFileNamePattern(), Util.getRegularFileName(c.getTitle())); + NamePattern np = new NamePattern(config.getFileNamePattern(), config.getFileNameReplaceFrom(), config. + getFileNameReplaceTo(), Util.getRegularFileName(c.getTitle())); log.info("ファイルを取得します: " + c.getNicoId() + " " + c.getTitle()); try { VideoInfo vi = instance.getVideoInfo(c.getNicoId()); diff --git a/test/nicobrowser/NamePatternTest.java b/test/nicobrowser/NamePatternTest.java index 0326d98..2a3e086 100644 --- a/test/nicobrowser/NamePatternTest.java +++ b/test/nicobrowser/NamePatternTest.java @@ -15,26 +15,27 @@ public class NamePatternTest { */ @Test public void testCreateFileName() { - final String title = "タイトル"; + final String title = "*タ\\イ/ト\"ル"; + System.out.println(title); final String id = "sm9999"; String res; System.out.println("createFileName"); - NamePattern np = new NamePattern("{title}", title); + NamePattern np = new NamePattern("{title}{title}", "*\\/\"", "_", title); res = np.createFileName("sm9", true); - assertEquals(title, res); + assertEquals("_タ_イ_ト_ル_タ_イ_ト_ル", res); - NamePattern np2 = new NamePattern("[{id}]{title}", title); + NamePattern np2 = new NamePattern("[{id}]{title}", "9タ", "-", title); res = np2.createFileName(id, false); - assertEquals("[sm9999]タイトル", res); + assertEquals("[sm----]*-\\イ/ト\"ル", res); - NamePattern np3 = new NamePattern("{id}{low}_{title}", title); + NamePattern np3 = new NamePattern("{id}{low}_{title}", "", "", title); res = np3.createFileName(id, false); - assertEquals("sm9999low_タイトル", res); + assertEquals("sm9999low_*タ\\イ/ト\"ル", res); - NamePattern np4 = new NamePattern("{id}{low}_{title}", title); + NamePattern np4 = new NamePattern("{id}{low}_{title}", "/*-", "*", title); res = np4.createFileName(id, true); - assertEquals("sm9999_タイトル", res); + assertEquals("sm9999_*タ\\イ*ト\"ル", res); } } -- 2.11.0