peertube-plugin-transposer-connector
Version:
Transposer connector is a PeerTube language tool plugin to transcribe and translate with Whisper
49 lines (42 loc) • 1.72 kB
JavaScript
const initCaptionMetadata = (router, peertubeHelpers) => {
router.get("/captions/:id", async (req, res) => {
try {
const videoId = req.params.id;
peertubeHelpers.logger.info(
`[transposer-connector] CaptionController: Starting caption fetch request for video ${videoId}`
);
const webserverUrl = peertubeHelpers.config.getWebserverUrl();
peertubeHelpers.logger.info(
`[transposer-connector] CaptionController: Fetching captions from PeerTube API at ${webserverUrl}/api/v1/videos/${videoId}/captions`
);
const response = await fetch(
`${webserverUrl}/api/v1/videos/${videoId}/captions`
);
if (!response.ok) {
peertubeHelpers.logger.error(
`[transposer-connector] CaptionController: PeerTube API returned error status ${response.status} for video ${videoId}`
);
return res
.status(response.status)
.json({ error: "Failed to fetch captions from PeerTube API" });
}
const captions = await response.json();
const captionCount = captions.data ? captions.data.length : 0;
peertubeHelpers.logger.info(
`[transposer-connector] CaptionController: Successfully fetched ${captionCount} captions for video ${videoId}`
);
return res.json(captions);
} catch (error) {
const videoId = req.params.id;
peertubeHelpers.logger.error(
`[transposer-connector] CaptionController: Exception during caption fetch for video ${videoId}: ${error.message}`
);
return res
.status(500)
.json({ error: "Internal server error during caption fetch" });
}
});
};
module.exports = {
initCaptionMetadata,
};