Files
koc-loop/lib/publish-url.ts
2026-07-30 12:06:41 +08:00

28 lines
812 B
TypeScript

export function safeHttpUrl(input: string) {
try {
const url = new URL(input);
if (!["http:", "https:"].includes(url.protocol)) return null;
return url;
} catch {
return null;
}
}
export function extractXhsPublishUrl(input: string) {
const candidates =
input.match(/https?:\/\/[^\s<>"',。!?;:、【】()]+/gi) ?? [];
for (const candidate of candidates) {
const cleaned = candidate.replace(/[.,!?;:~)\]}]+$/g, "");
const url = safeHttpUrl(cleaned);
if (!url) continue;
const hostname = url.hostname.toLowerCase();
const isXhs =
hostname === "xiaohongshu.com" ||
hostname.endsWith(".xiaohongshu.com") ||
hostname === "xhslink.cn" ||
hostname.endsWith(".xhslink.cn");
if (isXhs) return url.toString();
}
return "";
}