eirtube/server.js
2024-12-19 18:49:09 -06:00

72 lines
2.6 KiB
JavaScript
Executable File

const {Pinski} = require("pinski")
const {setInstance} = require("pinski/plugins")
const constants = require("./utils/constants")
const iconLoader = require("./utils/icon-loader").icons
const path = require("path")
const fs = require("fs")
;(async () => {
// Create directories
if (!fs.existsSync(constants.server_setup.video_dl_path))
fs.mkdirSync(constants.server_setup.video_dl_path, { recursive: true })
if (!fs.existsSync(constants.server_setup.ogg_dl_path))
fs.mkdirSync(constants.server_setup.ogg_dl_path, { recursive: true })
if (!fs.existsSync(constants.server_setup.json_cache_path))
fs.mkdirSync(constants.server_setup.json_cache_path, { recursive: true })
if (!fs.existsSync(constants.server_setup.ytdlp_cache_path))
fs.mkdirSync(constants.server_setup.ytdlp_cache_path, { recursive: true })
await require("./utils/upgradedb")()
const icons = await iconLoader
const server = new Pinski({
port: 10412,
relativeRoot: __dirname,
filesDir: "html"
})
setInstance(server)
server.pugDefaultLocals.constants = constants
server.pugDefaultLocals.icons = icons
server.pugDefaultLocals.isMobile = req => req.headers["user-agent"].match(/phone|mobile/i)
server.muteLogsStartingWith("/watch")
server.muteLogsStartingWith("/vi/")
server.muteLogsStartingWith("/favicon")
server.muteLogsStartingWith("/static")
server.addSassDir("sass", ["sass/includes", "sass/themes", "sass/theme-modules"])
server.addRoute("/static/css/dark.css", "sass/dark.sass", "sass")
server.addRoute("/static/css/light.css", "sass/light.sass", "sass")
server.addRoute("/static/css/edgeless-light.css", "sass/edgeless-light.sass", "sass")
server.addRoute("/static/css/eir.css", "sass/eir.sass", "sass")
server.addPugDir("pug", ["pug/includes"])
server.addPugDir("pug/errors")
server.addStaticHashTableDir("html/static/js")
server.addStaticHashTableDir("html/static/js/elemjs")
server.addStaticHashTableDir("html/static/images")
server.addStaticHashTableDir("html/static/fonts")
server.addAPIDir("api")
// Special paths. DO NOT INCLUDE video cache location, or pinski watcher will lag downloads
// - Eir
server.muteLogsStartingWith("/assets")
server.muteLogsStartingWith("/getVideo")
server.muteLogsStartingWith("/getCaption")
server.muteLogsStartingWith("/getOgg")
server.muteLogsStartingWith("/redownloadVideo")
server.muteLogsStartingWith("/cacheInfo")
server.muteLogsStartingWith("/getDeArrow")
server.startServer()
require("./background/feed-update")
// Keep cache under a certain size.
// - Eir
require("./background/cache-reaper")
require("./eirtubeMods/dl-queue")
})()