diff --git "a/Code ch\341\272\241y tr\303\252n client/URL, HTML/L\341\272\245y th\303\264ng tin t\341\273\253 URL/Website kh\303\241c.ts" "b/Code ch\341\272\241y tr\303\252n client/URL, HTML/L\341\272\245y th\303\264ng tin t\341\273\253 URL/Website kh\303\241c.ts" index b21c9b8..07ecc13 100644 --- "a/Code ch\341\272\241y tr\303\252n client/URL, HTML/L\341\272\245y th\303\264ng tin t\341\273\253 URL/Website kh\303\241c.ts" +++ "b/Code ch\341\272\241y tr\303\252n client/URL, HTML/L\341\272\245y th\303\264ng tin t\341\273\253 URL/Website kh\303\241c.ts" @@ -11,21 +11,41 @@ interface Website { "Trang chủ"?: ThôngTinWebsiteCơBản; "Bài đăng"?: ThôngTinWebsiteCơBản; } + +function táchTênTrongHtmlTitle(htmlTitle: string | undefined): string[] | [undefined, undefined] { + if (htmlTitle?.includes(" - ")) return htmlTitle?.split(" - "); + if (htmlTitle?.includes(" | ")) return htmlTitle?.split(" | "); + return [undefined, undefined]; +} + +function tạoSlugTừUrlWebsite(url: URL) { + const { pathname } = url; + const pathnameWithoutTrailingSlash = pathname.slice(-1) === "/" ? pathname.slice(0, -1) : pathname; + const pathnameLastSection = pathnameWithoutTrailingSlash.split("/").slice(-1)[0]; + const đuôiHTML = /\.(htm|html|php)$/; + const đuôiTậpTin = /\.(jpg|png|gif|pdf|doc|docx)$/; + + let slug = pathnameLastSection; + if (đuôiHTML.test(pathnameLastSection)) slug = pathnameLastSection.replace(đuôiHTML, ""); + if (đuôiTậpTin.test(pathnameLastSection)) slug = pathnameLastSection.replace(".", ""); + return decodeURIComponent(slug); +} + /** * Nếu pathname === "/" thì là trang chủ, còn không thì là bài đăng. Điều này có nghĩa là tên miền con (VD: menbership.ciovn.org) sẽ được tính là trang chủ */ export function thôngTinWebsite(metaTagUrlVàDocument: MetaTagUrlVàDocument): Website { const { meta, document, url } = metaTagUrlVàDocument; - const { href, pathname } = url; + const { href, pathname, hostname } = url; const htmlTitle = document.querySelector("title")?.textContent; - const htmlTitleSplit = htmlTitle?.split(" - "); + const [phầnTênBàiTrongHtmlTitle, phầnTênWebsiteTrongHtmlTitle] = táchTênTrongHtmlTitle(htmlTitle); const metaTitle = meta.og?.title; - const tênWebsite = meta.og?.site_name || htmlTitleSplit?.[1]?.trim() || metaTitle || htmlTitle; const subdomain = getSubdomain(href) || ""; const làTrangChủ = pathname === "/" && !["membership"].includes(subdomain); if (làTrangChủ) { + const tênWebsite = meta.og?.site_name || phầnTênWebsiteTrongHtmlTitle?.trim() || metaTitle || htmlTitle || hostname; return { "Trang chủ": { tên: tênWebsite, @@ -34,27 +54,15 @@ export function thôngTinWebsite(metaTagUrlVàDocument: MetaTagUrlVàDocument): slug: tênWebsite?.replace(/\s/g, ""), }, }; - } - const tênBàiĐăng = metaTitle || htmlTitleSplit?.[0].trim() || htmlTitle; - return { - "Bài đăng": { - tên: tênBàiĐăng, - môTả: meta.og?.description || meta?.description || document.querySelector("p")?.textContent, - ảnh: meta.og?.image as string, - slug: tạoSlugTừUrlWebsite(url), - }, - }; - /** Nếu */ - function tạoSlugTừUrlWebsite(url: URL) { - const { pathname } = url; - const pathnameWithoutTrailingSlash = pathname.slice(-1) === "/" ? pathname.slice(0, -1) : pathname; - const pathnameLastSection = pathnameWithoutTrailingSlash.split("/").slice(-1)[0]; - const đuôiHTML = /\.(htm|html|php)$/; - const đuôiTậpTin = /\.(jpg|png|gif|pdf|doc|docx)$/; - - let slug = pathnameLastSection; - if (đuôiHTML.test(pathnameLastSection)) slug = pathnameLastSection.replace(đuôiHTML, ""); - if (đuôiTậpTin.test(pathnameLastSection)) slug = pathnameLastSection.replace(".", ""); - return decodeURIComponent(slug); + } else { + const tênBàiĐăng = metaTitle || phầnTênBàiTrongHtmlTitle?.trim() || htmlTitle || hostname; + return { + "Bài đăng": { + tên: tênBàiĐăng, + môTả: meta.og?.description || meta?.description || document.querySelector("p")?.textContent, + ảnh: meta.og?.image as string, + slug: tạoSlugTừUrlWebsite(url), + }, + }; } } diff --git "a/Code ch\341\272\241y tr\303\252n local, server, KV/mod.ts" "b/Code ch\341\272\241y tr\303\252n local, server, KV/mod.ts" index 88fdc44..e8112d8 100644 --- "a/Code ch\341\272\241y tr\303\252n local, server, KV/mod.ts" +++ "b/Code ch\341\272\241y tr\303\252n local, server, KV/mod.ts" @@ -15,11 +15,12 @@ */ import { kvSignal, readUnitSignal, writeUnitSignal } from "./Signal KV.ts"; import { kvGet, kvList } from "./Hàm cho KV.ts"; -import { copyDữLiệuTrênDeployXuốngLocal, tạoBàiĐăng, tạoNơiĐăng, xoáDữLiệuTrênKv } from "./Tạo dữ liệu.ts"; +import { tạoBàiĐăng, tạoNơiĐăng } from "./Tạo dữ liệu.ts"; import { tạoCache } from "./Hàm cho cache.ts"; import { VậtThểTiếpThị } from "../Code chạy trên client/Hàm và kiểu cho vật thể tiếp thị.ts"; const currentTime = Temporal.Now.plainTimeISO(); +// import { chạyTrênDeployChứKhôngChạyTrênLocal, copyDữLiệuTrênDeployXuốngLocal, xoáDữLiệuTrênKv } from "./Tạo dữ liệu.ts"; // await chạyTrênDeployChứKhôngChạyTrênLocal(); // await copyDữLiệuTrênDeployXuốngLocal();