jdf
This commit is contained in:
@@ -570,6 +570,43 @@ export default router => {
|
||||
res.end("api lol");
|
||||
});
|
||||
|
||||
// Lightweight page-lookup for Onara grid sync.
|
||||
// Called async after random navigation — user never waits for this.
|
||||
group.get(/\/item-page$/, async (req, res) => {
|
||||
const id = parseInt(req.url.qs.id, 10) || 0;
|
||||
if (!id) return res.json({ success: false, page: 1 });
|
||||
|
||||
const tag = req.url.qs.tag || null;
|
||||
const hall = req.url.qs.hall || null;
|
||||
const userHall = req.url.qs.userHall || null;
|
||||
const userHallOwner= req.url.qs.userHallOwner|| null;
|
||||
const user = req.url.qs.user || null;
|
||||
const mime = req.url.qs.mime || null;
|
||||
const isFav = req.url.qs.fav === 'true';
|
||||
const isStrict = req.url.qs.strict === '1';
|
||||
const mode = req.mode ?? 0;
|
||||
const ratingsRaw = req.cookies.ratings;
|
||||
const ratingsArr = ratingsRaw ? decodeURIComponent(ratingsRaw).split(/[|,]/).filter(r => ['sfw','nsfw','nsfl','untagged'].includes(r)) : null;
|
||||
|
||||
try {
|
||||
const page = await f0cklib.getItemPage({
|
||||
targetItemId: id,
|
||||
user, tag, hall, userHall, userHallOwner, mime,
|
||||
fav: isFav,
|
||||
mode,
|
||||
ratings: ratingsArr && ratingsArr.length > 0 ? ratingsArr : null,
|
||||
strict: isStrict,
|
||||
session: !!req.session,
|
||||
exclude: req.session?.excluded_tags || [],
|
||||
user_id: req.session?.id,
|
||||
is_admin: req.session?.admin
|
||||
});
|
||||
return res.json({ success: true, page });
|
||||
} catch (e) {
|
||||
return res.json({ success: false, page: 1 });
|
||||
}
|
||||
});
|
||||
|
||||
group.get(/\/random(\/user\/.+|\/image|\/video|\/audio)?$/, async (req, res) => {
|
||||
const pathParts = req.url.pathname.split('/');
|
||||
// /api/v2/random/user/name -> segments are ["", "api", "v2", "random", "user", "name"]
|
||||
@@ -629,7 +666,7 @@ export default router => {
|
||||
}
|
||||
|
||||
const isYouTube = item.mime === 'video/youtube';
|
||||
const ytSrcRegex = /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\/?\/?\?(?:\S*?&?v=))|youtu\.be\/)([a-zA-Z0-9_-]{6,11})/i;
|
||||
const ytSrcRegex = /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\/?\/?\?(?:\S*?&v=))|youtu\.be\/)([a-zA-Z0-9_-]{6,11})/i;
|
||||
let ytDest = item.dest;
|
||||
if (isYouTube && (!ytDest || !ytDest.startsWith('yt:'))) {
|
||||
const m = item.src && item.src.match(ytSrcRegex);
|
||||
|
||||
Reference in New Issue
Block a user