nodejs sqlite数据库之QQ拼音表情包

nodejs sqlite数据库之QQ拼音表情包

月光魔力鸭

2020-07-19 17:40 阅读 382 喜欢 0 QQ拼音表情包

平时聊天或写文章的时候,一直使用QQ拼音,经常会在打字的时候蹦出表情来,昨天突然就想把这沙雕表情插入到我的文章里面.. 还可以稍显生动一些..无

然后找到了QQ拼音存在电脑本地的数据库,image.***.db 文件,很明显为sqlite数据库,并且无加密或密码,可以直接打开。

就看到了几百个表情包地址..关键是下载无鉴权,很容易就可以下载下来..但是考虑到有500+之多..自然还是程序来做。

由于之前未使用过sqlite3数据库,这里做个小尝试..发现连接使用并不难..

资料查阅

代码

代码很简短,几十行就OK了,下载后可以通过RAR进行解压..目前暂时没想好如何插入到文章中,等后续考虑好了方式,再更新。

/***
 * 读取sqlite数据库,并下载所有的表情,并解压。
 */
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('db/image.db');
var axios = require('axios');
var fs = require('fs');

;(async function(){
    db.serialize(async ()=>{
        db.all("select * from downloadpacket",async (err,row)=>{
            console.log(row.length);
            await download(row);
      })
    })
})();

//下载表情包,并进行解压。
async function download(rows){
    for(let i in rows){
        let d = rows[i];
        let {expName,expDownloadUrl}  = d;
        //下载
        await fetch(expDownloadUrl,expName)
    }
}
async function fetch(url,name){
    let rs = await axios({
        url : url,
        type : 'get',
        responseType : 'stream'
    }).then(rs=>rs.data);
    var ws = fs.createWriteStream('./emoj/'+name+'.qqe');
    await r2w(rs,ws);
}

function r2w(rs,ws){
    return new Promise((resolve,reject)=>{
        rs.pipe(ws);
        rs.on('end',()=>{
            resolve();
        })
        rs.on('error',()=>{
            reject();

        })
    });
}

500+表情包

转载请注明出处: https://chrunlee.cn/article/node-sqlite-qq-emoj.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
最近发现有部分同学在网站上面无法支付,限于无法知道他们的具体情况,这里简单做几个猜测。
在写前端页面的时候,反复操作的是切换,写完代码,切换到浏览器,然后刷新,查看效果,不合适,然后再切换回编辑器,然后修改,这样反复操作。livereload 释放了双手,自动刷新(尤其是双屏的同学特别友好)
在通过vscode 来编写带有 eslint的项目的时候,会被各种各样的报错折磨崩溃,单引号 最后的逗号 空格 换行 各种各样。
孕早期饮食注意事项,这里先记录下,用于备忘。
一直在做K12教育方面的产品,不过大都是学校管理层面的,对于教学一直很少触及。当然,这类的产品已经存在不少了,在功能、设计方面我们都会借鉴一些进行改进,其中有一些基础数据,如果也是从头自己收集的话,我想,可能会死的吧...比如:各个学段内的教材和章节信息。
今天用github登录自己网站的时候,竟然意外的失败了,查了下日志,发现报错:Request forbidden by administrative rules 。
好久配置了,最近重新安装了一回,有忘了.. 果然还是得记录下来啊,起码以后不用到处找了对吧。
虽说docker已经大名鼎鼎,但在之前一直都未上手使用过,即便是前一阵子想挂下京东的京豆(使用docker)也给耽搁了,一直的感觉就是这货应该跟vm没啥区别吧,应该就是更方便更好用更适合开发者。