自动生成OwO.json,快速扩展OwO表情

最近给博客增加了船新的雀魂表情包,由于从导出表情到重新配置OwO.json都是完全由自己来完成,不像上次扩展贴吧表情的时候有现成的东西可以直接拿来用,所以记录一下以便之后需要时留作参考。

并没有尝试一组表情中能否多种格式图片并存,这次统一采用了png格式,避免给自己找锅。

本次新增的一组表情共计151张,需要在OwO.json中对它们一一进行声明。手写是不太可能的,因为是大量的重复工作,懒惰如我显然是宁可写一个Generator也不会去一条条加。gen.py的内容如下:

#!/usr/bin/python3
OWO_NAME='雀魂'
OWO_SLUG='majsoul'
PICTURE_COUNT=151

f=open("OwO.json","w",encoding='utf-8')
f.write('''  "%s": {
    "name": "%s",
    "type": "image",
    "container": [
'''%(OWO_NAME,OWO_SLUG))
for i in range(1,PICTURE_COUNT+1):
    f.write('''      {
        "icon": "%03d",
        "text": "%03d"
      }'''%(i,i))
    if i<PICTURE_COUNT:
        f.write(',')
    f.write('\n')
f.write('''    ]
  }''')
f.close()

其中OWO_NAME为这组表情的显示名称,OWO_SLUG为表情的内部别名,PICTURE_COUNT为图片总数。若需要生成其他表情包声明,改动这些值即可。

执行后将在当前目录下生成一个OwO.json,内容是需要插入到完整OwO.json中的这个表情包的声明。

这里生成的并不是完整的json文件,需要手动将其插入完整的OwO.json中。

如果执行正确,将会生成形如下方代码块中所示的一段文本:

  "雀魂": {
    "name": "majsoul",
    "type": "image",
    "container": [
      {
        "icon": "001",
        "text": "001"
      },
      {
        "icon": "002",
        "text": "002"
      }
    ]
  }

为方便起见,我只列出了PICTURE_COUNT=2的情况。

插入位置如下图所示,需要视情况在后方补一个半角逗号。

插入位置举例

应用json检测工具检测通过后即可部署。


由于上述代码是针对Python3编写的,考虑到有时并不方便获取Python3执行环境,补充一个JavaScript版本:

(function(){
    'use strict';
    const OWO_NAME="雀魂";
    const OWO_SLUG="majsoul";
    const PICTURE_COUNT=151;
    
    const html_encode=str=>{
        let s="";
        if (str.length==0)return""; 
        s=str.replace(/&/g,"&amp;");
        s=s.replace(/</g,"&lt;");
        s=s.replace(/>/g,"&gt;");
        s=s.replace(/ /g,"&nbsp;");
        s=s.replace(/\'/g,"&#39;");
        s=s.replace(/\"/g,"&quot;");
        s=s.replace(/\n/g,"<br/>");
        return s; 
    }
    let output=`  "${OWO_NAME}": {
    "name": "${OWO_SLUG}",
    "type": "image",
    "container": [
`;
    for(let i=1,num;i<=PICTURE_COUNT;i++){
        num=(Array(3).join('0')+i).slice(-3);
        output+=`      {
        "icon": "${num}",
        "text": "${num}"
      }`;
        if(i<PICTURE_COUNT)output+=',';
        output+='\n';
    }
    output+=`    ]
  }`;
    document.write(`<code>${html_encode(output)}</code>`);
})();

在浏览器中新建标签页,按下F12键,在开发人员工具的Console选项卡中粘贴并执行上述代码即可生成在网页上,复制后插入即可。

JS版本

最后修改:2019 年 09 月 26 日 04 : 14 PM
欢迎投食喵 ~

发表评论 取消回复

4 条评论

  1. 没有楼的楼长

    您好,很好奇您的表情是怎么做到规范格式的,就是::表情名::这种,写了好久一直搞不出来(ó﹏ò。)

  2. 蝉時雨

  3. Dawn

  4. 灵曦