Files
vega-providers/providers/world4u/meta.ts
himanshu8443 2a4aa2a680 renaming
2025-06-16 22:26:38 +05:30

82 lines
2.1 KiB
TypeScript

import { Info, Link, ProviderContext } from "../types";
export const getMeta = async function ({
link,
providerContext,
}: {
link: string;
providerContext: ProviderContext;
}): Promise<Info> {
try {
const { axios, cheerio } = providerContext;
const url = link;
const res = await axios.get(url);
const data = res.data;
const $ = cheerio.load(data);
const type = $(".entry-content")
.text()
.toLocaleLowerCase()
.includes("movie name")
? "movie"
: "series";
const imdbId = $(".imdb_left").find("a").attr("href")?.split("/")[4] || "";
const title = $(".entry-content")
.find('strong:contains("Name")')
.children()
.remove()
.end()
.text()
.replace(":", "");
const synopsis = $(".entry-content")
.find('p:contains("Synopsis"),p:contains("Plot"),p:contains("Story")')
.children()
.remove()
.end()
.text();
const image =
$(".wp-caption").find("img").attr("data-src") ||
$(".entry-content").find("img").attr("data-src") ||
"";
const links: Link[] = [];
$(".my-button").map((i, element) => {
const title = $(element).parent().parent().prev().text();
const episodesLink = $(element).attr("href");
const quality = title.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || "";
if (episodesLink && title) {
links.push({
title,
episodesLink: type === "series" ? episodesLink : "",
directLinks:
type === "movie"
? [
{
link: episodesLink,
title,
type: "movie",
},
]
: [],
quality,
});
}
});
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} catch (err) {
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
};