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.data.PreviewList;
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 class DetailParser {
// Get detail
if ((mode & DETAIL) != 0) {
p = Pattern
- .compile("
\"[^<)
]+/>
" // thumb
+ .compile("\"[^<)
]+>
" // thumb
+ ""
+ ""
+ "
([^<>]+)
" // title
+ "([^<>]*)
" // title_jpn might be empty string
+ ""
+ ".+"
- + "" // category
+ + "" // 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 class DetailParser {
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]+): | (?:)+ |
");
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 class EdDetailParser {
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 final class Utils {
}
private static final String[] ESCAPE_CHARATER_LIST = {
- "&",
- "<",
- ">",
- """,
- "'",
- "×"
+ "&",
+ "<",
+ ">",
+ """,
+ "'",
+ "×",
+ " "
};
private static final String[] UNESCAPE_CHARATER_LIST = {
- "&",
- "<",
- ">",
- "\"",
- "'",
- "×"
+ "&",
+ "<",
+ ">",
+ "\"",
+ "'",
+ "×",
+ " "
};
/**