mirror of
https://git.luna-app.eu/50n50/sources
synced 2025-12-21 13:16:21 +01:00
111 lines
3.2 KiB
JavaScript
111 lines
3.2 KiB
JavaScript
function preprocessHtml(html) {
|
||
//Module specefic, ignore
|
||
return html.replace(/\\2605/g, '★');
|
||
}
|
||
|
||
function searchResults(html) {
|
||
html = preprocessHtml(html);
|
||
const results = [];
|
||
const baseUrl = "https://animebalkan.org/";
|
||
|
||
const filmListRegex = /<article class="bs"[\s\S]*?<\/article>/g;
|
||
const items = html.match(filmListRegex) || [];
|
||
|
||
items.forEach((itemHtml) => {
|
||
const titleMatch = itemHtml.match(/<h2 itemprop="headline">([^<]+)<\/h2>/);
|
||
const hrefMatch = itemHtml.match(/<a[^>]+href="([^"]+)"[^>]*>/);
|
||
const imgMatch = itemHtml.match(/<img[^>]+src="([^"]+)"[^>]*>/);
|
||
|
||
let title = titleMatch ? titleMatch[1].trim().replace(/–/g, '–') : '';
|
||
const href = hrefMatch ? hrefMatch[1].trim() : '';
|
||
const imageUrl = imgMatch ? imgMatch[1].trim() : '';
|
||
|
||
if (title && href) {
|
||
results.push({
|
||
title,
|
||
image: imageUrl.startsWith('http') ? imageUrl : baseUrl + imageUrl,
|
||
href
|
||
});
|
||
}
|
||
});
|
||
|
||
return results;
|
||
}
|
||
|
||
|
||
function extractDetails(html) {
|
||
const details = [];
|
||
const descriptionMatch = html.match(/<span class="Y2IQFc"[^>]*>([\s\S]*?)<\/span>/);
|
||
const airdateMatch = html.match(/<time[^>]*datetime="([^"]+)"/);
|
||
|
||
if (descriptionMatch) {
|
||
let description = descriptionMatch[1].trim()
|
||
.replace(/–/g, '-')
|
||
.replace(/—/g, '—')
|
||
.replace(/“/g, '"')
|
||
.replace(/”/g, '"')
|
||
.replace(/…/g, '...')
|
||
.replace(/″/g, '"')
|
||
.replace(/′/g, "'");
|
||
|
||
let airdate = airdateMatch ? airdateMatch[1].split('T')[0] : '';
|
||
|
||
if (description && airdate) {
|
||
details.push({
|
||
description: description,
|
||
aliases: 'N/A',
|
||
airdate: airdate
|
||
});
|
||
}
|
||
}
|
||
|
||
return details;
|
||
}
|
||
|
||
function extractEpisodes(html) {
|
||
const episodes = [];
|
||
const episodeRegex = /<a href="([^"]+)">[^<]*<div class="epl-num">([^<]+)<\/div>/g;
|
||
|
||
let match;
|
||
while ((match = episodeRegex.exec(html)) !== null) {
|
||
const href = match[1];
|
||
let number = match[2];
|
||
|
||
const isMovie = href.includes('film') ||
|
||
href.includes('movie') ||
|
||
number.toLowerCase() === 'film';
|
||
|
||
if (isMovie) {
|
||
number = '1';
|
||
}
|
||
|
||
if (href.includes('epizoda-') ||
|
||
href.includes('specijalna-epizoda') ||
|
||
href.includes('-epizoda/') ||
|
||
href.includes('film') ||
|
||
href.includes('movie')) {
|
||
|
||
episodes.push({
|
||
href: href,
|
||
number: number
|
||
});
|
||
}
|
||
}
|
||
|
||
episodes.reverse();
|
||
console.log(episodes);
|
||
return episodes;
|
||
}
|
||
|
||
function extractStreamUrl(html) {
|
||
const sourceRegex = /<source\s+[^>]*src="([^"]+)"/;
|
||
const match = html.match(sourceRegex);
|
||
|
||
if (match) {
|
||
console.log(match[1]);
|
||
return match[1];
|
||
} else {
|
||
console.log("No stream URL found.");
|
||
return null;
|
||
}
|
||
}
|