From 37b8bbbb4975d4539f5432676faa851532bb8c14 Mon Sep 17 00:00:00 2001 From: yukihane Date: Mon, 12 Sep 2011 17:28:08 +0900 Subject: [PATCH] =?utf8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=83=95?= =?utf8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=83=91=E3=83=BC=E3=82=B9=E6=99=82,?= =?utf8?q?=20=E9=80=9A=E5=B8=B8=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?utf8?q?=E3=81=A8=E6=8A=95=E7=A8=BF=E8=80=85=E3=82=B3=E3=83=A1=E3=83=B3?= =?utf8?q?=E3=83=88=E3=82=92=E5=88=86=E3=81=91=E3=81=A6=E3=83=91=E3=83=BC?= =?utf8?q?=E3=82=B9=E5=87=BA=E6=9D=A5=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?utf8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- frontend/src/saccubus/conv/ConvertToVideoHook.java | 12 +++++++++-- frontend/src/saccubus/conv/NicoXMLReader.java | 25 +++++++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/frontend/src/saccubus/conv/ConvertToVideoHook.java b/frontend/src/saccubus/conv/ConvertToVideoHook.java index 4991c29..3937f9d 100644 --- a/frontend/src/saccubus/conv/ConvertToVideoHook.java +++ b/frontend/src/saccubus/conv/ConvertToVideoHook.java @@ -1,6 +1,8 @@ package saccubus.conv; import java.io.*; +import java.util.EnumSet; +import java.util.Set; import org.xml.sax.*; import javax.xml.parsers.*; @@ -29,7 +31,13 @@ public final class ConvertToVideoHook { private ConvertToVideoHook() { } + @Deprecated public static void convert(File file, File out, String ng_id, String ng_word) throws IOException { + convert(EnumSet.allOf(NicoXMLReader.ProcessType.class), file, out, ng_id, ng_word); + } + + public static void convert(Set types, File file, File out, String ng_id, String ng_word) + throws IOException { try { final Packet packet = new Packet(); // SAXパーサーファクトリを生成 @@ -37,7 +45,7 @@ public final class ConvertToVideoHook { // SAXパーサーを生成 final SAXParser parser = spfactory.newSAXParser(); // XMLファイルを指定されたデフォルトハンドラーで処理します - final NicoXMLReader nico_reader = new NicoXMLReader(packet, ng_id, ng_word); + final NicoXMLReader nico_reader = new NicoXMLReader(types, packet, ng_id, ng_word); parser.parse(file, nico_reader); @@ -47,5 +55,5 @@ public final class ConvertToVideoHook { } catch (IOException | SAXException | ParserConfigurationException ex) { throw new IOException("コメント変換に失敗。ファイル名に使用できない文字が含まれているか正規表現の間違い?", ex); } - } + } } diff --git a/frontend/src/saccubus/conv/NicoXMLReader.java b/frontend/src/saccubus/conv/NicoXMLReader.java index 2b75a70..8fb5425 100644 --- a/frontend/src/saccubus/conv/NicoXMLReader.java +++ b/frontend/src/saccubus/conv/NicoXMLReader.java @@ -1,5 +1,7 @@ package saccubus.conv; +import java.util.EnumSet; +import java.util.Set; import java.util.regex.Pattern; import org.xml.sax.helpers.DefaultHandler; @@ -27,13 +29,20 @@ import org.xml.sax.Attributes; */ public class NicoXMLReader extends DefaultHandler { + private final Set processTypes; private final Packet packet; private final Pattern ngWord; private final Pattern ngId; private Chat item; private boolean itemKicked; - public NicoXMLReader(Packet packet, String ng_id, String ng_word) { + public enum ProcessType { + + NORMAL, OWNER; + } + + public NicoXMLReader(Set types, Packet packet, String ng_id, String ng_word) { + this.processTypes = EnumSet.copyOf(types); this.packet = packet; this.ngWord = makePattern(ng_word); this.ngId = makePattern(ng_id); @@ -128,6 +137,20 @@ public class NicoXMLReader extends DefaultHandler { // System.out.println("----------"); item = new Chat(); itemKicked = false; + + // 通常コメントを処理するか, 投稿者コメントを処理するか + final String fork = attributes.getValue("fork"); + final boolean isOwner = "1".equals(fork); + if (isOwner) { + if (!processTypes.contains(ProcessType.OWNER)) { + itemKicked = true; + } + } else { + if (!processTypes.contains(ProcessType.NORMAL)) { + itemKicked = true; + } + } + //マイメモリ削除対象 final String deleted = attributes.getValue("deleted"); if (deleted != null && deleted.equalsIgnoreCase("1")) { -- 2.11.0