平时聊天或写文章的时候,一直使用QQ拼音,经常会在打字的时候蹦出表情来,昨天突然就想把这沙雕表情插入到我的文章里面.. 还可以稍显生动一些..
然后找到了QQ拼音存在电脑本地的数据库,image.***.db
文件,很明显为sqlite数据库,并且无加密或密码,可以直接打开。
就看到了几百个表情包地址..关键是下载无鉴权,很容易就可以下载下来..但是考虑到有500+之多..自然还是程序来做。
由于之前未使用过sqlite3数据库,这里做个小尝试..发现连接使用并不难..
node-sqlite3 模块,https://github.com/mapbox/node-sqlite3/wiki/API#main
axios ,进行文件下载
代码很简短,几十行就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();
})
});
}
转载请注明出处: https://chrunlee.cn/article/node-sqlite-qq-emoj.html