*/
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;
/**
* @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();
}
}
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);
}
}
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());
*/
@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);
}
}