jing332 / tts-server-android

这是一个Android系统TTS应用,内置微软演示接口,可自定义HTTP请求,可导入其他本地TTS引擎,以及根据中文双引号的简单旁白/对话识别朗读 ,还有自动重试,备用配置,文本替换等更多功能。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Importing Unicode replacement json files

mablue opened this issue · comments

db.json

import emoji

# Get all emoji names
all = emoji.EMOJI_DATA
i = 1
rlist = []
for pattern in all:
    i+=1
    replacement = all[pattern]['fa'].replace(":"," ").replace('_',' ')
    name = f"{pattern} {replacement}"
    db = {"id":i+1708092241186,"name":name,"pattern":pattern,"replacement":replacement,"order":i}
    rlist.append(db)
print(rlist)

full_content = [
    {
        "group": {
            "id": 1,
            "name": "گروه بندی پیش فرض"
        },
        "list": rlist
    }
]

with open('db.json','w',encoding="utf8") as file:
    file.write(str(full_content).replace("'",'"'))

Error

kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 10945: Invalid escaped char 'U' at path: $[0].list[90].name
JSON input: ....."id": 1708092241278, "name": "🏴\U000e0067\U000e0062\U000e00.....
	at zh.m.l(OnEnterRule.java:32)
	at zh.m.m(OnEnterRule.java:35)
	at ug.a.n(AbstractJsonLexer.kt:52)
	at ug.a.o(AbstractJsonLexer.kt:13)
	at ug.d0.e(StringJsonLexer.kt:125)
	at ug.a.j(AbstractJsonLexer.kt:12)
	at ug.a.k(AbstractJsonLexer.kt:44)
	at ug.a.l(AbstractJsonLexer.kt:1)
	at ug.a0.I(StreamingJsonDecoder.kt:9)
	at android.support.v4.media.a.C(MediaBrowserCompat.java:6)
	at ia.b$a.d(ReplaceRule.kt:97)
	at ug.a0.c0(StreamingJsonDecoder.kt:71)
	at android.support.v4.media.a.e0(MediaBrowserCompat.java:11)
	at ug.a0.e0(StreamingJsonDecoder.kt:46)
	at sg.o.k(CollectionSerializers.kt:8)
	at sg.a.j(CollectionSerializers.kt:38)
	at sg.a.d(CollectionSerializers.kt:6)
	at ug.a0.c0(StreamingJsonDecoder.kt:71)
	at android.support.v4.media.a.e0(MediaBrowserCompat.java:11)
	at ug.a0.e0(StreamingJsonDecoder.kt:46)
	at ia.a$a.d(GroupWithReplaceRule.kt:38)
	at ug.a0.c0(StreamingJsonDecoder.kt:71)
	at android.support.v4.media.a.e0(MediaBrowserCompat.java:11)
	at ug.a0.e0(StreamingJsonDecoder.kt:46)
	at sg.o.k(CollectionSerializers.kt:8)
	at sg.a.j(CollectionSerializers.kt:38)
	at sg.a.d(CollectionSerializers.kt:6)
	at ug.a0.c0(StreamingJsonDecoder.kt:71)
	at tg.a.a(Json.kt:31)
	at x9.z$c.invoke(ReplaceRuleImportBottomSheet.kt:45)
	at q9.g0.invokeSuspend(ConfigImportBottomSheet.kt:86)
	at ff.a.resumeWith(ContinuationImpl.kt:9)
	at eg.p0.run(DispatchedTask.kt:111)
	at a2.l1.U(AndroidUiDispatcher.android.kt:7)
	at a2.l1$c.run(AndroidUiDispatcher.android.kt:3)
	at android.os.Handler.handleCallback(Handler.java:958)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:205)
	at android.os.Looper.loop(Looper.java:294)
	at android.app.ActivityThread.main(ActivityThread.java:8244)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)

\{[^\{]+\\U[^\{]+\},

I removed buggy emojies but its not true way

db.json

f.json
I fixed the problem with this code but it generates english and I think it have not all advanced emojies

import unicodedata

i = 1
rlist = []

for codepoint in range(0x110000):
    i+=1
    replacement = chr(codepoint)
    if unicodedata.category(replacement) in ['So','Sm']:
        print(replacement, end=' ')
        pattern = unicodedata.name(replacement)
        name = f"{replacement} {pattern}"
        db = {
            "id":i,
            "name":name,
            "pattern":pattern,
            "replacement":replacement,
            "order":i
        }
        rlist.append(db)
        
full_content = [
    {
        "group": {
            "id": 1,
            "name": "Default group"
        },
        "list": rlist
    }
]

with open('f.json','w',encoding="utf8") as file:
    file.write(str(full_content).replace("'",'"'))