添加了一个UBB解析API

@Ta 2023-03-22发布,2023-03-29修改 19721点击

服务访问点

https://hu60.cn/q.php/api.ubb.json

通过请求体中的JSON传递参数:

curl https://hu60.cn/q.php/api.ubb.json -d '{要传递的JSON内容}'

如果不方便直接把请求体设为JSON,还可以把要传递的JSON放在POST的data参数里:

curl https://hu60.cn/q.php/api.ubb.json -d 'data={要传递的JSON内容}'

参数

输入格式:

  • input:字符串,取值如下:
    • ubb:未解析的UBB文本
    • json:UBB解析后生成的JSON数组,由消息推送服务或其他虎绿林API返回

输出格式:

  • output:字符串,取值如下:
    • html:输出UBB文本或JSON数组对应的HTML
    • text:输出UBB文本或JSON数组对应的纯文本内容
    • ubb:输出JSON数组对应的UBB文本
    • json:输出UBB文本对应的JSON数组

要处理的内容:

  • values:数组或对象,每个成员都是待解析内容。例子:

    • ['内容1', '内容2']
    • {"a1":"内容1", "a2":"内容2"}
  • 如果inputjson,则内容可以既可以是JSON数组,也可以是JSON数组字符串:

    • [[JSON内容1], [JSON内容2]]
    • ["[JSON内容1]", "[JSON内容2]"]
    • {"a1":[JSON内容1], "a2":[JSON内容2]}
    • {"a1":"[JSON内容1]", "a2":"[JSON内容2]"}

注意:values被设计为同时处理多条消息,所以就算只有一条消息要解析,也应该把它套在数组中(消息本身就是一个JSON数组,外面还要再套一层)。

返回值

API的返回值JSON格式与输入参数相同,只是values中的每个待解析内容都被解析后的内容替换,如:

{
    "input": "ubb",
    "output": "html",
    "values": [
        "解析后的内容1",
        "解析后的内容2"
    ]
}

示例

UBB文本转HTML

curl https://hu60.cn/q.php/api.ubb.json -d '
{
    "input" : "ubb",
    "output": "html",
    "values": [
        "《图片:https://file.hu60.cn/file/hash/png/9496af62df8e80c9b56fa358de08d0b095069.png,image.png(92.84 KB)》",
        "<!-- markdown -->\n### 你好\n\n1. 第一行\n2. 第二行\n3. 第三行"
    ]
}'

UBB文本转JSON数组

curl https://hu60.cn/q.php/api.ubb.json -d '
{
    "input" : "ubb",
    "output": "json",
    "values": {
        "uid-1-tid-1":"《图片:https://file.hu60.cn/file/hash/png/9496af62df8e80c9b56fa358de08d0b095069.png,image.png(92.84 KB)》",
        "uid-2-tid-2":"<!-- markdown -->\n### 你好\n\n1. 第一行\n2. 第二行\n3. 第三行"
    }
}'

JSON数组转HTML

curl https://hu60.cn/q.php/api.ubb.json -d '
{
    "input": "json",
    "output": "html",
    "values": [
        [
            {
                "type": "imgzh",
                "src": "https://file.hu60.cn/file/hash/png/9496af62df8e80c9b56fa358de08d0b095069.png",
                "alt": "image.png(92.84 KB)"
            }
        ],
        [
            {
                "type": "markdown"
            },
            {
                "type": "text",
                "value": "\n### 你好\n\n1. 第一行\n2. 第二行\n3. 第三行"
            }
        ]
    ]
}'

JSON数组转UBB文本

传入JSON数组:

curl https://hu60.cn/q.php/api.ubb.json -d '
{
    "input": "json",
    "output": "ubb",
    "values": [
        [
            {
                "type": "imgzh",
                "src": "https://file.hu60.cn/file/hash/png/9496af62df8e80c9b56fa358de08d0b095069.png",
                "alt": "image.png(92.84 KB)"
            }
        ],
        [
            {
                "type": "markdown"
            },
            {
                "type": "text",
                "value": "\n### 你好\n\n1. 第一行\n2. 第二行\n3. 第三行"
            }
        ]
    ]
}'

传入JSON数组字符串:

curl https://hu60.cn/q.php/api.ubb.json -d '
{
    "input": "json",
    "output": "ubb",
    "values": [
        "[{\"type\":\"imgzh\",\"src\":\"https://file.hu60.cn/file/hash/png/9496af62df8e80c9b56fa358de08d0b095069.png\",\"alt\":\"image.png(92.84 KB)\"}]"
    ]
}'
回复列表(15|隐藏机器人聊天)
  • @Ta / 2023-03-22 / /

    @rkonfj,可以用这个API来改善插件消息呈现。

  • @Ta / 2023-03-22 / /
  • @Ta / 2023-03-22 / /

    @老虎会游泳,要不出个 JS 版本?

  • @Ta / 2023-03-22 / /

    @rkonfj,短期内不会有。某些标记的解析需要查询数据库,或者应用服务器配置的过滤规则。

  • @Ta / 2023-03-22 / /

    @老虎会游泳,嗯。不过是否可以提前出一个严格版本,只翻译哪些安全的和不用查询数据的 UBB

  • @Ta / 2023-03-22 / /

    @rkonfj,你需要的应该是JSON数组转HTML吧,让ChatGPT翻译一下吧

    此外还需要找一个效果和Parsedown.php接近的js版Markdown解析器。

  • @Ta / 2023-03-22 / /

    @ChatGPT,把以下文件里的PHP代码翻译成JavaScript代码:
    https://github.com/hu60t/hu60wap6/blob/master/src/class/ubbdisplay.php

  • @Ta / 2023-03-22 / /

    @老虎会游泳,很抱歉,我无法直接将PHP代码翻译成JavaScript代码,因为它们是不同的编程语言,并且它们的语法和结构也有很大的差异。而且,这个文件似乎是为了在PHP中显示UBB代码而编写的,所以需要根据具体的需求进行适当的修改,才能将其转换为JavaScript代码。

    如果您有JavaScript中的特定问题,我会尽力帮助您。

  • @Ta / 2023-03-22 / /

    @rkonfj,整个文件肯定超过token限制,只能一段一段翻译了。我暂时没有时间进行操作。

  • @Ta / 2023-03-22 / /
  • @Ta / 2023-03-29 / /
    @rkonfj,我是不是写错了
    image.png(326.44 KB)

    {
        "input": "json",
        "output": "html",
        "values": [{"type":"atMsg","uid":-50,"pos":"聊天室“ChatGPT”第734楼中","url":"addin.chat.ChatGPT.{$BID}?floor=734#734","msg":[{"type":"markdown"},{"type":"text","value":"\r\n"},{"type":"at","tag":"#9977","uid":"9977"},{"type":"text","value":",很抱歉,如果我没有完全理解您的问题并提供有用的解决方案。在某些情况下,"},{"type":"mdpre","data":"`cellWidthIncrement`"},{"type":"text","value":" 可能是调整表格布局的最佳方法,因为它可以快速地应用于所有单元格,而不需要太多的代码。但是,对于更复杂的布局需求,自定义单元格通常是更好的选择,因为它提供了更大的灵活性和自定义性。\r\n\r\n作为一名 AI,我会尽我所能提供有用的信息和建议,但有时候也会出现误解或不足之处。希望我的回答能够帮助您解决问题。"}]}]
    }
  • @Ta / 2023-03-29 / /
    image.png(1.75 MB)
  • @Ta / 2023-03-29 / /

    @残缘,你是写错了啊,还要套一层数组。

    {
        "input": "json",
        "output": "html",
        "values": [
    [{"type":"atMsg","uid":-50,"pos":"聊天室“ChatGPT”第734楼中","url":"addin.chat.ChatGPT.{$BID}?floor=734#734","msg":[{"type":"markdown"},{"type":"text","value":"\r\n"},{"type":"at","tag":"#9977","uid":"9977"},{"type":"text","value":",很抱歉,如果我没有完全理解您的问题并提供有用的解决方案。在某些情况下,"},{"type":"mdpre","data":"`cellWidthIncrement`"},{"type":"text","value":" 可能是调整表格布局的最佳方法,因为它可以快速地应用于所有单元格,而不需要太多的代码。但是,对于更复杂的布局需求,自定义单元格通常是更好的选择,因为它提供了更大的灵活性和自定义性。\r\n\r\n作为一名 AI,我会尽我所能提供有用的信息和建议,但有时候也会出现误解或不足之处。希望我的回答能够帮助您解决问题。"}]}]
    ]
    }
    
  • @Ta / 2023-03-29 / /

    @残缘content是一个JSON数组,只是@消息的数组恰好只有一个成员。

    然后values被设计为通过数组或对象同时解析多条消息,所以如果只有一条消息要解析,就要在原有的数组外层再套一个数组。

  • 000
    @Ta / 01-03 01:48 / /

    当初想搞pwa版本也是被ubb吓退了

添加新回复
回复需要登录