source/kawaiines/kawaiines.js
2025-10-11 17:18:45 +02:00

82 lines
2.2 KiB
JavaScript

async function searchResults(keyword) {
try {
const response = await fetchv2("https://kawaiines.onrender.com/api/anime");
const data = await response.json();
const results = data
.filter(anime => anime.title.toLowerCase().includes(keyword.toLowerCase()))
.map(anime => ({
title: anime.title,
image: anime.image,
href: anime.animeUrl
}));
return JSON.stringify(results);
} catch (err) {
console.error(err);
return JSON.stringify([{
title: "Error",
image: "Error",
href: "Error"
}]);
}
}
async function extractDetails(id) {
try {
const response = await fetchv2(`https://kawaiines.onrender.com/api/anime/url/${id}`);
const json = await response.json();
return JSON.stringify([{
description: json.description || "N/A",
aliases: "N/A",
airdate: json.date || "N/A"
}]);
} catch (err) {
return JSON.stringify([{
description: "Error",
aliases: "Error",
airdate: "Error"
}]);
}
}
async function extractEpisodes(id) {
const results = [];
try {
const response = await fetchv2(`https://kawaiines.onrender.com/api/anime/url/${id}`);
const json = await response.json();
for (const [number, url] of Object.entries(json.videoIds)) {
if (url.includes("drive.google.com")) continue;
let href = url;
if (url.includes("strmup.cc/")) {
href = url.split("/").pop();
}
results.push({
href: href,
number: parseInt(number, 10)
});
}
return JSON.stringify(results);
} catch (err) {
return JSON.stringify([{
href: "Error",
number: "Error"
}]);
}
}
async function extractStreamUrl(id) {
try {
const response = await fetchv2(`https://strmup.cc/ajax/stream?filecode=${id}`);
const json = await response.json();
return json.streaming_url || "https://error.org/";
} catch (err) {
return "https://error.org/";
}
}