folx.tv: stari slugi izbrisanih rubrik se 301 preusmerijo na news.folx.tv (seznam slugov se bere z news API, predpomnjen 10 min)

This commit is contained in:
2026-08-30 09:13:40 +02:00
parent fc7e9c38a0
commit 8e29ad8e41
+29
View File
@@ -103,6 +103,31 @@ const PUBLISHER = (base: string) => ({
const ONE_RUBRIKEN = new Set(["Politik", "Promis", "Sport", "Musik & Film", "Wetter", "Finanzen", "Aktuelles"]);
// 30. 8. 2026: rubrike so izbrisane iz baze folx.tv in zivijo samo se na
// news.folx.tv. Stare povezave s Facebooka in Googla morajo se vedno delati,
// zato ob neznanem slugu vprasamo news.folx.tv, ali ga pozna, in preusmerimo.
let NEWS_SLUGS: Set<string> = new Set();
let NEWS_SLUGS_AT = 0;
async function newsHasSlug(slug: string): Promise<boolean> {
if (Date.now() - NEWS_SLUGS_AT > 600000) {
try {
const r = await fetch("https://news.folx.tv/api/articles", {
headers: { "user-agent": "folx.tv-redirect" },
signal: AbortSignal.timeout(10000),
});
const j: any = await r.json();
if (Array.isArray(j) && j.length) {
NEWS_SLUGS = new Set(j.map((a: any) => String(a.slug)));
NEWS_SLUGS_AT = Date.now();
}
} catch (e) {
NEWS_SLUGS_AT = Date.now() - 540000; // ob napaki poskusi cez minuto
}
}
return NEWS_SLUGS.has(slug);
}
function setRobots(html: string, content: string): string {
const tag = `<meta name="robots" content="${content}" />`;
if (/<meta\s+name="robots"[^>]*>/i.test(html)) {
@@ -420,6 +445,10 @@ export function serveStatic(app: Express) {
res.redirect(301, `${NEWS_HOST}/${article.slug}`);
return;
}
if (!article && (await newsHasSlug(slug))) {
res.redirect(301, `${NEWS_HOST}/${slug}`);
return;
}
if (article && (article as any).targetUrl) {
res.redirect(302, (article as any).targetUrl);
return;