Skip to content

Commit

Permalink
refactor: tách các hàm để lấy dữ liệu website khác tốt hơn
Browse files Browse the repository at this point in the history
  • Loading branch information
ooker777 committed Oct 29, 2024
1 parent 6ce3e71 commit 9212d31
Show file tree
Hide file tree
Showing 8 changed files with 3,867 additions and 3,527 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,50 +11,64 @@ 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];
}

/**
* Nếu là trang chủ thì slug là tên website bỏ hết dấu cách.
* Nếu không phải là trang chủ thì slug sẽ là phần cuối cùng trong pathname. Nếu phần cuối cùng đó có extension, và nó là `htm`, `html`, `php` thì bỏ đi, còn lại thì để lại
*/
function tạoSlugTừUrlWebsite(nguồn: URL | string | undefined, làTrangChủ = false) {
if (làTrangChủ && typeof nguồn === "string") return nguồn?.replace(/\s/g, "");

const { pathname } = nguồn as 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;
return {
"Trang chủ": {
tên: tênWebsite,
tên: tênWebsite || hostname,
môTả: meta.og?.description || meta?.description || document.querySelector("p")?.textContent,
ảnh: meta.og?.image as string,
slug: tênWebsite?.replace(/\s/g, ""),
slug: tạoSlugTừUrlWebsite(tênWebsite, làTrangChủ),
},
};
} else {
const tênBàiĐăng = metaTitle || phầnTênBàiTrongHtmlTitle?.trim() || htmlTitle;
return {
"Bài đăng": {
tên: tênBàiĐăng || hostname,
môTả: meta.og?.description || meta?.description || document.querySelector("p")?.textContent,
ảnh: meta.og?.image as string,
slug: tạoSlugTừUrlWebsite(url),
},
};
}
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);
}
}
3 changes: 2 additions & 1 deletion Code chạy trên local, server, KV/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
Loading

0 comments on commit 9212d31

Please sign in to comment.