From 245bdc14cef5bbbb5274f46cd60bf8b7431f069a Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 22 Mar 2015 02:54:32 +0800 Subject: [PATCH] Fix parse error --- .../hippo/ehviewer/ehclient/DetailParser.java | 48 ++++++++++--------- .../ehviewer/ehclient/EdDetailParser.java | 6 +-- .../java/com/hippo/ehviewer/util/Utils.java | 26 +++++----- 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ehclient/DetailParser.java b/app/src/main/java/com/hippo/ehviewer/ehclient/DetailParser.java index a68193049..13cdd36c9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ehclient/DetailParser.java +++ b/app/src/main/java/com/hippo/ehviewer/ehclient/DetailParser.java @@ -16,13 +16,6 @@ package com.hippo.ehviewer.ehclient; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import com.hippo.ehviewer.data.Comment; import com.hippo.ehviewer.data.LargePreviewList; import com.hippo.ehviewer.data.NormalPreviewList; @@ -30,6 +23,13 @@ import com.hippo.ehviewer.util.EhUtils; import com.hippo.ehviewer.util.Utils; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class DetailParser { private static final String OFFENSIVE_STRING = @@ -125,24 +125,27 @@ public int parser(String body, int mode) { // Get detail if ((mode & DETAIL) != 0) { p = Pattern - .compile("
]+/>
" // thumb + .compile("
]+>
" // thumb + "" + "
" + "

([^<>]+)

" // title + "

([^<>]*)

" // title_jpn might be empty string + "
" + ".+" - + "
]+><[^<>]*alt=\"([\\w|\\-]+)\"[^<>]*/>
" // category + + "
]+><[^<>]*alt=\"([\\w|\\-]+)\"[^<>]*>
" // category + "
]+>([^<>]+)" // uploader + ".+" + "]*>Posted:]*>([\\w|\\-|\\s|:]+)" // posted - + "]*>Images:]*>([\\d]+) @ ([\\w|\\.|\\s]+)" // pages and size - + "]*>Resized:]*>([^<>]+)" // resized + //+ "]*>Images:]*>([\\d]+) @ ([\\w|\\.|\\s]+)" // pages and size + //+ "]*>Resized:]*>([^<>]+)" // resized + "]*>Parent:]*>(?:]*>)?([^<>]+)(?:)?" // parent + "]*>Visible:]*>([^<>]+)" // visible + "]*>Language:]*>([^<>]+)" // language + + "]*>File Size:]*>([^<>]+)]*>([^<>]+)" // File size and resize + + "]*>Length:]*>([\\d|,]+) pages" // pages + + "]*>Favorited:<[^<>]*>([^<>]+)" // Favorite times ([\d|,]+) times or Never + ".+" - + "\\(([\\d|,]+)\\)" // people + + "([\\d|,]+)" // people + "" + "]*>([^<>]+)" // rating + ".+" @@ -157,27 +160,28 @@ public int parser(String body, int mode) { category = EhUtils.getCategory(m.group(4)); uploader = m.group(5); posted = m.group(6); - pages = Integer.parseInt(m.group(7)); - size = m.group(8); - resized = m.group(9); - parent = m.group(10); - visible = m.group(11); - language = m.group(12); - people = Integer.parseInt(m.group(13).replace(",", "")); + parent = m.group(7); + visible = m.group(8); + language = Utils.unescapeXml(m.group(9)).trim(); + size = Utils.unescapeXml(m.group(10)).trim(); + resized = m.group(11); + pages = Integer.parseInt(m.group(12).replace(",", "")); + // favoriteTimes = m.group(13) + people = Integer.parseInt(m.group(14).replace(",", "")); Pattern pattern = Pattern.compile("([\\d|\\.]+)"); - Matcher matcher = pattern.matcher(m.group(14)); + Matcher matcher = pattern.matcher(m.group(15)); if (matcher.find()) rating = Float.parseFloat(matcher.group(1)); else rating = Float.NaN; - firstPage = m.group(15); + firstPage = m.group(16); } } // Get tag if ((mode & TAG) != 0) { - tags = new LinkedHashMap>(); + tags = new LinkedHashMap<>(); p = Pattern .compile("]+>([\\w\\s]+):(?:]+>]+>[\\w\\s]+
)+"); m = p.matcher(body); diff --git a/app/src/main/java/com/hippo/ehviewer/ehclient/EdDetailParser.java b/app/src/main/java/com/hippo/ehviewer/ehclient/EdDetailParser.java index 0b2644aa5..1fed239c4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ehclient/EdDetailParser.java +++ b/app/src/main/java/com/hippo/ehviewer/ehclient/EdDetailParser.java @@ -16,13 +16,13 @@ package com.hippo.ehviewer.ehclient; +import com.hippo.ehviewer.util.Log; + import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.hippo.ehviewer.util.Log; - public class EdDetailParser { int previewPageNum; @@ -80,7 +80,7 @@ public boolean parser(String body, int mode, boolean needPreviewInfo) { return false; } - p = Pattern.compile("Images:([\\d,]+) "); + p = Pattern.compile("]*>Length:]*>([\\d|,]+) pages"); m = p.matcher(body); if (m.find()) imageNum = Integer.valueOf(m.group(1).replace(",", "")); diff --git a/app/src/main/java/com/hippo/ehviewer/util/Utils.java b/app/src/main/java/com/hippo/ehviewer/util/Utils.java index dd6d7a903..753135c32 100644 --- a/app/src/main/java/com/hippo/ehviewer/util/Utils.java +++ b/app/src/main/java/com/hippo/ehviewer/util/Utils.java @@ -281,21 +281,23 @@ public static void execute(final boolean forceSerial, final AsyncTask", - "\"", - "'", - "×" + "&", + "<", + ">", + "\"", + "'", + "×", + " " }; /**