알림
뒤로
알림 설정
뒤로
더보기
게시물 알림
내 글 반응
내가 작성한 게시물이나 댓글에 다른 사람이 댓글이나 답글을 작성하면 알려줍니다.
공지사항
사이트에서 보내는 중요한 공지를 실시간으로 알려줍니다.
Alarm
마이페이지
로그아웃
로그인이 필요합니다.
로그인
카탈로그
스토리광고
스토리광고(일반)
스토리광고(B급)
스토리드라마
기업/기관
브랜드필름
인터뷰홍보영상
인터뷰,다큐
인터뷰 스토리영상
다큐멘터리
견적계산기
닫기
카탈로그
스토리광고
스토리광고(일반)
스토리광고(B급)
스토리드라마
기업/기관
브랜드필름
인터뷰홍보영상
인터뷰,다큐
인터뷰 스토리영상
다큐멘터리
견적계산기
MENU
THE FISHERS
Catalog
다양한 스타일을 탐색하고
당신에게 가장 적합한 것을
발견해보세요.
더피셔스 홈페이지가 리뉴얼 되었습니다 👏
최신 소식
2024-11-12
🫡
작성
목록
import React, { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { Clock } from 'lucide-react'; const YouTubeScheduler = () => { // 내일 날짜를 기본값으로 설정 const getTomorrowDateTime = () => { const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); tomorrow.setHours(9, 0, 0, 0); // 다음날 오전 9시로 설정 return tomorrow.toISOString().slice(0, 16); // YYYY-MM-DDTHH:mm 형식으로 변환 }; const [url, setUrl] = useState(''); const [scheduledTime, setScheduledTime] = useState(getTomorrowDateTime()); const [videoId, setVideoId] = useState(''); const [message, setMessage] = useState(''); const [isScheduled, setIsScheduled] = useState(false); // YouTube URL에서 video ID 추출 const extractVideoId = (url) => { const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/; const match = url.match(regExp); return (match && match[7].length === 11) ? match[7] : null; }; // 스케줄 설정 const scheduleVideo = () => { const extractedId = extractVideoId(url); if (!extractedId) { setMessage('올바른 YouTube URL을 입력해주세요.'); return; } if (!scheduledTime) { setMessage('재생 시간을 설정해주세요.'); return; } const scheduledTimestamp = new Date(scheduledTime).getTime(); const now = new Date().getTime(); if (scheduledTimestamp <= now) { setMessage('미래 시간을 선택해주세요.'); return; } setVideoId(extractedId); setIsScheduled(true); const formattedTime = new Date(scheduledTime).toLocaleString('ko-KR', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }); setMessage(`${formattedTime}에 재생이 예약되었습니다.`); // 예약된 시간에 실행될 타이머 설정 const timeUntilPlay = scheduledTimestamp - now; setTimeout(() => { setMessage('영상이 재생됩니다!'); // 실제 재생 로직은 여기에 구현 }, timeUntilPlay); }; return (
YouTube 예약 재생
setUrl(e.target.value)} className="w-full" />
setScheduledTime(e.target.value)} className="w-full" />
재생 예약하기
{message && (
{message}
)} {videoId && (
)}
); };
🫡