diff options
| author | wabilin <[email protected]> | 2020-07-31 20:15:19 +0900 |
|---|---|---|
| committer | wabilin <[email protected]> | 2020-07-31 20:15:19 +0900 |
| commit | df2b1e4012dc50b56141bf9012d8e367a3d08fdf (patch) | |
| tree | f1876fbd2ecceaeef2e6757818987c0474bca46e /src/parseScheduleHtml.ts | |
| parent | add jsdom (diff) | |
| download | holo-schedule-df2b1e4012dc50b56141bf9012d8e367a3d08fdf.tar.xz holo-schedule-df2b1e4012dc50b56141bf9012d8e367a3d08fdf.zip | |
get datas without date
Diffstat (limited to 'src/parseScheduleHtml.ts')
| -rw-r--r-- | src/parseScheduleHtml.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/parseScheduleHtml.ts b/src/parseScheduleHtml.ts new file mode 100644 index 0000000..8177eee --- /dev/null +++ b/src/parseScheduleHtml.ts @@ -0,0 +1,37 @@ +import { JSDOM } from "jsdom"; +import { mapNodeList } from "./util"; + +function selectTrimTextContent(ele: Element, selector: string): string { + return ele.querySelector(selector)?.textContent?.replace(/\s+/g, "") || ""; +} + +function dataFromAThumbnail(thumb: Element) { + const time = selectTrimTextContent(thumb, ".datetime") + const name = selectTrimTextContent(thumb, ".name") + + const images = mapNodeList( + thumb.querySelectorAll("img"), + (img) => img.src + ) + .filter((src) => src.startsWith("https://yt3.ggpht.com")); + + return { + time, + name, + images, + }; +} + +function parseScheduleHtml(html: string | Buffer) { + const { window } = new JSDOM(html); + const { document } = window; + + const allThumbnail = document.querySelectorAll("a.thumbnail"); + const data = mapNodeList(allThumbnail, dataFromAThumbnail); + + console.log(data); + + return ""; +} + +export default parseScheduleHtml; |