diff --git a/backend/src/services/x/scraper.js b/backend/src/services/x/scraper.js index 9020812..4e15c39 100644 --- a/backend/src/services/x/scraper.js +++ b/backend/src/services/x/scraper.js @@ -141,8 +141,8 @@ export async function fetchSingleTweet(nitterUrl, username, postId) { const html = await res.text(); - // 메인 트윗 파싱 (main-tweet 클래스) - const mainTweetMatch = html.match(/
]*>([\s\S]*?)<\/div>\s*
/); + // 메인 트윗 파싱 (main-tweet ~ replies 사이) + const mainTweetMatch = html.match(/
([\s\S]*?)
/); if (!mainTweetMatch) { throw new Error('트윗 내용을 파싱할 수 없습니다'); } diff --git a/frontend/src/pages/pc/admin/schedule/form/XForm.jsx b/frontend/src/pages/pc/admin/schedule/form/XForm.jsx index 1aebf21..918f921 100644 --- a/frontend/src/pages/pc/admin/schedule/form/XForm.jsx +++ b/frontend/src/pages/pc/admin/schedule/form/XForm.jsx @@ -2,7 +2,6 @@ import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { motion } from "framer-motion"; import { - Twitter, Hash, Loader2, Check, @@ -10,9 +9,23 @@ import { Save, Image as ImageIcon, } from "lucide-react"; + import Toast from "../../../../../components/Toast"; import useToast from "../../../../../hooks/useToast"; +// X 로고 아이콘 +const XLogo = ({ size = 24, className = "" }) => ( + + + +); + /** * X(Twitter) 일정 추가 폼 * - 게시글 ID 입력 시 자동으로 정보 조회 @@ -151,7 +164,7 @@ function XForm() { {/* 게시글 ID 입력 */}
- +

X 게시글