Compare commits

...

12 Commits

Author SHA1 Message Date
Fijxu e2a47ce59a uwu 2023-07-16 03:52:29 -04:00
Fijxu ef98cb9284 Update 'Readme.md' 2023-04-05 00:30:11 -04:00
Fijxu 83b94b8db0 Update 'views/index.pug' 2023-04-05 00:28:54 -04:00
Jad 81936a9883
Merge pull request #50 from HChenZi/feat-homePageUrl
feat: Get url from req for index page
2023-04-04 15:03:08 +08:00
journey-ad 8e3a196dc3 perf: Use more precise variable naming and support configuration. 2023-04-04 15:01:50 +08:00
Jad 4fcc0a05db
Merge pull request #49 from HChenZi/master
feat: add docker deploy
2023-04-04 14:43:16 +08:00
HChenZi 5d5045de54 feat: Get url from req for index page 2023-04-04 12:22:37 +08:00
HChenZi a3eb1409c4 feat: add docker deploy 2023-04-04 10:10:55 +08:00
Jad 6b4d7a010a
Merge pull request #46 from eggplants/fix-typo
Fix typo
2023-03-09 14:41:48 +08:00
eggplants 65097d982d
fix: typo 2023-03-09 15:34:29 +09:00
Jad f6b515ead5
Merge pull request #26 from flazepe/patch-1
feat: render images as pixelated
2023-03-09 11:43:09 +08:00
Flaze 45c3930c95
feat: render images as pixelated
This removes the smoothing filter and makes sure the pixels stay the same no matter how much you zoom in.
2022-05-01 02:09:32 +08:00
9 changed files with 86 additions and 56 deletions

11
Dockerfile Normal file
View File

@ -0,0 +1,11 @@
FROM node:14
WORKDIR /app
COPY . .
RUN yarn install
EXPOSE 3000
CMD ["yarn", "start"]

View File

@ -1,8 +1,6 @@
# Moe-Counter
多种风格可选的萌萌计数器
![Moe-Counter](https://count.getloli.com/get/@Moe-counter.github)
![Moe-Counter](https://count.ayaya.beauty/get/@Moe-counter-git.zzls)
<details>
<summary>More theme</summary>
@ -42,12 +40,13 @@ $ yarn install
$ yarn start
```
### Confignation
### Configuration
`config.yml`
```yaml
app:
# site: https://count.getloli.com # your website
port: 3000
db:

21
assets/custom.css Normal file
View File

@ -0,0 +1,21 @@
body {
background-color: #111111;
}
h1, h2, h3, h4, h5, h6 {
color: #FFFFFF;
}
a:link {
color: rgb(223, 131, 223);
}
a:visited {
color: rgb(223, 131, 223);
}
code, input, select, button {
background: #2c2c2c;
color: #FFF;
}

2
assets/light.min.css vendored Normal file
View File

@ -0,0 +1,2 @@
@charset "UTF-8";body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.4;max-width:800px;margin:20px auto;padding:0 10px;color:#363636;background:#fff;text-rendering:optimizeLegibility}button,input,textarea{transition:background-color .1s linear,border-color .1s linear,color .1s linear,box-shadow .1s linear,transform .1s ease}h1{font-size:2.2em;margin-top:0}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h1,h2,h3,h4,h5,h6,strong{color:#000}b,h1,h2,h3,h4,h5,h6,strong,th{font-weight:600}blockquote{border-left:4px solid rgba(0,150,191,.67);margin:1.5em 0;padding:.5em 1em;font-style:italic}blockquote>footer{margin-top:10px;font-style:normal}address,blockquote cite{font-style:normal}a[href^=mailto]:before{content:"📧 "}a[href^=tel]:before{content:"📞 "}a[href^=sms]:before{content:"💬 "}button,input[type=button],input[type=checkbox],input[type=submit]{cursor:pointer}input:not([type=checkbox]):not([type=radio]),select{display:block}button,input,select,textarea{color:#000;background-color:#efefef;font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}button,input:not([type=checkbox]):not([type=radio]),select,textarea{-webkit-appearance:none}textarea{margin-right:0;width:100%;box-sizing:border-box;resize:vertical}button,input[type=button],input[type=submit]{padding-right:30px;padding-left:30px}button:hover,input[type=button]:hover,input[type=submit]:hover{background:#ddd}button:focus,input:focus,select:focus,textarea:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67)}button:active,input[type=button]:active,input[type=checkbox]:active,input[type=radio]:active,input[type=submit]:active{transform:translateY(2px)}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}::-webkit-input-placeholder{color:#949494}:-ms-input-placeholder{color:#949494}::-ms-input-placeholder{color:#949494}::placeholder{color:#949494}a{text-decoration:none;color:#0076d1}a:hover{text-decoration:underline}code,kbd{background:#efefef;color:#000;padding:5px;border-radius:6px}pre>code{padding:10px;display:block;overflow-x:auto}img{max-width:100%}hr{border:none;border-top:1px solid #dbdbdb}table{border-collapse:collapse;margin-bottom:10px;width:100%}td,th{padding:6px;text-align:left}th{border-bottom:1px solid #dbdbdb}tbody tr:nth-child(2n){background-color:#efefef}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#efefef;border-radius:6px}::-webkit-scrollbar-thumb{background:#d5d5d5;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#c4c4c4}
/*# sourceMappingURL=light.min.css.map */

View File

@ -1,4 +1,5 @@
app:
# site: https://count.getloli.com # your website
port: 3000
db:

6
docker-compose.yml Normal file
View File

@ -0,0 +1,6 @@
version: '3'
services:
moe-counter:
build: .
ports:
- "3000:3000"

View File

@ -17,7 +17,8 @@ app.use(compression())
app.set('view engine', 'pug')
app.get('/', (req, res) => {
res.render('index')
const site = config.app.site || `${req.protocol}://${req.get('host')}`
res.render('index', { site })
});
// get the image

View File

@ -53,7 +53,7 @@ function getCountImage({ count, theme='moebooru', length=7 }) {
}, '')
return `<?xml version="1.0" encoding="UTF-8"?>
<svg width="${x}" height="${y}" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="${x}" height="${y}" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="image-rendering: pixelated;">
<title>Moe Count</title>
<g>
${parts}
@ -64,4 +64,4 @@ function getCountImage({ count, theme='moebooru', length=7 }) {
module.exports = {
getCountImage
}
}

View File

@ -3,80 +3,69 @@ html
title='Moe Counter!'
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='icon', type='image/png', href='favicon.png')
link(rel='stylesheet', href='https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/light.min.css')
link(rel='stylesheet', href='style.css')
<!-- Global site tag (gtag.js) - Google Analytics -->
script(async, src='https://www.googletagmanager.com/gtag/js?id=G-2RLWN5JXRL')
script.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
link(rel='stylesheet', href='./light.min.css')
link(rel='stylesheet', href='./custom.css')
// GOODBYE GOOGLE SHIT
gtag('config', 'G-2RLWN5JXRL');
function _evt_push(type, category, label){
gtag('event', type, {
'event_category' : category,
'event_label' : label
});
}
body
h3 How to use:
h5 SVG address
code https://count.getloli.com/get/@:name
code #{site}/get/@:name
h5 Img tag
code &lt;img src="https://count.getloli.com/get/@:name" alt=":name" />
code &lt;img src="#{site}/get/@:name" alt=":name" />
h5 Markdown
code ![:name](https://count.getloli.com/get/@:name)
code ![:name](#{site}/get/@:name)
h3 eg:
<img src="https://count.getloli.com/get/@index" alt="Moe Count!" />
<img src="#{site}/get/@index" alt="Moe Count!" />
i Data can access by anyone, please
i(style='color: #FFFFFF') Data can access by anyone, please
| <span style="color: #ff4500;"> DO NOT</span>
| enter personal information
details
summary(style='display: inline-block;', onclick='_evt_push("click", "normal", "more_theme")')
h3(style='display: inline-block; cursor: pointer;') More theme
p(style='margin: 0;') Just use the query parameters <code>theme</code>, like this: <code>https://count.getloli.com/get/@:name?theme=moebooru</code>
h3(style='display: inline-block; cursor: pointer;') More themes
p(style='margin: 0;') Just use the query parameters <code>theme</code>, like this: <code>#{site}/get/@:name?theme=moebooru</code>
h5 asoul
img(src='https://count.getloli.com/get/@demo?theme=asoul', alt='A-SOUL')
img(src='#{site}/get/@demo?theme=asoul', alt='A-SOUL')
h5 moebooru
img(src='https://count.getloli.com/get/@demo?theme=moebooru', alt='Moebooru')
img(src='#{site}/get/@demo?theme=moebooru', alt='Moebooru')
h5 moebooru-h
img(src='https://count.getloli.com/get/@demo?theme=moebooru-h', alt='Moebooru-Hentai')
img(src='#{site}/get/@demo?theme=moebooru-h', alt='Moebooru-Hentai')
h5 rule34
img(src='https://count.getloli.com/get/@demo?theme=rule34', alt='Rule34')
img(src='#{site}/get/@demo?theme=rule34', alt='Rule34')
h5 gelbooru
img(src='https://count.getloli.com/get/@demo?theme=gelbooru', alt='Gelbooru')
img(src='#{site}/get/@demo?theme=gelbooru', alt='Gelbooru')
h5 gelbooru-h
img(src='https://count.getloli.com/get/@demo?theme=gelbooru-h', alt='Gelbooru-Hentai')
img(src='#{site}/get/@demo?theme=gelbooru-h', alt='Gelbooru-Hentai')
h3 Credits
ul
li
a(href='https://repl.it/', target='_blank', rel='nofollow') repl.it
li
a(href='https://space.bilibili.com/703007996', target='_blank', title='A-SOUL_Official') A-SOUL
li
a(href='https://github.com/moebooru/moebooru', target='_blank', rel='nofollow') moebooru
li
a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') rule34.xxx
| NSFW
li
a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') gelbooru.com
| NSFW
li
a(href='https://icons8.com/icons/set/star', target='_blank', rel='nofollow') Icons8
// h3 Credits
// ul
// li
// a(href='https://repl.it/', target='_blank', rel='nofollow') repl.it
// li
// a(href='https://space.bilibili.com/703007996', target='_blank', title='A-SOUL_Official') A-SOUL
// li
// a(href='https://github.com/moebooru/moebooru', target='_blank', rel='nofollow') moebooru
// li
// a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') rule34.xxx
// | NSFW
// li
// a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') gelbooru.com
// | NSFW
// li
// a(href='https://icons8.com/icons/set/star', target='_blank', rel='nofollow') Icons8
h3 Tool
.tool
code https://count.getloli.com/get/@
code #{site}/get/@
input#name(type='text', placeholder=':name', style='display: inline-block; width: 80px; height: 1.4em; line-height: 1.4em; margin: 0 4px; vertical-align: middle;')
code ?theme=
select#theme(style='display: inline-block; height: 1.6em; line-height: 1.6em; font-size: 14px; margin: 0 4px; padding: 0 4px; vertical-align: middle;')
@ -103,10 +92,10 @@ html
return
}
img.src = 'https://count.getloli.com/get/@' + text + '?theme=' + theme
img.src = '#{site}/get/@' + text + '?theme=' + theme
})
iframe(src="https://chat.getloli.com/room/@Moe-counter?title=%E8%90%8C%E8%90%8C%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E7%95%99%E8%A8%80%E6%9D%BF", scrolling="no", frameborder="0", height="70%", width="26%", style="position: fixed;top: 2%;right: 5%;")
p.copy
a(href='https://github.com/journey-ad/Moe-Counter', target='_blank', onclick='_evt_push("click", "normal", "go_github")') source code
a(href='https://github.com/journey-ad/Moe-Counter', target='_blank', onclick='_evt_push("click", "normal", "go_github")') source code
p.copy
a(href='https://git.zzls.xyz/Fijxu/Moe-Counter', target='_blank', onclick='_evt_push("click", "normal", "go_github")') Modified source code