Spaces:
Build error
Build error
File size: 1,804 Bytes
0bfe2e3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import { Router, Request, Response } from 'express';
import { AIOStreams, SubtitleResponse } from '@aiostreams/core';
import { createLogger } from '@aiostreams/core';
import { StremioTransformer } from '@aiostreams/core';
import { stremioSubtitleRateLimiter } from '../../middlewares/ratelimit';
const logger = createLogger('server');
const router = Router();
router.use(stremioSubtitleRateLimiter);
router.get(
'/:type/:id/:extras?.json',
async (req: Request, res: Response<SubtitleResponse>, next) => {
if (!req.userData) {
res.status(200).json(
StremioTransformer.createDynamicError('subtitles', {
errorDescription: 'Please configure the addon first',
})
);
return;
}
const transformer = new StremioTransformer(req.userData);
try {
const { type, id } = req.params;
const { videoHash, videoSize } = req.query;
const extras = [videoHash, videoSize].filter(Boolean).join(',');
res
.status(200)
.json(
transformer.transformSubtitles(
await (
await new AIOStreams(req.userData).initialise()
).getSubtitles(type, id, extras)
)
);
} catch (error) {
let errorMessage =
error instanceof Error ? error.message : 'Unknown error';
let errors = [
{
description: errorMessage,
},
];
if (transformer.showError('subtitles', errors)) {
logger.error(
`Unexpected error during subtitle retrieval: ${errorMessage}`
);
res.status(200).json(
StremioTransformer.createDynamicError('subtitles', {
errorDescription: errorMessage,
})
);
return;
}
next(error);
}
}
);
export default router;
|