From 7b906f3c3e410e73e5db3fd7a3446e1b7c07e6b1 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 18 Dec 2022 02:11:46 +0800 Subject: [PATCH] Update tag database format --- .../hippo/ehviewer/client/EhTagDatabase.kt | 48 +++++++++---------- .../ehviewer/ui/scene/GalleryDetailScene.java | 7 +-- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt b/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt index 08937dfcd..4b5f37fd2 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt @@ -58,11 +58,12 @@ class EhTagDatabase(private val name: String, source: BufferedSource) { tags = tmpTags if (tags != null) { tagList = ArrayList() - tags.keys().forEachRemaining { k: String -> - try { - tagList!!.add(Pair(k, tags.getString(k))) - } catch (e: JSONException) { - e.printStackTrace() + tags.keys().forEachRemaining { prefix: String -> + val values = tags.optJSONObject(prefix) + values?.let { + it.keys().forEachRemaining { tag: String -> + tagList!!.add(Pair("$prefix:$tag", values.optString(tag))) + } } } } else { @@ -70,17 +71,16 @@ class EhTagDatabase(private val name: String, source: BufferedSource) { } } - fun getTranslation(tag: String?): String? { - try { - return tag?.let { tags!!.getString(it) } - } catch (e: JSONException) { - e.printStackTrace() - } - return null + fun getTranslation(prefix: String?, tag: String?): String? { + return tags!!.optJSONObject(prefix)?.optString(tag) } /* Construct a cold flow for tag database suggestions */ - fun suggestFlow(keyword: String, translate: Boolean, exactly: Boolean = false): Flow> = flow { + fun suggestFlow( + keyword: String, + translate: Boolean, + exactly: Boolean = false + ): Flow> = flow { tagList?.forEach { val tag = it.first val hint = if (translate) it.second else null @@ -120,17 +120,17 @@ class EhTagDatabase(private val name: String, source: BufferedSource) { private set init { - NAMESPACE_TO_PREFIX["artist"] = "a:" - NAMESPACE_TO_PREFIX["cosplayer"] = "cos:" - NAMESPACE_TO_PREFIX["character"] = "c:" - NAMESPACE_TO_PREFIX["female"] = "f:" - NAMESPACE_TO_PREFIX["group"] = "g:" - NAMESPACE_TO_PREFIX["language"] = "l:" - NAMESPACE_TO_PREFIX["male"] = "m:" - NAMESPACE_TO_PREFIX["mixed"] = "x:" - NAMESPACE_TO_PREFIX["other"] = "o:" - NAMESPACE_TO_PREFIX["parody"] = "p:" - NAMESPACE_TO_PREFIX["reclass"] = "r:" + NAMESPACE_TO_PREFIX["artist"] = "a" + NAMESPACE_TO_PREFIX["cosplayer"] = "cos" + NAMESPACE_TO_PREFIX["character"] = "c" + NAMESPACE_TO_PREFIX["female"] = "f" + NAMESPACE_TO_PREFIX["group"] = "g" + NAMESPACE_TO_PREFIX["language"] = "l" + NAMESPACE_TO_PREFIX["male"] = "m" + NAMESPACE_TO_PREFIX["mixed"] = "x" + NAMESPACE_TO_PREFIX["other"] = "o" + NAMESPACE_TO_PREFIX["parody"] = "p" + NAMESPACE_TO_PREFIX["reclass"] = "r" } @JvmStatic diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 8c4712b85..63b03efed 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -937,7 +937,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O String readableTagName = null; if (ehTags != null) { - readableTagName = ehTags.getTranslation("n:" + tg.groupName); + readableTagName = ehTags.getTranslation("n", tg.groupName); } TextView tgName = (TextView) inflater.inflate(R.layout.item_gallery_tag, ll, false); @@ -946,9 +946,6 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O tgName.setBackgroundTintList(ColorStateList.valueOf(colorName)); String prefix = EhTagDatabase.namespaceToPrefix(tg.groupName); - if (prefix == null) { - prefix = ""; - } AutoWrapLayout awl = new AutoWrapLayout(context); ll.addView(awl, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -959,7 +956,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O String readableTag = null; if (ehTags != null) { - readableTag = ehTags.getTranslation(prefix + tagStr); + readableTag = ehTags.getTranslation(prefix, tagStr); } tag.setText(readableTag != null ? readableTag : tagStr);