From 8c7f9fd113611df8c2f308b7120c0a8ae4cae706 Mon Sep 17 00:00:00 2001 From: real-zephex Date: Thu, 14 Mar 2024 16:16:36 +0530 Subject: First commit: Rewriting dramalama in next.js --- src/app/kdrama/page.js | 164 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 src/app/kdrama/page.js (limited to 'src/app/kdrama/page.js') diff --git a/src/app/kdrama/page.js b/src/app/kdrama/page.js new file mode 100644 index 0000000..3f0eee6 --- /dev/null +++ b/src/app/kdrama/page.js @@ -0,0 +1,164 @@ +"use client" + +import "./kdrama.css" + +import { useState } from "react"; +import ReactPlayer from "react-player"; +import Image from 'next/image'; + +import { + fetchAnimeInfo, + fetchDramaInfo, + fetchVideoLinks, +} from "./api/fetchAnime.js"; + +export default function Kdrama() { + + const [searchTitle, setSearchTitle] = useState(""); + const [searchedDrama, setSearchedDrama] = useState(null); + async function handleKeyPresses(event) { + if ( + (event.code === "Enter" || + event.code === 13 || + event.key === "Enter") && + searchTitle != "" + ) { + const info = await fetchAnimeInfo(searchTitle); + setSearchedDrama(info); + document.getElementById("popup").style.display = "flex"; + } + } + + const [details, setDetails] = useState(null); + async function handleDramaSearch(input) { + const drama_info = await fetchDramaInfo(input); + setDetails(drama_info); + document.getElementById("intro").style.display = "none"; + document.getElementById("videoContainer").style.display = "flex"; + } + + const [videoLink, setVideoLink] = useState(null); + const [episodeNo, setEpisodeNo] = useState(""); + async function get_video_link(ep_id, drama_id, episode) { + const link = await fetchVideoLinks(drama_id, ep_id); + const video_link = link.sources[0].url; + setVideoLink(video_link); + setEpisodeNo(episode); + } + + return ( +
+
+

Dramaverse

+ setSearchTitle(event.target.value)} + onKeyDown={(event) => handleKeyPresses(event)} + /> +
+ +
+

+ Start by searching for some dramas +

+ + Look for the search box above. + +
+ +
+
+ {details && ( +
+
+

+ {details.title} +

+ Drama +
+

+ {details.description} +

+
+ {details.episodes.map((eps, index) => ( + + ))} +
+

+ Playing episode {episodeNo} +

+ {videoLink && ( +
+ +
+ )} +
+ )} +
+
+ + +
+ + ) +} \ No newline at end of file -- cgit v1.2.3