Initial commit

This commit is contained in:
Jad 2020-08-03 12:11:58 +00:00
commit cbbf373bd7
7 changed files with 1762 additions and 0 deletions

BIN
count.db Normal file

Binary file not shown.

57
db.js Normal file
View File

@ -0,0 +1,57 @@
const sqlite3 = require('sqlite3')
const db = new sqlite3.Database('count.db')
db.run(`CREATE TABLE IF NOT EXISTS tb_count (
id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL
UNIQUE,
name VARCHAR (32) NOT NULL
UNIQUE,
num BIGINT NOT NULL
DEFAULT (0)
);`)
function getNum(name) {
return new Promise((resolve, reject) => {
db.get('SELECT `name`, `num` from tb_count WHERE `name` = ?', name, (err, row) => {
if (err) reject(err)
resolve(row || { name, num: 0 })
})
})
}
function getAll(name) {
return new Promise((resolve, reject) => {
db.get('SELECT * from tb_count', (err, row) => {
if (err) reject(err)
resolve(row)
})
})
}
function setNum(name, num) {
return new Promise((resolve, reject) => {
db.run(`INSERT INTO tb_count(\`name\`, \`num\`)
VALUES($name, $num)
ON CONFLICT(name) DO
UPDATE SET \`num\` = $num;`
, {
$name: name,
$num: num
}
, (err, row) => {
if (err) reject(err)
resolve(row)
})
})
}
module.exports = {
getNum,
getAll,
setNum
}

74
index.js Normal file
View File

@ -0,0 +1,74 @@
'use strict'
const fs = require('fs')
const express = require('express')
const compression = require('compression')
const db = require('./db')
const numList = require('./num-list')
const PLACES = 7
function getCountImage(count) {
// This is not the greatest way for generating an SVG but it'll do for now
const countArray = count.toString().padStart(PLACES, '0').split('')
const parts = countArray.reduce((acc, next, index) => `
${acc}
<image x="${index * 45}" y="0" width="45px" height="100px" xlink:href="data:image/gif;base64,${numList[next]}" />
`, '')
return `<?xml version="1.0" encoding="UTF-8"?>
<svg width="${PLACES * 45}" height="100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Kawaii Count</title>
<g>
${parts}
</g>
</svg>
`
}
const app = express()
app.use(compression())
app.set('view engine', 'pug')
app.get('/', (req, res) => {
res.render('index')
});
// get the image
app.get('/get/@:name', async (req, res) => {
const name = req.params.name
if (!name) return
const counter = await db.getNum(name)
const num = counter.num + 1
db.setNum(counter.name, num)
// This helps with GitHub's image cache
res.set({
'content-type': 'image/svg+xml',
'cache-control': 'max-age=0, no-cache, no-store, must-revalidate'
})
// Send the generated SVG as the result
res.send(getCountImage(num))
console.log(counter)
})
app.get('/heart-beat', (req, res) => {
res.set({
'cache-control': 'max-age=0, no-cache, no-store, must-revalidate'
})
res.send('alive')
console.log('heart-beat')
});
const listener = app.listen(process.env.PORT, () => {
console.log('Your app is listening on port ' + listener.address().port)
})

12
num-list.js Normal file
View File

@ -0,0 +1,12 @@
module.exports = {
0: 'R0lGODlhLQBkALMAACocJKGkunN8ntXa6BE1dwxKpTdvw0mq6v7j0vDWzOGFgLZtauGjov7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827p04ohl8pjU2qCoJoco7aFEZtF2zrvmCcFgWZDJgTBBy8RygVmAmfs+IRWfI1mtAsC8BKUWFWrEwsXm27DZLGen2W340iV6D6Wthx4RseP6PTF3h5KgFvCzKHfX50V3ZKAUU5hUyJlIQLTXIAm5wAjiKRk1cKY5UBC6SanZ4ZIYVGTacMY6SUqTmramsOsKOztpcKkLibuh0OkwIKv1eowcNbrCa8mUDWBagB1wWbZ44eDgCZDOTl5udzXN/H4nGrCfDwq+ktL7xcDQAD1gPx8PtABtBbt+HelgYEEjZAwJAhQoUD7QkQN7HWwoYNVSiIOG1iLAYK/0JibBhyGccqHpvFG8kw3oKT4EIYaTSiZk1cxo6lmFkmi5mJgKrsjOXziRGgBDE4MLCsTc+iR0MmvdNwFtGiMugIYKhgKggE5EhdxcrkijmvShhUdSqjphuzDBmgdaCWK9s6KPTARdAVBjm7V/OmYfOx5dxyiQKLwDvGF4IEaJUYYHSliWAvi5k0QdX3WBjLmfEu0ZxiQeQJgi4PHi3kNOonqlVjFto6NGbWbQu4Tm17taA0uj/wxu0bioPg4LKwll0HuU7jVpjPFl7UbfXdv0UTh336eHay3I8J0A0efLjIvL6XryOtYIv1WB0cQP8evk8A88HNt8m//4j84FxTSP8AAwyQEBAHJEhDggoSYE13IRhQCA02SEhggQUuyKABDgKBXoEVDjggggweUMCFBWqTYHutDMCCNpPtQ+ArIhqhoYICFFhPTiAME8BkLGAzwIxDYlgkhoUQYMN8BSblQJNAjrdAgQtgYiAQUw5QZZET0uCiEU4iEaGUVZZ5YAEElLklDuNp8+UR4pGp5plpqrkAmwYcV8CQ9C3CwgJ0RnInC2LuAEOQcxQRaCRs1jONNYnmsKgcbLp2wjVcDEhohwTAMgwADz4KKYp8doiMkQGA6qE9Iuhj5AAOmPqqQNdYWoGrRsbq4ayqrprEk6/GWgOwuY6QxAmzxprgqUja2iLWqsrOR6qjx6L26hTL5oghtdUq8eqO82mro7NKfStmuMF2a22uJyyb7gnVEtskaia+Kx+5Sog7L73mygegPdd+QqqK/wLM7h2vFlCwwRiuI69A+K7bcCDvHstLxT0ayS3DE1N88K/JlvsxDw/DKnLHIGMMgrm/6rsvwioLR+rLFZSMb8kmezxyFbPmDPPOwvVMUMkbgyP0yUAfc7TOScOw9M9NF2TAq3kqNbWRC+tX4rJWb531MV5/LZnX5CJDditnkxzA1k6uzSCcKdPMdMQnGLoLjxVEAAA7',
1: 'R0lGODlhLQBkALMAAKGkunN8ntXa6BE1dwxKpTdvw0mq6vHm3+GBdvajm7QYF////wAAAP///wAAAAAAACH5BAEAAA0ALAAAAAAtAGQAAAT/sMlJq704622Z/2DYhWQZEoWhrqzKVAzRzvRaFIRcu1es70Bc7td6dYbApGGIag2Mx5wSmBvkUobCM+MjTllC63XLZXq/2WqVjGEIkSrsNLyGtt9SedwGjq/ZGm5meoR9aQQDiXZceAQCCwsCWY+QBQp8h4iAgW8GlAKWlAsGCo+gkm+bG4JelmCXe1liqpw4La42sFmysxxHKT8KCK98ColWi74xQisKCc8JWbAICQgIxwTJHG43wcaJztDH38i+MDe20gMKCgsJB/AH7O7HtIEoQt3G8/Hw/MfaVnWTomIfggX95B08oClgLThZrC3sZ20BAk322qBgYuMApITw/xAmUNDQnARWV2xAAwmvGklFJht0SbnC2juWz15m7PGBpoqbLZ+1vGZl5yo3LNYBbanAQ6JsMdt4UJEoQAB2CgKQ+RB1VVUAAK6GDcC1q0AmAcCGPUbWLJdHJuKKiBoCkt27ePNadNjjmd6/f6kh4EuBAYKWgBPbtUn4ZL8EiiOza8zgpl/AHxS75MtAwGF4BzF70DySs8V4ofPWTUytaaAFCob+XQ0YweTX4VLPHp2YAQDCDCBNVpy59+9tkX4T54257SoAApT3Zr7bnG/pooP3jlk8O/Gu2r1vp7s8/Gzw5b+TVy1Xb+MO7turRh+5/vvC9e2vzz/epHn+7u0HYP+A3A2ImYDZyQWeXB/U46BRZaAjIQ4PPnjfEQNM2M0sFcIE3hBWaKhFh09cWNgQDAxwjRkYWehWFy9U9oxEJEhkjYkTwHgSNNDYYZiNOMqEYo6PJeCjjYNxpyOR8RgJA5L3ecDEIgw8RiWUypiRTJVNbglkljl40MFS2vxIozJi9pBQmVi6xWQ8bH7ppkxLOdlBm25yCWcbeL64Jp9y5mkloNZAeM+gPTgY5IkYOdTZMQIIsOhJCzT6VqSYTtrZXZJeiqkAziG4gKOfZmrWf6N6+mmQm+JFaqmg4ohqqm3AGqmJrbqq6qoFEtiDrZ36d16ttuI67K/FCntsB8BeOCtHJK/C6uyBbQQAa6jILQuDtaViuwq1xH7qbSCi2BUsF9xGqhWuA5RKWYXsaqkMNojIOuF7KXIoKyjoRMkreJ84W9apA89JQQQAOw==',
2: 'R0lGODlhLQBkALMAAFBNYKGkulxiiC8yP3N8ntXa6BE1dwxKpTdvw/Xq5++WieVlXvHNzP7+/gEBAf///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq704a+163yDmjd1hmqQTWqlAvAJwIHSNmMYwAN76OK+gkCA4uIbEoiEX7G0cACRMOowtB0PnxRGLCo/ULwBgAICbqm3Xew4Hxzuz9FPhju9tNxGOj+n+aRR2d3pScH+IiIGCXQQBBQWFbwCJiTwiXY8FAQSbkEGQj5OVf5cZdp2coZ8vq6OkpiJjeWdgYIeWAwiLggcFBrRfQbeUuUsNvBIOCA0IXsLD0XvFpQNLAQa7LMw3wwICC9BEMLg71tfZyT/MRi8L7wpfCwr04XfVSwbYNOrLDQVeFtyJR0QgnAUC4uiglA/bDHU/ZhRwESPAmHgCFACwSIhSMYbo//idQlCGwIAFDb4xSMCSQcpvUXCBJJBNG4ccCVGmZMmzwcuY1HQYoPkwBJScL3myfJmRQDlrNEWCsDNAgcsGSpf6jPc0qs2pMTJazcqTHtdyBlCscDAgLICVZJWeDWoN4hY51OAmoNdSwdB7iJbYrSOn0tgEDPwG4AT4zxICg5WZiZLoxZJ3+nw6fToU8lS8iCxfXmDAZ4PNdEVHPur0j2h92AKY3kwq3+AUuHOnCGxgtenfwIMLZ6toqvDjyJEVN568uWniAyJPcOC8OnTpyqo7v250eO7kHXRgpx5cN/I0bMcDH7Hew/Dpa9t3kE9+vY/p2tmXv5/duvv9/NV3HP8J59XBHH0EDihILCJ4px94jPj224PWRfgEfdr5tAgXEj73X37TmXFbeR9WqEwMIyL4HYA/CNChh7rNZ9+JLl6YYYE/TPbijfYdxaAIiTEgJI8e6mgUYjxdhZyQ9CjZAYprIcmSAskp0NJKVCLjQG8+OBCkkAvEmCSWGtLRpVl+5aNmPkJ+SQJ/ynTwmAk21DCPWaQNxSWc0zlwgCPHLUZTEILxWccSM9RZwwFq/mjoD++cgIOc+bwT5qN1WKopepq+g51RAWi6GKeaFvDpVJCkOqoyiy1WADKYCpKqquil+lysss5qKn4T4jqdrrv2d6uvPwAbiICwEuuAsbyaFiy5rkDoeiyL0EoryIy+LjvrhthWu+21vSqrq2fC+vRsrNrS+mu3mKabKrfhevttsxqKay299cr7rqzsGuouJBu+Gm+7muwL7rDoFgxwHdT6q/C5PzTMpwMP87Jsv3BSfO+6Azs8rsUSB/hwACBjfJ/GGysjMMIep1ysyV0+DPHFv0Essq578uvsqSysaRsLKzdwAM+H+pzzdJIW5a/R/SRaA9GCML2FolBPp6YWdVDdLtYi2FD1oyNkEAEAOw==',
3: 'R0lGODlhLQBkALMAAN7NzqGkunN8ntXa6BE1dwxKpfrr4vHn5PKbjrFjYu28vP///wAAAP///wAAAAAAACH5BAEAAA0ALAAAAAAtAGQAAAT/sMlJq7046827/2AoMWTJiJmpkkvrLmv5lW87DHU+CALumilGzjbU7XhDGYXBEwx9Rdft2Hs1BafltbqARqXUXniQrTC33K80EN6WLeer9zsIsNHNtxkvpdt7aGQbDAFbfUV1f22CHIRXh3NddoVjehqEhU5EXTmTlE2MM58tBaUFOaYFgD2WHSQ7mzcviQEJVK0eQrC2C7xSCXYJeSgjuk4JCAO+NsC2V7iXDLA7AwjWCL7KyNjCedBwBARIO8gKCtfM1ufdAuEE3xMMpuJdPO4E1jfW91cEpvAN5JlycmSBKQTmzCEwtaDfv0bzCApAQKqAgYsYS7VAAMhfKYAC/0sRqGcOo8mT5jqKBOmxwMgj5xCcxKiOxw5/77AMaiey3sSZM7vdfMcE3hmcLcTxkDlTQTcCONphKXoJi72RC5Q2KbeuXwtvOlNMtZc0HA8AAhKoTYC2XbivPEiExUD1DA53AACs3avXnc8TVMUCtpmVAIB7iA37PTL4W12bAxQbzkuZsuQbcQPOhZPZ7oDDhlscGD26xWG0mHUGvnBmcI+2ANQYFtN58x7VZwuqQQvglmZorTUfWLXgAGXSlA3ABmtbi+qGqypLp9yk7djm8eIKwTNd+pW2crGPmBqjvHm54YFPVcO+BQnN4n8Laa8mS3C6cenXHx//t/4v9vXn3/9/RQQI0nw1nIfgC/YBNEIS5yUxwgzsmRCFg2ZUSEOBIiyYg4UAdgjghheKCOEKJYbg4Q8xpAjCigWSyKCJGrLwIY31yfgDjjDoCGKCPP7ono7u8ThkixyqeCKKSb5IYJMUPnmjklICSWWVO16JJQwdKuilEsQEpABNZbQ25kUIYDjImQakmR0WbLoZZjwImfNGHAkoJOecAV2zJ3/bWKPmJX7qcUagfxLDQEyCcoZooh0yCikTiCowKGuStsJApZfCkUoBmoYzD6hzMjFFKHucKuAgLrmDCwOIkRqmPPe8GmunS7Qajq33yKqoru+k0CuuIwAbLF29+qqiscAluyp7a8wK604p2i2LWLPTqjLMDNEim214U+XSLWvJAhaHg7TWKq2oHxWDYbqurttSp/DG6y27yoqbGLb40mvsseSW2+G//LJLb2L5LhFrwhDtK69H/n4KMBywTjuxvtdeksquKFRs78MX5+KWOEaN/CxdU6CbMp9gNvKeBhEAADs=',
4: 'R0lGODlhLQBkALMAAEglNZeRlrmyuNLG1BE1dzdvw0Z/vvz///zNif7q3OKhg6JsYdd/cIBQTgAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046817dWAIeuTlIGiKik5Znmq8sqxLOYyMKry+K7XXQpbzyRQpWiuDG6aKRiI0NjIxGE5GIuq7TlNADA6rPRy23JgXiWi4lyYFFmk+oMzoqPzqbizgYlgqWwkHCnYIBzlnKkgLfX6AYgpOCGw7hAhDjCpYfX8dDgsMSFOkKQt5lqgMbqChZFOUn1qoSLd9khpNpHuURVcJeaMIOa2vHg48azxZpMIojw0KDcWRL5ZelqNaCc9o3K1y18m32tQNAOoN3ZrLj+PIHDDLOZQABAQJCsLePHLwWjXQNWlHMXsADCg8I4xfOnXw3pCAsapYsYQL+wkjYCCBn2kD/7EZtLhggUIDDPst/IiFIBMwBhcoyMcgpbCF0kq6FANzBzd+Gm+iFDhqpwUcjXzyCKpRDrorRj9cqgiwH9Cm6NgxiHpjKpQrMhsu7dfHC9cJylQQOwg2aFY3484+wHEJRBElePcEYXJKjgMzpeoIHgz4iuCodC8eMrODsGM5gxH3AtBQcCLHgiFH3jCGAQBSNTGLdiz5CgB+PEarrlPac8PQmGnE5uyF8j7YpFnM3lV7mWi8u/maVjcaOGnapgn8zQ3CjIjggUwPWE74+QHr1TkHCACggPLqIQ6HP/5ywIDuBaizHu+c/eaCF52DB9+cvIkdngukp4+3/vv726CnXv97/fl32EvFLADAANetRuCArDFRioIE7Ocgdv8dBRqF313o3oHRMaDch7+R6JxwW6Hl4Gr8uNQZHBCumJkWKVpR41wyYgaUX9HBmONjt92ooY8/DuaFPEeFIUGMOYIFAGI3FCglDTbMVaF+WOqHTz5c5iMXZ1mGuWWXAyhX5VFhYknAmF2aeeYNTanJZj5lfilhUK14NyeXdorBlEBrtpnPk2+i9acDA+35WZ9HMeUNoiJ4ARqjH/y5VUhzXfGPkFU6cOgjMP7DY6GeBuUAAfIosymlcGrUgiiAqLoMq0teJcyrqYrKqQul9oNrrquSamqmksg66pmejgVCUVLVQ+vCXKImQBNBne36QrQEQGWjtm8aK621ma5Bq7dubkvKuNula1S1StrggHnwBrCTAwKkux2r9JpXrwDzCgCvAPwiKxi8LtZrL6N2wauwi9nxKqLCBIsB8XTunjoxxSZMjO/FLmqMLMcZe9wpyEeR7K7JN6D8wsUBf6DyRCzr8q7IJ0/ccso08xpzyTmvPPAAN6P1cjKE1ckzxPgSJkC5S17M9AuEeenyxE9PNJjUUyPdbR11Ukv1uFmu2+azc4UwjwgeRAAAOw==',
5: 'R0lGODlhLQBkALMAAK8KNqGkunN8ntXa6BE1dwxKpTdvw0mq6q3S6v+8oPCegtNhR////wAAAP///wAAACH5BAEAAA4ALAAAAAAtAGQAAAT/0MlJq7046827n00ojmQZfqDIrGzrvkODhoHwMkEuCEPv57nYbBW4vQTAJFDmaRQZA+NRmWMwOSHbKiptDZBJ3DUTwmm3XdY3bN2UGbwnWspdV9uaBhGJc3GNUQM1T0J5QGd/K2cvAYKDRWNkg14tAgtyLmCaAZEYDXwtmJYKmFCbg4VupXAtAAqvhDo6YJwdTi8LZwKvAAuXSUg7QKmSiQy+ur4LBMzCNZ9JnRZOhCvKWgO9BAXcBAA7AjTD0hTURNYAzVEBCwUMBgUG3s8O1I3k5U+Nx9sFC6Q5FLyLNy9cvSTEPCkqkm4ANwUJIiZ4B08BAHrQguADEWUHHAIM/x5KTOCQmYJgTOzdwwInGICQBSCOlHiS3sFxWNbsAICAAYGZI0ntSOlopSokWQAAnXnRIAiEGyVQSzpTZkQATpxKLYrHUK1PBKzSxJp1jB4gXSV95SQCgNtvImxKxVElaj1BMpyMYMaXb40CJ+bWZbm2gdud3wS8ZcvtxFlIhPMGONwrVw63ufJyO9DAAN20F27VOjjg1b9GX5A5LnDggGdBoKcV+bpiZChl6fK29twnagNHbxhIPKKMQErX53zTbUDAR0SBUHrAqcwspZ7ebpZ/2QFxjzDFvvgSpcs5z3Jwo4KhB78gXfW7OFrjE81JQN/7zcJRf/87fnlPRTHniv8CvvTyCoHV7VddfwHIRwZdnGD1VoHKKGOYL8yJt46DCulgGFkVhphXZRkaF0UI/4W23FtYhVjhiP+EUN2JDaQ4zXLtudXAPwcSGGM9BuZl3Ap5mVeDaWSJ1WNKECmQ13V2ndVAAgRiJdZzEDFJ5ZNERpZAgQ1cSaVEeTWZUmwqCkBle1PKJGYCKV1FA5qyqWnRlCMtsBSc9US0jF4fhJAAAJtd2eNzxuH552i2XMWNAa219gqkkbomT1hb1jMDlYTGY8CnBiwADzekdoMpn4GaQAIAoH5aqkkR2VVOGlaoSoKTqdKqKwNYNTHormkcKGuYBAIrxT8LRCnTAsZKoSP/Fsq8YGtwLggLbbQtTHtdtRY2Wmy2KujqY7LeMgsutV1Q+Yqs9XzLwgi7qsuuVKXAu2uvQ7igrRHzgiDttPyiMNeu9mYrcD3AFvzuwdvSqnCXAjdMZLjvUrxwxP+i+zCd5t1ga8AYe6wqyPk2+2/IJuurlS0pS4tUoC2rnAO7Erecxcy2aFuzx/WAQXOpQAOmc0o+20IqApAi4Fpj9fQVD0HGSVW0G0cjYLXVTJe4zQFWy3PFJyt7UurVWAPWNF9JW73N11EyQyrXSncjZAHMGNC13BG7ffTSdOtW6d3vBeopqZT25belu9EddaCVPnrAfXm56qmlis/LHGtKRwp5mj1AVypeoHyxttvmDXDTdaSXLo4F3K7h9/nlZLem+Nq2XL3b4/gJqTc8udtCQNmih94355/GznvgWIRQ6tKyR1065mSPinwTblfamvOfwm03AqTSHrF9eg9PvOyYH0/AwT0HMLv3Z7v9aTOMRjxMD/HL2Jcz/ZZjQL3T8PBDAAbIXzk6Ayqz3UgNAURfBUjgiVYFRoEREwEHIgAAOw==',
6: 'R0lGODlhLQBkALMAAO+eoaGkunN8ntXa6BE1dwxKpTdvw0mq6v741Pvw5P7PruvJt9p+Xf///wAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq704S8e7/qDlIIhidigaro+jMHCsDA1N12nOsW4MC4NAMFgL1BomklKZ0vRiAiHBcKhaq4ZBdInwwRzOF1RAKBgMAWNNwC4UAiQvDAAOxwICt6DREDBMJgBAbnJzdXYweARAW1wKggMFhXQhTz99ClxKCwAlA3KUlWIwWkqZpgsJnAhsPqGiMgidJaYKCbcJnQAAMa+wMLKZp7K4uAuyDLy+oryZAEkkAMXFj38MhzyPs8kko9MLDJyGLBMjs12BqarfC+J/2Csjw38A6tOq7e7J8CAODSR8kt0rtoAAAX0K+H3wh4BPg2QFC5SZVqYAQoVhGgYEULHAAHsJ/9x89JKQXIslj8ocKNBgmpsG4HyUJDdiSb0qLF2yjCkDY4aaSm6ubFnMTbteMGbG41LPzQGi03b1cvCO5jASnHYNxDfVwbJ+tLC2u7WrLFlXYLz6vGAuqD2zqkCl/ZqRgRIYqfL98IN2g0kXXewiawVjERu+40yWQyaYgUHDAyAP4PBF8eJRrAZoJjBkkea01yyXG7XH4RApmie3EE3BBYfSDhsImZ16Lc0NsU1rFvKZNQZ/uU/zVu1bhBo+m7UMt23ZQekgAQjgMRCDuWLnUdIIoiKpcvEWKrAPqAfAjcTq1p1YMcDBTAC9bgjEIJD+pxU3BiqqW2B+fv3fWJgnkf8buJR3nnesORCgeR3hwsB5vPwnwnoCdlTALfzJF6FvCi4Yn4DqPEgAL9fo0ASAOFUo4IW3GJRMiY/F+JhPHa7EoBlnGIWhhg8W4ICMMzrRQYxUXGEAiyGNyEsZHABpWwcFXCGljgk4JpVBbvwY5E/+BCCllDla1GIyHD3mo5Y0DlFDlF8W6YY0GJYV4xs7/HQYEV4aeV8BcMa5ZIzE/RZFFEUUuZKhRzLwzZUGpbGWA3gcJoRsR7J5n6JR/SnEk4MeVkQAZkyJaTHzSRfAk0IcxoYaNIApyX5VFrbpQqmq6hyeAxipIyc8mciPeLYu4itl4sQ0aW4N/Nopdj8KABz/sg6BAy2yCoXnrEHPTqsttZXMuO23uVmnJX3glptst9iCqwO04s54g7brctuPu/B2oC666U6Lwr3zekutveWe2m++4QJcLnPjkvuvr/oOfA27wza80GMPL5xtsgY7hDDFF/Oxb2wfgzwvZR1jzEHBJ4dbSQvXHKdxxiZ3nJ5XX1iMssxLPVJyzClMG+hP3aRscc8SO0FCWubyC/TRLST97aNM4OY0vEsjcMjOU5/LVtTlZG3aqR6IwHXX24Ltq9FMtzZs2JCm1hva8GRb22/DvS2kCLHNzVbdP9OUt90iuN03D38/KrjAf/09eGuCL76Q4oYLLmHTujm+QeMSOvBuPw2AG+e2j39trvdvOOaYOUu6If7bGayz9xcVN2gG+k+tn5G5oea57oTbkztg6BUIh31drlJO3tzmxot2YnERAAA7',
7: 'R0lGODlhLQBkALMAAOnCxtJphfHj6E0cd6GkunN8ntXa6BE1dwxKpTdvw0mq6hE1O/Ohm/7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827/2AojmRpnmiqrmzrvnAsV05t13OtJIji+46YI/Er+hLBl8PIRCRbS2YR4dTcPkNeT0p90qJIzC2ZpW6L2vDEZvRSorvaYGCmGtNk+NS9Pv8Sc3MIA2hUSDpSPHwSDn5MgHMHkgcLlY5GVWJ2UkeAk5KWnD6ZmpeiCnWbd6QXQ6anqHVNi29asJyye1aVPES3TVQDvl1WlLa/wINErK2UC6pHiWixwcQbDsaqvo931HTMzQtaW9vd02Z0tDTOxwkGDQkN7w3w9PYKhOjqb6BpO+/xFNiLJ8+Aj3zB9vETZ4YIQIMDDRZBCC4DNl5m/hghtJGawjcD/7JpO0iI40SPWBD0G2lS2EZIH98oWHkGUIKbAQLc3HkzXYglVDD+ScCgKIMARpMGqGglVrY/geYEEEBVAINATC2iWsAO6iQDDKoKkGTAJ5ZlXHl5PRBP7Nh4Zj1ESVtpAdSb9Nzi/RaTkQ+6lf5MAuB2LIDD1jos4VFXHJqihasWTcxhcVC1fw5HpgqALxZqCDAfIcxZM9UAjShfAz3AMdScpKkWrVGnr6s6Lv8wkJQzZ1gBtM3EbDSuIZoAkoouGFA1uGoxxY3/CVBJOXOqzrPWSoWg3I5KvZfLTi1ccfTuTcDXlZT9uYXbdbyjImBgQf13BoKjvMYdPSYD9BGwgP89+sWiEHmpyIdAffYNSE+B7r1RTXxNMFgfgamNot0DqX2D2xQGhHjfg4ygtyGHEwYzAAHftEZfiA428ERqw004B4yNLUDAizGS0dhHDtBBh30GFFAAV5PouKOA9OTHCJIL1BjkAkYS0ECOSgo4j45BOPCjYk64aI8BdQi4o330cFniiYwMEOQB9hRgEj46jlgfAV3WJheHcDZQQANztgajiGoiCCQ/kwRK5KKV5FmeFaw4gNRRHCVw5H0w5kRGhBJ64YBRAQRCwJFawthalIzUSAo2Sa54ZiUhCphlX2uSYaU9ldiTpq6z/pSJA3/iOqCIVxb0jpK0lhiGA7pead//joMCSN+sNoCpyK24XgktpksSeaGMcvmC7a7O5prjPPIMSGsNVDYbY7Nphjimuj/B+y68V6KbbrIc2ovvv7gmC6y/Mo5hMLMEgjCwuw8ePIauTsqFr4M2wHtDs7b9+QmcFNdgccUNfDKcARuDAnDDHvdJzwFAStIsJScXnHKzBRyoco4AX7xyuZLUbNGWSCaJ78NQlqyOA8eWbDLGHqdJicv0GMmyGCRDzeu7OgsLp5FcFzD1e1X72bWRWIOM69ZjFxDxG2GnTbauWac5oNtqu8Gq2G6X3TSvdBtpN9p0640w333/jXfecJuNa99+v3F42veeTCXjnjJ+ZMzuUv4GI+ORxzw53ZUHjvnEhW8u+uj2us0HsGk77LrBrYth8AmzTxABADs=',
8: 'R0lGODlhLQBkALMAAMUvWJofRp2dy6GkunN8ntXa6BE1dwxKpTdvw/S7ie2QaNJrav///wAAAP///wAAACH5BAEAAA4ALAAAAAAtAGQAAAT/0MlJq7046827/2AojmRpnmiqrmzrvjDaNCJtNggyz11z2CUcopDbZXADYDBHzOmUEySUJGw6eVHE4ZBMVZ3X3UHLnY4aBiaYnDNsy6cZgTAe5t4It8G97VIJBQyCY1xbTgZzfHA1DYGCj29pYAOUc4sgDY+aj4hrCASUlWYaM5ubBQUDj5MDqQM/H5mmDAVzBAxrj6GtlLAbpZq1tpSCqKgDYKC8Sb4YsrTDu8SnygOAlK6jEpnC0tKOwbcM1uPL2tsN3t6z4uO3rqkE59vqobMMALqA5fHz267rTBHIJ2jgO15z/DloBDAUuGIDCQJQsA+hHw4NADWkpWngggUA/yYqoDgunjWF6eYcU8VREIAEMEEqSEBS2JyLR3apBBdooII9BmAmWADI1rB56VIdm/Mo3oI9AhYIDWk0FJacqWhhazoQKoOZMAEgsnqVVKCzWyGKNSBI6E8B8sr+asURHtenBxgIpWlAgMIK6YpppQtRwQEBeoWyDfCXQqOWDrkqWHBgbwK28mqcFWTPUa2RYN1SbExPcDlV4AiEtjw6RGBN9loWWDDzo1CimTGx1DWN8JwAwHdkzB1rd7FpH40tCB4loeuHWh/R3juS8TbnxU1lFSTVMk0bw0k/PsXStvcE4LF7GB+sfHfv6Yn3gB6dwcfQoeM3Tqpd+n2Yk8GUnv94hAXzCAD3gdbdgLrRBw6ClE0WIHrXEejggQAcQJl5FC5E2kL7tLRJSAZs+B54BIZIHwNAbWHAS99t45o1nmm3lljmKfBhFDQ2dYpYOJq3I4+g1BgMkCEJGYQ1hBlHC5JJCrhkkZz9+GKSC07p20OzhRTSSFJSwSRdoATz0ZdgJgDAkCAyGQg5TZ3pVljNYAKKMvHw9B9NAGbIZkrY9FgMh2Ap4KeYeFYSJ4wJIDbIHn/ehJBnIAmFmAACAGXAkBllZFExIVnKAKZ7HLApFQuFctOTE8U02UemQrpkJWUWENIbqyUQK5v0WLMqAZpO16epnO5Aa5FxCfeqocJ9+Mzwnb7CqclkIW3ibEd3MsDUPaZc29E07XD7iLecbSfuLOSOo+656Lqmy7rNAsOtXL+8O2685/qwX5WqCGftM92euh6/DPiribwB10mKuizhKwjC1vKBEsMH7/BwvqUKvLAqxsULMLqlElsvxw973CzIGRdMCskl3+twxCGzpU1gu0Fcss0Fa/qGX86wXPDHNwOds86m8mwBzfeia3HARPdlBtItd7s0zHu0UfQUULv8crextqGH0Y75HPTJ98xQR8ZOH00xu/N6rQdUWK/rJNvj/hBri09XeRrdFXvYrDO88RZbvu7CNvfc3bpm8uKMcxABADs=',
9: 'R0lGODlhLQBkALMAACgmOCc1i0dZm6irtBE1d2uHvAxKpTdvw+Pq7/nu3/bBo8NuUfCQcv7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu7/zk/I6co0AEBmtDotIocwSUUIHASK1amRiHAEqUbrngsDIQOF6c0a94zSWXM86nlA2eg93mbEBNr6vde3lnT1CEfQVST4BvG0lQAHx0i2RTjQNgAIZ0AwKLlZYIUQEMkWADl52AnxoOA6EIoaMKW7CvrgWwSqlkBYJZt7mytAiXiESGiby+WVyZDAmlWwILiF6Uy8yPownQaYgLXruMHVrGBc7cfHsCDOCd4thn0kQAAAsL3UqQAQuUk/EWyhGqp6BgPnYCuPWbtIpcgYELCEg8yEAiAVIMAQZMdG5BAwIG/wh041cxpLhAIQR2/BhypAKWBk429KDlib0GBg6IhFYQ54GYnjTKGxIAgM+dARQk8AlUldAzD5wAUGCRm1WqEmU+1QMggUGrVwumyjRuhFQFDJ6B5YYWY1EyW/VsW0t3bNG4g4AoZftVwYJMAAwExhvQzI+0VttJzGTAwAADhDk4kHiv3+IAORFAbjGZgJsBIAGAPKCZQGRWmWENOKCTAOvSpldMPuAKAWuLrHGCPp3F9anVOkPmpn2A9xmQBE79bH2gAWvHsVNMDpl8ucTmP5Nvlo78enbXziVCN05husXG4rFb3M2duvjrzt07Lo6ic+v32N2Dp2/Cgc7n1jn33f9oBDRAXlQIjCaga7a11thtAxzoAGwghbSgRRhGeMKE98F3G4YYkvdDgxiSONqA0ZlVT4PUGUBiPTDGeNoPMDYYnIutxagjYTTGaGNjmhnAQEEF6QgAEOQ4oJSONpLW2F586diAgZJBmUCM2D1ngJVsxTgllazQhaWAt9GVAAMwfgkmHHQpACNprJUJVlv1qLlmFmsVWc9wt0HZVmN23nlGWAwI9lFzgaoJaKIaKUlkoV+Cd4UDDUDKKCttpcUApXZOmqiaP8CRaVqcTmlEp0B8amA8SmpKKqip3rbqD6o6gU2rrpY6K6WynlpgoLZmMeqmsNL6k1GnDsBoqGe4WqjCrqcWSylowAYbkJG6mjoppY5VW5YPMe5WrafJ/frlD99GVWFI4qp6bqogUftuug7o1667u7KUIKz0dnjvp9Hqa+6q/WZoGr6+iueiuej64p/B2e6a6pQYksawteX5ezCqVOAE4mvzCuJfh45F/Cl66dEWcgX+6UcAAiYn2tiDcRplalQBoVgyvl/mFGfN52YhGoZHxpzozxAGfYaRERodqM/PAaDszWcMAOMpQWxrhY5NI3lGLTDP+JuGSTJLAhYYRAAAOw=='
}

1574
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "kawaii-counter",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "MIT",
"dependencies": {
"compression": "^1.7.4",
"express": "^4.17.1",
"pug": "^3.0.0",
"sqlite3": "^5.0.0"
}
}

26
views/index.pug Normal file
View File

@ -0,0 +1,26 @@
html
head
title='Kawaii Counter!'
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet',href='https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/light.min.css')
body
h4 How to use:
h5 SVG address
code.
https://count.getloli.com/get/@:name
h5 Img tag
code.
&lt;img src="https://count.getloli.com/get/@:name" alt=":name" />
h5 Markdown
code.
[:name](https://count.getloli.com/get/@:name)
h4 eg:
<img src="https://count.getloli.com/get/@index" alt="Kawaii Count!" />
p.copy
a(href='')