From 3da8e6263d1900571cc8565b19d1b383dfbbf631 Mon Sep 17 00:00:00 2001 From: real-zephex Date: Sun, 26 May 2024 22:29:35 +0530 Subject: =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20perf(kdrama,=20anime):=20cache=20v?= =?UTF-8?q?ideo=20links,=20replace=20next/image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/anime/[id]/page.jsx | 4 +++- src/app/anime/components/cacher.js | 4 ++-- src/app/anime/components/search_results.jsx | 11 ++++------- src/app/anime/data-fetch/request.js | 2 +- src/app/anime/page.jsx | 11 ++++------- src/app/kdrama/[id]/page.jsx | 3 +++ src/app/kdrama/components/cacher.js | 21 +++++++++++++++++++-- src/app/kdrama/components/requests.js | 6 +++--- src/app/kdrama/components/searchFormatter.jsx | 12 +++++------- src/app/kdrama/page.jsx | 13 +++++-------- src/app/movies/components/searchFormatter.jsx | 11 ++++------- src/app/movies/page.jsx | 11 ++++------- src/app/page.jsx | 12 +++--------- 13 files changed, 60 insertions(+), 61 deletions(-) (limited to 'src') diff --git a/src/app/anime/[id]/page.jsx b/src/app/anime/[id]/page.jsx index f8cbe0c..0e62310 100644 --- a/src/app/anime/[id]/page.jsx +++ b/src/app/anime/[id]/page.jsx @@ -2,13 +2,15 @@ import { Chip, Image } from "@nextui-org/react"; import { anime_info } from "../data-fetch/request"; import DescriptionTabs from "../components/infoTabs"; - import EpisodesContainer from "../components/vidButtonContainer"; +import { preFetchVideoLinks } from "../components/cacher"; const AnimeInfoHomepage = async ({ params }) => { const id = params.id; const data = await anime_info(id); + preFetchVideoLinks(data.episodes); + return (
diff --git a/src/app/anime/components/cacher.js b/src/app/anime/components/cacher.js index 164dafd..ae9b10b 100644 --- a/src/app/anime/components/cacher.js +++ b/src/app/anime/components/cacher.js @@ -1,6 +1,6 @@ "use server"; -import { anime_info } from "../data-fetch/request"; +import { anime_info, video_url } from "../data-fetch/request"; export async function preFetchAnimeInfo(data) { try { @@ -18,7 +18,7 @@ export async function preFetchAnimeInfo(data) { export async function preFetchVideoLinks(data) { try { const fetchPromises = data.map(async (element) => { - await fetch(watch_url(element.id), { next: { revalidate: 21600 } }); + await video_url(element.id); }); await Promise.all(fetchPromises); diff --git a/src/app/anime/components/search_results.jsx b/src/app/anime/components/search_results.jsx index 3097a96..2018680 100644 --- a/src/app/anime/components/search_results.jsx +++ b/src/app/anime/components/search_results.jsx @@ -2,8 +2,8 @@ import { search_results } from "../data-fetch/request"; import { preFetchAnimeInfo } from "./cacher"; import styles from "../../page.module.css"; -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; const SearchResults = async (title) => { const data = await search_results(title); @@ -25,14 +25,11 @@ const SearchResults = async (title) => { Anime Poster diff --git a/src/app/anime/data-fetch/request.js b/src/app/anime/data-fetch/request.js index 3d22b7a..579f693 100644 --- a/src/app/anime/data-fetch/request.js +++ b/src/app/anime/data-fetch/request.js @@ -47,7 +47,7 @@ export const anime_info = async (id) => { export const video_url = async (episodeId) => { const res = await fetch(watch_url(episodeId), { - next: { revalidate: 21600 }, + cache: "force-cache", }); const data = await res.json(); return data; diff --git a/src/app/anime/page.jsx b/src/app/anime/page.jsx index a2d5777..ce5ca34 100644 --- a/src/app/anime/page.jsx +++ b/src/app/anime/page.jsx @@ -1,5 +1,5 @@ -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; import styles from "../page.module.css"; import { top_airing, recent, popular } from "./data-fetch/request"; @@ -38,14 +38,11 @@ const AnimeHomepage = async () => { Anime Poster diff --git a/src/app/kdrama/[id]/page.jsx b/src/app/kdrama/[id]/page.jsx index d94810e..90acded 100644 --- a/src/app/kdrama/[id]/page.jsx +++ b/src/app/kdrama/[id]/page.jsx @@ -2,11 +2,14 @@ import { Chip, Image } from "@nextui-org/react"; import DescriptionTabs from "../components/infoTabs"; import { dramaInfo } from "../components/requests"; import EpisodesContainer from "../components/episodesContainer"; +import { PreFetchVideoLinks } from "../components/cacher"; export default async function DramaInfo({ params }) { const id = decodeURIComponent(params.id); const data = await dramaInfo(id); + PreFetchVideoLinks(data.episodes, data.id); + return (
diff --git a/src/app/kdrama/components/cacher.js b/src/app/kdrama/components/cacher.js index fdfa272..476ed95 100644 --- a/src/app/kdrama/components/cacher.js +++ b/src/app/kdrama/components/cacher.js @@ -1,10 +1,14 @@ "use server"; +import { drama_info_url } from "../../../../utils/kdrama_urls"; +import { videoLink } from "./requests"; + export async function PreFetchKdramaInfo(data) { try { const fetchPromises = data.results.map(async (element) => { - const link = `https://consumet-jade.vercel.app/movies/dramacool/info?id=${element.id}`; - await fetch(link, { next: { revalidate: 21600 } }); + await fetch(drama_info_url(element.id), { + next: { revalidate: 21600 }, + }); }); await Promise.all(fetchPromises); @@ -13,3 +17,16 @@ export async function PreFetchKdramaInfo(data) { console.error("Error occurred while pre-fetching video links:", error); } } + +export const PreFetchVideoLinks = async (data, mediaID) => { + try { + const fetchPromise = data.map(async (element) => { + await videoLink(element.id, mediaID); + }); + + await Promise.all(fetchPromise); + console.log("Kdrama video links pre fetched successfully"); + } catch (error) { + console.error("Error occured while fetching video links"); + } +}; diff --git a/src/app/kdrama/components/requests.js b/src/app/kdrama/components/requests.js index 5609d79..1c82b79 100644 --- a/src/app/kdrama/components/requests.js +++ b/src/app/kdrama/components/requests.js @@ -36,9 +36,9 @@ export const dramaInfo = async (id) => { export const videoLink = async (epiId, mediaId) => { const res = await fetch(videoURL(epiId, mediaId), { - next: { revalidate: 21600 }, + cache: "force-cache", }); const data = await res.json(); - const videoLink = data.sources[0].url; - return videoLink; + const vidLink = await data.sources[0].url; + return vidLink; }; diff --git a/src/app/kdrama/components/searchFormatter.jsx b/src/app/kdrama/components/searchFormatter.jsx index bac2549..a9e2f42 100644 --- a/src/app/kdrama/components/searchFormatter.jsx +++ b/src/app/kdrama/components/searchFormatter.jsx @@ -1,5 +1,5 @@ -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; import styles from "../../page.module.css"; @@ -16,18 +16,16 @@ const SearchedDataFormatter = async (data) => { href={`/kdrama/${encodeURIComponent(item.id)}`} aria-label="anime redirection links" className="flex flex-col items-center mx-1" + title={item.title} > Anime Poster diff --git a/src/app/kdrama/page.jsx b/src/app/kdrama/page.jsx index d5e2855..afcb8a2 100644 --- a/src/app/kdrama/page.jsx +++ b/src/app/kdrama/page.jsx @@ -1,5 +1,5 @@ -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; import { DramaDataFetcher } from "./components/requests"; import styles from "../page.module.css"; @@ -37,14 +37,11 @@ const KdramaHomepage = async () => { Anime Poster diff --git a/src/app/movies/components/searchFormatter.jsx b/src/app/movies/components/searchFormatter.jsx index 47b684f..dc6afb2 100644 --- a/src/app/movies/components/searchFormatter.jsx +++ b/src/app/movies/components/searchFormatter.jsx @@ -1,5 +1,5 @@ -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; import styles from "../../page.module.css"; @@ -21,14 +21,11 @@ const MovieSearchFormatter = async (data) => { Anime Poster diff --git a/src/app/movies/page.jsx b/src/app/movies/page.jsx index 66ae888..417df28 100644 --- a/src/app/movies/page.jsx +++ b/src/app/movies/page.jsx @@ -1,5 +1,5 @@ -import { Card, CardHeader, CardBody, Image, Link } from "@nextui-org/react"; -import NextImage from "next/image"; +import { Card, CardHeader, CardBody, Link } from "@nextui-org/react"; +import Image from "next/image"; import MovieSearchBar from "./components/search"; import { MovieHomepageDataFetcher } from "./components/requestsHandler"; @@ -36,14 +36,11 @@ export default async function MovieHomepage() { Anime Poster diff --git a/src/app/page.jsx b/src/app/page.jsx index 4c99113..6a8e0aa 100644 --- a/src/app/page.jsx +++ b/src/app/page.jsx @@ -1,11 +1,5 @@ -import { - Card, - CardHeader, - CardBody, - Divider, - Link, - Image, -} from "@nextui-org/react"; +import { Card, CardHeader, CardBody, Divider, Link } from "@nextui-org/react"; +import Image from "next/image"; export default async function Home() { const homePageCards = (title, message, url) => { @@ -17,8 +11,8 @@ export default async function Home() { alt="nextui logo" height={40} width={40} - radius="sm" src={url} + className="rounded-md" />

{title}

-- cgit v1.2.3