chore: update Angular TypeScript build info cache
This commit is contained in:
@@ -561,6 +561,37 @@ r.get('/peertube/:instance/*', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// -------------------- Generic video details (GET) --------------------
|
||||
// Returns metadata such as title, description, uploader, thumbnail, duration and views for a provider/videoId
|
||||
// Supports query params similar to download endpoints: instance (PeerTube), slug (Odysee), sourceUrl (direct)
|
||||
r.get('/details/:provider/:videoId', async (req, res) => {
|
||||
try {
|
||||
const { provider, videoId } = req.params;
|
||||
const instance = req.query.instance || undefined;
|
||||
const slug = req.query.slug || undefined;
|
||||
const sourceUrl = req.query.sourceUrl || undefined;
|
||||
const url = providerUrlFrom(provider, videoId, { instance, slug, sourceUrl });
|
||||
const raw = await youtubedl(url, { dumpSingleJson: true, noWarnings: true, noCheckCertificates: true, skipDownload: true });
|
||||
const meta = (typeof raw === 'string') ? JSON.parse(raw || '{}') : (raw || {});
|
||||
const out = {
|
||||
videoId,
|
||||
title: meta.title || '',
|
||||
thumbnail: meta.thumbnail || (Array.isArray(meta.thumbnails) && meta.thumbnails.length ? meta.thumbnails[0].url : ''),
|
||||
uploaderName: meta.uploader || meta.channel || '',
|
||||
uploaderAvatar: '',
|
||||
views: typeof meta.view_count === 'number' ? meta.view_count : (typeof meta.viewCount === 'number' ? meta.viewCount : 0),
|
||||
duration: typeof meta.duration === 'number' ? meta.duration : 0,
|
||||
uploadedDate: meta.upload_date ? new Date(meta.upload_date.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3')).toISOString() : (meta.release_timestamp ? new Date(meta.release_timestamp * 1000).toISOString() : ''),
|
||||
description: meta.description || meta.summary || '',
|
||||
url,
|
||||
type: 'video',
|
||||
};
|
||||
return res.json(out);
|
||||
} catch (e) {
|
||||
return res.status(500).json({ error: 'details_failed', details: String(e?.message || e) });
|
||||
}
|
||||
});
|
||||
|
||||
// Download routes middleware (auth supports both Authorization header and cookies)
|
||||
r.use('/download', authMiddlewareCookieAware, downloadLimiter);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user