feat: add a111477 provider

This commit is contained in:
himanshu8443
2025-08-15 15:57:36 +05:30
parent e3e66627cc
commit f0c98f9d0a
11 changed files with 376 additions and 1 deletions

View File

@@ -0,0 +1,69 @@
import { EpisodeLink, ProviderContext } from "../types";
export const getEpisodes = async function ({
url,
providerContext,
}: {
url: string;
providerContext: ProviderContext;
}): Promise<EpisodeLink[]> {
const { axios, cheerio } = providerContext;
try {
const res = await axios.get(url);
const html = res.data;
const $ = cheerio.load(html);
const episodeLinks: EpisodeLink[] = [];
// Parse episode files from directory
$("table tbody tr").each((i, element) => {
const $row = $(element);
const linkElement = $row.find("td:first-child a");
const fileName = linkElement.text().trim();
const fileLink = linkElement.attr("href");
if (
fileName &&
fileLink &&
fileName !== "../" &&
fileName !== "Parent Directory"
) {
// Check if it's a video file
if (
fileName.includes(".mp4") ||
fileName.includes(".mkv") ||
fileName.includes(".avi") ||
fileName.includes(".mov")
) {
const fullLink = url + fileLink;
// Try to extract episode information from filename
let episodeTitle = fileName;
const episodeMatch = fileName.match(/[Ss](\d+)[Ee](\d+)/);
const simpleEpisodeMatch = fileName.match(/[Ee](\d+)/);
if (episodeMatch) {
episodeTitle = `S${episodeMatch[1]}E${episodeMatch[2]} - ${fileName}`;
} else if (simpleEpisodeMatch) {
episodeTitle = `Episode ${simpleEpisodeMatch[1]} - ${fileName}`;
} else {
// Try to extract episode number from various patterns
const numberMatch = fileName.match(/(\d+)/);
if (numberMatch) {
episodeTitle = `Episode ${numberMatch[1]} - ${fileName}`;
}
}
episodeLinks.push({
title: episodeTitle,
link: fullLink,
});
}
}
});
return episodeLinks;
} catch (err) {
console.error("111477 episodes error:", err);
return [];
}
};