Add DRM downloads, scrapers, gallery index, and UI improvements
- DRM video download pipeline with pywidevine subprocess for Widevine key acquisition - Scraper system: forum threads, Coomer/Kemono API, and MediaLink (Fapello) scrapers - SQLite-backed media index for instant gallery loads with startup scan - Duplicate detection and gallery filtering/sorting - HLS video component, log viewer, and scrape management UI - Dockerfile updated for Python/pywidevine, docker-compose volume for CDM Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,8 @@ import downloadRouter from './download.js';
|
||||
import galleryRouter from './gallery.js';
|
||||
import hlsRouter from './hls.js';
|
||||
import settingsRouter from './settings.js';
|
||||
import scrapeRouter from './scrape.js';
|
||||
import { scanMediaFiles } from './gallery.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
@@ -31,6 +33,7 @@ app.use(downloadRouter);
|
||||
app.use(galleryRouter);
|
||||
app.use(hlsRouter);
|
||||
app.use(settingsRouter);
|
||||
app.use(scrapeRouter);
|
||||
|
||||
// Serve static client build in production
|
||||
const clientDist = join(__dirname, '..', 'client', 'dist');
|
||||
@@ -59,6 +62,12 @@ async function start() {
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`[server] Listening on http://localhost:${PORT}`);
|
||||
// Scan filesystem and populate media index in background
|
||||
setImmediate(() => {
|
||||
try { scanMediaFiles(); } catch (err) {
|
||||
console.error('[server] Media scan failed:', err.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Start HTTPS server for DRM/EME support (requires secure context)
|
||||
|
||||
Reference in New Issue
Block a user