๐Ÿค” ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ ์  ๋„์ „ ์ƒ๊ฐํ•ด๋ณด๊ธฐ

ํฌ๋กค๋ง ์ธํ„ฐํŽ˜์ด์Šค

์ตœ์ข…์ ์œผ๋กœ ํŠน์ • ํ…Œ๋งˆ์˜ ํƒ€์ž„ํ…Œ์ด๋ธ” ๋ฐ˜ํ™˜

getTimeTableByTheme({shop, theme, date})

ํŠน์ • ํ…Œ๋งˆ๋ฅผ ๋ชป๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ โ†’ export ํ•„์š”์—†์Œ

getTimeTableListByShop({shop, date})

{
    '์ด๋ถˆ๋ฐ–์€ ์œ„ํ—˜ํ•ด': [
      { time: '11:10', possible: false },
      { time: '12:30', possible: false },
      { time: '13:50', possible: true },
      { time: '15:10', possible: true },
      { time: '16:30', possible: true },
      { time: '17:50', possible: true },
      { time: '19:10', possible: true },
      { time: '20:30', possible: false },
      { time: '21:50', possible: true },
      { time: '23:10', possible: true }
    ],
    'B์•„ํŒŒํŠธ 13๋™ 1313ํ˜ธ': [
      { time: '11:00', possible: false },
      { time: '12:20', possible: false },
      { time: '13:40', possible: true },
      { time: '15:00', possible: true },
      { time: '16:20', possible: true },
      { time: '17:40', possible: false },
      { time: '19:00', possible: true },
      { time: '20:20', possible: false },
      { time: '21:40', possible: false },
      { time: '23:00', possible: false }
    ],
    'MONSTER:10800': [
      { time: '10:50', possible: false },
      { time: '12:20', possible: false },
      { time: '13:50', possible: true },
      { time: '15:20', possible: true },
      { time: '16:50', possible: true },
      { time: '18:20', possible: true },
      { time: '19:50', possible: true },
      { time: '21:20', possible: true },
      { time: '22:50', possible: true }
    ],
    '๋‹ค์‹œ๋ด„': [
      { time: '10:45', possible: false },
      { time: '12:30', possible: false },
      { time: '14:15', possible: true },
      { time: '16:00', possible: true },
      { time: '17:45', possible: true },
      { time: '19:30', possible: false },
      { time: '21:15', possible: false },
      { time: '23:00', possible: true }
    ],
    '์ธ': [
      { time: '10:50', possible: false },
      { time: '12:10', possible: false },
      { time: '13:30', possible: true },
      { time: '14:50', possible: true },
      { time: '16:10', possible: true },
      { time: '17:30', possible: true },
      { time: '18:50', possible: false },
      { time: '20:10', possible: true },
      { time: '21:30', possible: true },
      { time: '22:50', possible: true }
    ],
    'SOUL CHASER - ์‹ค์ข…': [
      { time: '10:30', possible: false },
      { time: '11:30', possible: false },
      { time: '12:30', possible: false },
      { time: '13:30', possible: false },
      { time: '14:30', possible: false },
      { time: '15:30', possible: false },
      { time: '16:30', possible: false },
      { time: '17:30', possible: false },
      { time: '18:30', possible: false },
      { time: '19:30', possible: false }
    ]
  }

ํ‚ค์ด์Šค์ผ€์ดํ”„

ํ•จ์ˆ˜

import axios from "axios";
import * as cheerio from "cheerio";

const BASE_URL = "<https://keyescape.co.kr/web/rev.theme_time.php>";

const getInfoByData = async ({ shop, theme, date }) => {
  try {
    const res = await axios({
      method: "post",
      url: `${BASE_URL}?zizum_num=${shop}&rev_days=${date}&theme_num=${theme}`,
    });
    return res.data;
  } catch (error) {
    return null;
  }
};

export const getTimeTableByTheme = async ({ shop, theme, date }) => {
  const data = await getInfoByData({ shop, theme, date });

  const $ = cheerio.load(data);
  const liTags = $("li");

  const timeArray = [];

  liTags.each((index, element) => {
    const checkClass = $(element).attr("class").trim();
    const checkTime = $(element).text().trim();

    const timeObject = {
      time: checkTime,
    };

    if (checkClass === "possible") {
      timeObject["possible"] = true;
    }

    if (checkClass === "impossible") {
      timeObject["possible"] = false;
    }

    timeArray.push(timeObject);
  });

  return timeArray;
};

/* ํ˜ธ์ถœ ์˜ˆ์‹œ
getTimeTableByTheme({
  shop: 20,
  theme: 61,
  date: "2023-11-02",
});

*/

์‘๋‹ต ์˜ˆ์‹œ

[
  { time: '14:45', possible: true },
  { time: '15:40', possible: false },
  { time: '16:35', possible: false },
  { time: '17:30', possible: false },
  { time: '18:25', possible: false },
  { time: '19:20', possible: false },
  { time: '20:15', possible: false },
  { time: '21:10', possible: false },
  { time: '22:05', possible: false }
]