UNPKG

e621-sdk

Version:

从E621抓取帖子。支持搜索、引用、随机。

85 lines (84 loc) 2.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = __importDefault(require("express")); const client_1 = require("../client"); const path_1 = __importDefault(require("path")); const cors_1 = __importDefault(require("cors")); const parser_1 = require("../parser"); const app = (0, express_1.default)(); const port = process.env.PORT || 3000; const client = new client_1.E621({ log: true }); client.configureAxios({ headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0" } }); app.use((0, cors_1.default)()); app.get("/api/search", async (req, res) => { try { const { tags, limit, page } = req.query; const posts = await client.searchPost({ tags: (0, parser_1.toSearchTag)(tags), limit: limit ? parseInt(limit) : undefined, page: page ? parseInt(page) : undefined }); res.json(posts.map(post => post.data)); } catch (err) { res.status(500).json({ error: err.message }); } }); app.get("/api/post/:id", async (req, res) => { try { const { id } = req.params; const post = await client.fetchPost(id); res.json(post.data); } catch (err) { res.status(500).json({ error: err.message }); } }); app.get("/api/random", async (req, res) => { try { const { tags } = req.query; const post = await client.randomPost(tags); res.json(post.data); } catch (err) { res.status(500).json({ error: err.message }); } }); app.get("/api/static/:md5/:ext", async (req, res) => { try { const { md5, ext } = req.params; const data = await client.static(md5, ext); res.setHeader("Content-Type", `image/${ext}`); res.send(data); } catch (err) { res.status(500).json({ error: err.message }); } }); app.get("/api/status", async (_, res) => { try { const { status, message } = await client.serverStatus(); res.json({ status, message }); } catch (err) { res.status(500).json({ error: err.message }); } }); app.get("/", (_, res) => { res.sendFile(path_1.default.resolve("index.html")); }); app.get("/favicon.ico", (_, res) => { res.sendFile(path_1.default.resolve("favicon.ico")); }); app.listen(port, () => { console.log(`Server is running on port ${port}`); });