Files
vega-providers/providers/mod/meta.ts

91 lines
2.5 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 meta = {
title:
$(".imdbwp__title").text() ||
$("strong:contains('Full Name:')")
.parent()
.clone()
.children()
.remove()
.end()
.text()
.trim(),
synopsis:
$(".imdbwp__teaser").text() ||
$(".liTOue").children("p").first().text(),
image:
$(".imdbwp__thumb").find("img").attr("src") ||
$("span:contains('ScreenShots:')")
.parent()
.next("p")
.children("img")
.first()
.attr("src") ||
"",
imdbId: $(".imdbwp__link").attr("href")?.split("/")[4] || "",
type: $(".thecontent").text().toLocaleLowerCase().includes("season")
? "series"
: "movie",
};
const links: Link[] = [];
$("h3,h4").map((i, element) => {
const seriesTitle = $(element).text();
// const batchZipLink = $(element)
// .next("p")
// .find(".maxbutton-batch-zip,.maxbutton-zip-download")
// .attr("href");
const episodesLink = $(element)
.next("p")
.find(
".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download"
)
.attr("href");
const movieLink = $(element)
.next("p")
.find(".maxbutton-download-links")
.attr("href");
if (
movieLink ||
(episodesLink && episodesLink !== "javascript:void(0);")
) {
links.push({
title: seriesTitle.replace("Download ", "").trim() || "Download",
episodesLink: episodesLink || "",
directLinks: movieLink
? [{ link: movieLink, title: "Movie", type: "movie" }]
: [],
quality: seriesTitle?.match(/\d+p\b/)?.[0] || "",
});
}
});
// console.log('mod meta', links);
return { ...meta, linkList: links };
} catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
};