gsdf
This commit is contained in:
@@ -718,7 +718,10 @@ export default router => {
|
||||
const ratingsRaw = req.cookies.ratings;
|
||||
const ratingsArr = ratingsRaw ? decodeURIComponent(ratingsRaw).split(/[|,]/).filter(r => ['sfw','nsfw','nsfl','untagged'].includes(r)) : null;
|
||||
|
||||
const mime = req.params?.type === 'videos' ? 'video' : (req.url.qs?.mime || null);
|
||||
const cookieMime = req.cookies?.mime ? decodeURIComponent(req.cookies.mime).trim() : null;
|
||||
const mime = (typeof req.url.qs?.mime !== 'undefined')
|
||||
? (req.url.qs.mime || null)
|
||||
: (cookieMime || (req.params?.type === 'videos' ? 'video' : null));
|
||||
|
||||
let excludeIds = [];
|
||||
if (req.url.qs?.exclude_ids) {
|
||||
@@ -744,15 +747,27 @@ export default router => {
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
items,
|
||||
videos: items
|
||||
items: items.map(item => ({
|
||||
id: item.id,
|
||||
title: item.title,
|
||||
slug: (getEnableItemSlugs() && item.slug) ? item.slug : null,
|
||||
dest: item.dest,
|
||||
mime: item.mime,
|
||||
stamp: item.stamp,
|
||||
username: item.username,
|
||||
display_name: item.display_name,
|
||||
username_color: item.username_color,
|
||||
has_coverart: item.has_coverart,
|
||||
rating_class: item.rating_class,
|
||||
xd_score: item.xd_score,
|
||||
xd_tier: item.xd_tier,
|
||||
personalized: !!item.personalized
|
||||
}))
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("[RECOMMENDATIONS] Failed to fetch personalized recommendations:", err);
|
||||
res.json({
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
items: [],
|
||||
videos: [],
|
||||
error: "Failed to load recommendations"
|
||||
});
|
||||
}
|
||||
@@ -804,6 +819,67 @@ export default router => {
|
||||
return res.json({ success: false, error: "Tracking failed" }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
group.get(/\/tag-feed$/, async (req, res) => {
|
||||
try {
|
||||
const tag = req.url.qs?.tag ? String(req.url.qs.tag).trim() : null;
|
||||
if (!tag) {
|
||||
return res.json({ success: false, error: "Tag is required", items: [], total: 0 }, 400);
|
||||
}
|
||||
|
||||
const limit = Math.min(+(req.url.qs?.limit || 20), 50);
|
||||
const offset = Math.max(+(req.url.qs?.offset || 0), 0);
|
||||
const order = req.url.qs?.order === 'asc' ? 'asc' : 'desc';
|
||||
const focusId = req.url.qs?.focus_id ? String(req.url.qs.focus_id).trim() : null;
|
||||
|
||||
let mode = req.mode ?? 0;
|
||||
if (req.url.qs && req.url.qs.mode && ['0', '1', '2', '3'].includes(req.url.qs.mode)) {
|
||||
mode = parseInt(req.url.qs.mode);
|
||||
}
|
||||
const ratingsRaw = req.cookies.ratings;
|
||||
const ratingsArr = ratingsRaw ? decodeURIComponent(ratingsRaw).split(/[|,]/).filter(r => ['sfw','nsfw','nsfl','untagged'].includes(r)) : null;
|
||||
const cookieMime = req.cookies?.mime ? decodeURIComponent(req.cookies.mime).trim() : null;
|
||||
const mime = (typeof req.url.qs?.mime !== 'undefined')
|
||||
? (req.url.qs.mime || null)
|
||||
: (cookieMime || null);
|
||||
|
||||
const result = await f0cklib.getTagFeedItems({
|
||||
tag,
|
||||
order,
|
||||
offset,
|
||||
limit,
|
||||
focus_id: focusId,
|
||||
mode,
|
||||
ratings: ratingsArr,
|
||||
session: !!req.session,
|
||||
exclude: req.session?.excluded_tags || [],
|
||||
user_id: req.session?.id,
|
||||
is_admin: req.session?.admin,
|
||||
mime
|
||||
});
|
||||
|
||||
const effectiveOffset = result.offset ?? offset;
|
||||
|
||||
return res.json({
|
||||
success: true,
|
||||
tag,
|
||||
order,
|
||||
total: result.total,
|
||||
offset: effectiveOffset,
|
||||
limit: result.limit ?? limit,
|
||||
items: result.items,
|
||||
hasMore: (effectiveOffset + result.items.length) < result.total
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("[TAG-FEED] Error loading tag feed items:", err);
|
||||
return res.json({
|
||||
success: false,
|
||||
error: "Failed to load tag feed",
|
||||
items: [],
|
||||
total: 0
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
|
||||
group.get(/\/orakel\/user$/, async (req, res) => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user