Compare commits

..

13 Commits

Author SHA1 Message Date
lamp 881ee4568d Update 'README.md' 2023-02-04 21:44:02 -06:00
lamp 7ac32d6dff update urls 2023-02-05 03:35:33 +00:00
lamp 175a86b490 Merge branch 'proxy' of gitea.moe:lamp/random-miku-server into proxy 2023-02-05 03:29:25 +00:00
lamp 8f1c789c8e remove backup origin 2023-02-05 03:28:29 +00:00
lamp c4d55ec6c7 update url 2022-10-14 02:13:53 -05:00
lamp 3ab1623bed multiple random id 2022-07-31 17:23:18 -07:00
lamp 88a6e5e692 rip 39 commits
update fallback uri
2021-12-08 15:02:21 -06:00
lamp 99f05ea2e0 39 2021-12-04 22:29:27 -08:00
lamp 3ef1d4bdcb draw only id on thumb_mini 2021-11-25 18:16:10 -08:00
lamp 091197e7c7 hmm 2021-11-25 20:08:30 -06:00
lamp 63a9916a03 add option to draw url 2021-11-25 17:56:00 -08:00
lamp 0219cc7f83 Merge branch 'proxy' of gitea.moe:lamp/random-miku-server into proxy 2021-11-25 17:02:05 -08:00
lamp 47a05b243f relocate cache-control 2021-11-25 17:02:02 -08:00
4 changed files with 620 additions and 292 deletions
+15 -24
View File
@@ -1,31 +1,22 @@
A simple no-HTML random Hatsune Miku image server: https://random-miku.owo39.me/
A simple no-HTML random Hatsune Miku image server. Example: https://rms.owo69.me/
Click reload to get a different one. Delete left half of URL to get to source.
- Click reload to get a different one. Delete left half of URL to get to source.
- Include pornographic results: https://rms.owo69.me/?allow_r18([=only](https://rms.owo69.me/?allow_r18=only))
- Get different sizes (original, regular, small, or thumb_mini): https://rms.owo69.me/?size=thumb_mini
- Auto-refresh using HTTP Refresh header: https://rms.owo69.me/?auto=3
- kek: https://rms.owo69.me/?allow_r18&size=thumb_mini&auto=0
- See your history: https://rms.owo69.me/log
- Load image by id without redirect thing: https://rms.owo69.me/img/51586149
- Load random image directly without redirect thing: https://rms.owo69.me/img/random
- Draw Pixiv URL onto upper left corner of image: https://rms.owo69.me/img/random?drawsource&size=regular
Include pornographic results: https://random-miku.owo39.me/?allow_r18([=only](https://random-miku.owo39.me/?allow_r18=only))
Here is an HTML site that makes use of it: https://lamp.tk/miku.html
Get different sizes (original, regular, small, or thumb_mini): https://random-miku.owo39.me/?size=thumb_mini
### Prerequisites
Auto-refresh using HTTP Refresh header: https://random-miku.owo39.me/?auto=3
- Node.js
- GraphicsMagick for ?drawsource option
kek: https://random-miku.owo39.me/?allow_r18&size=thumb_mini&auto=0
### todo
See your history: https://random-miku.owo39.me/log
Load image by id without redirect thing: https://random-miku.owo39.me/img/51586149
Load random image without redirect thing: https://random-miku.owo39.me/img/random
## Issues
- Browser back button is not useful
- HTTP Refresh does not save to browser history
- legality is ?????
## todo
- Proper HTML site that's more user-friendly
- Option to draw the source url onto the image
- Option to limit range to get more higher-ranked illustrations
+19 -10
View File
@@ -2,11 +2,12 @@ var express = require("express");
var fetch = require("node-fetch");
var qs = require("qs");
var serveFavicon = require("serve-favicon");
var gm = require("gm");
var fs = require("fs");
var app = express();
app.set("trust proxy", "127.0.0.1");
app.listen(process.env.PORT || 39);
app.listen(process.env.PORT || 39, process.env.ADDRESS);
app.use(serveFavicon("ミク.png"));
app.use((req,res,next)=>{req.rawQuery = req.url.includes('?') && req.url.substr(req.url.indexOf('?')+1);next();});
@@ -55,18 +56,20 @@ async function serveId(id, req, res, next) {
if (!url) return res.status(400).type("text").send(`size must be one of the following: ${Object.keys(pages[0].urls).join(', ')}`);
var pxreq = await fetch(url, { headers: {"Referer": "https://www.pixiv.net"} });
if (pxreq.status != 200 && size == "original") {
res.header("X-Using-Backup", '1');
pxreq = await fetch(`http://hmbp.gq:39/https://www.pixiv.net/en/artworks/${id}?noredirect`);
}
//if (pxreq.status != 200 && size == "original") {
// res.header("X-Using-Backup", '1');
// pxreq = await fetch(`https://39.hmbp.gq/https://www.pixiv.net/en/artworks/${id}?noredirect`);
//}
res.status(203);
res.status(pxreq.status);
res.type(pxreq.headers.get("Content-Type"));
res.header("Content-Disposition", `filename=${url.split('/').pop()}`);
res.header("Cache-Control", "max-age=99999999999999");
res.header("X-Pixiv-Id", id);
if (req.query.auto) res.header("Refresh", `${Number(req.query.auto)}; url=${getRandomUrl(req)}`);
pxreq.body.pipe(res);
if (req.query.drawsource != null && pxreq.headers.get("Content-Type").startsWith("image")) {
gm(pxreq.body).drawText(2, 12, size == "thumb_mini" ? id : `https://www.pixiv.net/en/artworks/${id}`).stream().pipe(res);
}
else pxreq.body.pipe(res);
fs.appendFileSync(`logs/${req.ip.replace(/[:\/]/g, '-')}.csv`, `${new Date().toISOString()},${id}\n`);
@@ -107,12 +110,18 @@ app.get("/img/random", (req, res, next) => {
// simple serve id without redirects
app.get("/img/:id", (req, res, next) => {
res.header("Cache-Control", "max-age=99999999999999");
serveId(req.params.id, req, res, next);
});
// plaintext random id for scripts
// plaintext random id(s) for scripts
app.get("/randomid", function (req, res) {
res.type("text/plain").send(getRandomId(req.query.allow_r18));
var count = Number(req.query.count) || 1;
count = Math.min(count, 100);
var ids = [];
for (let i = 0; i < count; i++) ids.push(getRandomId(req.query.allow_r18));
ids = ids.join(',');
res.type("text/plain").send(ids);
});
+585 -258
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1,6 +1,7 @@
{
"dependencies": {
"express": "^4.17.1",
"gm": "^1.23.1",
"node-fetch": "^2.6.5",
"serve-favicon": "^2.5.0"
}