diff --git a/pom.xml b/pom.xml
index cb560f0..e40aee4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,24 @@
3.14.0
+
+ org.jsoup
+ jsoup
+ 1.15.3
+
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+
+
+ com.googlecode.json-simple
+ json-simple
+ 1.1
+
diff --git a/src/main/java/com/itn/admin/cmn/msg/RestResponse.java b/src/main/java/com/itn/admin/cmn/msg/RestResponse.java
new file mode 100644
index 0000000..fe1c1d3
--- /dev/null
+++ b/src/main/java/com/itn/admin/cmn/msg/RestResponse.java
@@ -0,0 +1,32 @@
+package com.itn.admin.cmn.msg;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public class RestResponse {
+
+ private String resultCode = "0";
+
+ private Object data;
+
+ private LocalDateTime localDateTime = LocalDateTime.now();
+
+ /**
+ * 성공 생성자
+ * 성공은 resultCode = 0
+ */
+ public RestResponse(Object data) {
+ this.data=data;
+ }
+
+
+
+}
diff --git a/src/main/java/com/itn/admin/cmn/util/scheduled/ScheduledTasks.java b/src/main/java/com/itn/admin/cmn/util/scheduled/ScheduledTasks.java
new file mode 100644
index 0000000..42aa762
--- /dev/null
+++ b/src/main/java/com/itn/admin/cmn/util/scheduled/ScheduledTasks.java
@@ -0,0 +1,32 @@
+package com.itn.admin.cmn.util.scheduled;
+
+import com.itn.admin.etc.crawling.morak.service.MorakService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * packageName : com.itn.mjonApi.cmn.Scheduled
+ * fileName : ScheduledTasks
+ * author : hylee
+ * date : 2023-08-28
+ * description :
+ * ===========================================================
+ * DATE AUTHOR NOTE
+ * -----------------------------------------------------------
+ * 2023-08-28 hylee 최초 생성
+ */
+@Service
+public class ScheduledTasks {
+
+ @Autowired
+ private MorakService morakService;
+
+ @Scheduled(cron = "0 40 10 * * MON-FRI")
+ public void noonJob() throws IOException {
+ System.out.println("It's noon!");
+ morakService.morakMenu();
+ }
+}
diff --git a/src/main/java/com/itn/admin/cmn/util/slack/SlackUtil.java b/src/main/java/com/itn/admin/cmn/util/slack/SlackUtil.java
new file mode 100644
index 0000000..0f2354a
--- /dev/null
+++ b/src/main/java/com/itn/admin/cmn/util/slack/SlackUtil.java
@@ -0,0 +1,57 @@
+package com.itn.admin.cmn.util.slack;
+
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.json.simple.JSONObject;
+
+import java.io.IOException;
+
+/**
+ * packageName : com.itn.mjonApi.util.slack
+ * fileName : Slack
+ * author : hylee
+ * date : 2023-08-28
+ * description :
+ * ===========================================================
+ * DATE AUTHOR NOTE
+ * -----------------------------------------------------------
+ * 2023-08-28 hylee 최초 생성
+ */
+
+public class SlackUtil {
+ public static void sendMorakMenuToSlack(String sendMsg) {
+
+ String url = "https://hooks.slack.com/services/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";
+ HttpClient client = new HttpClient();
+ PostMethod post = new PostMethod(url);
+ JSONObject json = new JSONObject();
+
+ try {
+ String munjaText = sendMsg;
+ json.put("channel", "모락메뉴api");
+
+ json.put("text", munjaText);
+// json.put("icon_emoji", ":원하는 아이콘:"); //커스터마이징으로 아이콘 만들수도 있다!
+ json.put("username", "모락 메뉴");
+
+
+ post.addParameter("payload", json.toString());
+ // 처음에 utf-8로 content-type안넣어주니까 한글은 깨져서 content-type넣어줌
+ post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+ int responseCode = client.executeMethod(post);
+ String response = post.getResponseBodyAsString();
+ if (responseCode != HttpStatus.SC_OK) {
+ System.out.println("Response: " + response);
+ }
+
+ } catch (IllegalArgumentException e) {
+ System.out.println("IllegalArgumentException posting to Slack " + e);
+ } catch (IOException e) {
+ System.out.println("IOException posting to Slack " + e);
+ } finally {
+ post.releaseConnection();
+ }
+ }
+}
diff --git a/src/main/java/com/itn/admin/etc/crawling/morak/service/MorakService.java b/src/main/java/com/itn/admin/etc/crawling/morak/service/MorakService.java
new file mode 100644
index 0000000..0669e70
--- /dev/null
+++ b/src/main/java/com/itn/admin/etc/crawling/morak/service/MorakService.java
@@ -0,0 +1,22 @@
+package com.itn.admin.etc.crawling.morak.service;
+
+
+import com.itn.admin.cmn.msg.RestResponse;
+
+import java.io.IOException;
+
+/**
+ * packageName : com.itn.mjonApi.etc.ganpandaum.service
+ * fileName : GdService
+ * author : hylee
+ * date : 2023-06-07
+ * description :
+ * ===========================================================
+ * DATE AUTHOR NOTE
+ * -----------------------------------------------------------
+ * 2023-06-07 hylee 최초 생성
+ */
+public interface MorakService {
+ RestResponse morakMenu() throws IOException;
+// void morakMenu() throws IOException;
+}
diff --git a/src/main/java/com/itn/admin/etc/crawling/morak/service/impl/MorakServiceImpl.java b/src/main/java/com/itn/admin/etc/crawling/morak/service/impl/MorakServiceImpl.java
new file mode 100644
index 0000000..7433f40
--- /dev/null
+++ b/src/main/java/com/itn/admin/etc/crawling/morak/service/impl/MorakServiceImpl.java
@@ -0,0 +1,109 @@
+package com.itn.admin.etc.crawling.morak.service.impl;
+
+import com.itn.admin.cmn.msg.RestResponse;
+import com.itn.admin.cmn.util.slack.SlackUtil;
+import com.itn.admin.etc.crawling.morak.service.MorakService;
+import lombok.extern.slf4j.Slf4j;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.springframework.stereotype.Service;
+
+import java.sql.SQLOutput;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * packageName : com.itn.mjonApi.etc.ganpandaum.service.impl
+ * fileName : GdServiceImpl
+ * author : hylee
+ * date : 2023-06-07
+ * description :
+ * ===========================================================
+ * DATE AUTHOR NOTE
+ * -----------------------------------------------------------
+ * 2023-06-07 hylee 최초 생성
+ */
+@Service
+@Slf4j
+public class MorakServiceImpl implements MorakService {
+
+ @Override
+ public RestResponse morakMenu() {
+// public void morakMenu() {
+ String imgUrl = "";
+ try {
+ while (true) {
+ // 웹사이트에 연결
+ Document doc = Jsoup.connect("https://m.blog.naver.com/jh06200/223266997482")
+ .timeout(60000) // 타임아웃 시간을 60초로 설정
+ .get();
+
+ // img가 있는 태그 가져오기
+ Element mainDoc = doc.select(".se-component.se-image.se-l-default").first();
+ // img에서 큰사이즈의 이미지 URL 가져오기
+ imgUrl = mainDoc.select("img").attr("src");
+
+ imgUrl = imgUrl.replace("w80_blur", "w800");
+ System.out.println("imgUrl : "+ imgUrl);
+
+ // 현재 날짜와 비교
+ // true면 오늘 날짜가 맞음
+ System.out.println(" befor this.dateComparison(imgUrl) :: "+ this.dateComparison(imgUrl));
+ if (this.dateComparison(imgUrl)) {
+ SlackUtil.sendMorakMenuToSlack(imgUrl);
+ System.out.println("this.dateComparison(imgUrl) :: "+ this.dateComparison(imgUrl));
+ break;
+ } else {
+ // 11시 30분이 지났으면 break;
+ if (isCurrentTime1130()) {
+ break;
+ }
+ Thread.sleep(100000);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+
+
+ return new RestResponse(imgUrl);
+
+ }
+
+ private boolean isCurrentTime1130() {
+ LocalTime now = LocalTime.now();
+ LocalTime targetTime = LocalTime.of(11, 30);
+ return now.isAfter(targetTime);
+ }
+
+ private Boolean dateComparison(String imgUrl) {
+ Boolean result = false;
+ // imgUrl에서 추출할 날짜 패턴 정수 8개 설정
+ Pattern pattern = Pattern.compile("(\\d{8})");
+ // 날짜 패턴 추출
+ Matcher matcher = pattern.matcher(imgUrl);
+
+ // 찾았으면 if true
+ if (matcher.find()) {
+ String extractedDate = matcher.group(1);
+
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+ LocalDate dateFromText = LocalDate.parse(extractedDate, formatter);
+ LocalDate currentDate = LocalDate.now();
+
+ if (dateFromText.equals(currentDate)) {
+ result = true;
+ }
+ } else {
+ System.out.println("No date found in the text.");
+ }
+
+ return result;
+ }
+
+}
diff --git a/src/main/java/com/itn/admin/etc/crawling/morak/web/MorakController.java b/src/main/java/com/itn/admin/etc/crawling/morak/web/MorakController.java
new file mode 100644
index 0000000..f2fd8a9
--- /dev/null
+++ b/src/main/java/com/itn/admin/etc/crawling/morak/web/MorakController.java
@@ -0,0 +1,49 @@
+package com.itn.admin.etc.crawling.morak.web;
+
+import com.itn.admin.cmn.msg.RestResponse;
+import com.itn.admin.etc.crawling.morak.service.MorakService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * packageName : com.itn.mjonApi.etc.ganpandaum.web
+ * fileName : SendRestController
+ * author : hylee
+ * date : 2023-02-15
+ * description :
+ * ===========================================================
+ * DATE AUTHOR NOTE
+ * -----------------------------------------------------------
+ * 2023-02-15 hylee 최초 생성
+ */
+
+// 치환문자가 있으면 , => §로 치환
+
+@Slf4j
+@RestController
+public class MorakController {
+
+
+ @Autowired
+ private MorakService morakService;
+
+
+ /**
+ *
+ * @Discription 모락 메뉴 크롤링 컨트롤러
+ * @return
+ */
+ @CrossOrigin("*") // 모든 요청에 접근 허용
+ @GetMapping("/etc/morak/morakMenu")
+ public ResponseEntity morakMenu() throws Exception {
+ return ResponseEntity.ok().body(morakService.morakMenu());
+ }
+
+
+
+
+}