mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-08 12:37:00 +03:00
Serve database csv from node
This commit is contained in:
@@ -27,7 +27,7 @@ import { loggerMiddleware } from "./middleware/logger";
|
|||||||
import { corsMiddleware } from "./middleware/cors";
|
import { corsMiddleware } from "./middleware/cors";
|
||||||
import { apiCspMiddleware } from "./middleware/apiCsp";
|
import { apiCspMiddleware } from "./middleware/apiCsp";
|
||||||
import { rateLimitMiddleware } from "./middleware/requestRateLimit";
|
import { rateLimitMiddleware } from "./middleware/requestRateLimit";
|
||||||
import dumpDatabase, { redirectLink } from "./routes/dumpDatabase";
|
import dumpDatabase, { appExportPath, redirectLink } from "./routes/dumpDatabase";
|
||||||
import { endpoint as getSegmentInfo } from "./routes/getSegmentInfo";
|
import { endpoint as getSegmentInfo } from "./routes/getSegmentInfo";
|
||||||
import { postClearCache } from "./routes/postClearCache";
|
import { postClearCache } from "./routes/postClearCache";
|
||||||
import { addUnlistedVideo } from "./routes/addUnlistedVideo";
|
import { addUnlistedVideo } from "./routes/addUnlistedVideo";
|
||||||
@@ -46,6 +46,7 @@ import { getChapterNames } from "./routes/getChapterNames";
|
|||||||
import { postRating } from "./routes/ratings/postRating";
|
import { postRating } from "./routes/ratings/postRating";
|
||||||
import { getRating } from "./routes/ratings/getRating";
|
import { getRating } from "./routes/ratings/getRating";
|
||||||
import { postClearCache as ratingPostClearCache } from "./routes/ratings/postClearCache";
|
import { postClearCache as ratingPostClearCache } from "./routes/ratings/postClearCache";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
export function createServer(callback: () => void): Server {
|
export function createServer(callback: () => void): Server {
|
||||||
// Create a service (the app object is just a callback).
|
// Create a service (the app object is just a callback).
|
||||||
@@ -201,6 +202,7 @@ function setupRoutes(router: Router) {
|
|||||||
router.get("/database", (req, res) => dumpDatabase(req, res, true));
|
router.get("/database", (req, res) => dumpDatabase(req, res, true));
|
||||||
router.get("/database.json", (req, res) => dumpDatabase(req, res, false));
|
router.get("/database.json", (req, res) => dumpDatabase(req, res, false));
|
||||||
router.get("/database/*", redirectLink);
|
router.get("/database/*", redirectLink);
|
||||||
|
router.use("/download", express.static(appExportPath));
|
||||||
} else {
|
} else {
|
||||||
router.get("/database.db", function (req: Request, res: Response) {
|
router.get("/database.db", function (req: Request, res: Response) {
|
||||||
res.sendFile("./databases/sponsorTimes.db", { root: "./" });
|
res.sendFile("./databases/sponsorTimes.db", { root: "./" });
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const licenseHeader = `<p>The API and database follow <a href="https://creativec
|
|||||||
|
|
||||||
const tables = config?.dumpDatabase?.tables ?? [];
|
const tables = config?.dumpDatabase?.tables ?? [];
|
||||||
const MILLISECONDS_BETWEEN_DUMPS = config?.dumpDatabase?.minTimeBetweenMs ?? ONE_MINUTE;
|
const MILLISECONDS_BETWEEN_DUMPS = config?.dumpDatabase?.minTimeBetweenMs ?? ONE_MINUTE;
|
||||||
const appExportPath = config?.dumpDatabase?.appExportPath ?? "./docker/database-export";
|
export const appExportPath = config?.dumpDatabase?.appExportPath ?? "./docker/database-export";
|
||||||
const postgresExportPath = config?.dumpDatabase?.postgresExportPath ?? "/opt/exports";
|
const postgresExportPath = config?.dumpDatabase?.postgresExportPath ?? "/opt/exports";
|
||||||
const tableNames = tables.map(table => table.name);
|
const tableNames = tables.map(table => table.name);
|
||||||
|
|
||||||
@@ -182,15 +182,16 @@ export async function redirectLink(req: Request, res: Response): Promise<void> {
|
|||||||
|
|
||||||
const file = latestDumpFiles.find((value) => `/database/${value.tableName}.csv` === req.path);
|
const file = latestDumpFiles.find((value) => `/database/${value.tableName}.csv` === req.path);
|
||||||
|
|
||||||
updateQueueTime();
|
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
res.redirect(`/download/${file.fileName}`);
|
res.redirect(`/download/${file.fileName}`);
|
||||||
} else {
|
} else {
|
||||||
res.sendStatus(404);
|
res.sendStatus(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req.query.generate !== "false") await queueDump();
|
if (req.query.generate !== "false"){
|
||||||
|
updateQueueTime();
|
||||||
|
await queueDump();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateQueueTime(): void {
|
function updateQueueTime(): void {
|
||||||
|
|||||||
Reference in New Issue
Block a user