From 9f36faa96159f007c82f93f8908468649cb9feb6 Mon Sep 17 00:00:00 2001 From: aka paul <50n50@noreply.localhost> Date: Fri, 6 Feb 2026 17:22:26 +0000 Subject: [PATCH 01/57] Update animedefenders/animedefenders.js --- animedefenders/animedefenders.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/animedefenders/animedefenders.js b/animedefenders/animedefenders.js index b825765..9ba7446 100644 --- a/animedefenders/animedefenders.js +++ b/animedefenders/animedefenders.js @@ -85,11 +85,12 @@ async function extractStreamUrl(url) { const response = await fetchv2(url); const html = await response.text(); - const subUrlRegex = /data-url="(https:\/\/ee\.anih1\.top\/bb\/sub[^"]+)"/; + const subUrlRegex = /"actual_url":"([^"]+)"/; const match = html.match(subUrlRegex); if (match && match[1]) { - const subUrl = match[1]; + const subUrl = match[1].replace(/\\\//g, '/'); + const headers = { "Referer": "https://ee.anih1.top", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" From ecc07a4c8c2b46bdf823e9e0edc99d75e25711f3 Mon Sep 17 00:00:00 2001 From: aka paul <50n50@noreply.localhost> Date: Fri, 6 Feb 2026 17:22:39 +0000 Subject: [PATCH 02/57] Update animedefenders/animedefenders.json --- animedefenders/animedefenders.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/animedefenders/animedefenders.json b/animedefenders/animedefenders.json index 9a682df..80e392e 100644 --- a/animedefenders/animedefenders.json +++ b/animedefenders/animedefenders.json @@ -5,7 +5,7 @@ "name": "50/50", "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" }, - "version": "1.0.0", + "version": "1.0.1", "language": "English (SUB)", "streamType": "HLS", "quality": "1080p", From 494f820496434e931f95115d8bf470dc2b1e0e6b Mon Sep 17 00:00:00 2001 From: aka paul <50n50@noreply.localhost> Date: Sat, 7 Feb 2026 15:06:26 +0000 Subject: [PATCH 03/57] Add 123anime/123anime.js --- 123anime/123anime.js | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 123anime/123anime.js diff --git a/123anime/123anime.js b/123anime/123anime.js new file mode 100644 index 0000000..3810a4c --- /dev/null +++ b/123anime/123anime.js @@ -0,0 +1,129 @@ +async function searchResults(keyword) { + const results = []; + try { + const response = await fetchv2("https://123animes.ru/search?keyword=" + encodeURIComponent(keyword)); + const html = await response.text(); + + const filmListMatch = html.match(/
([\s\S]*?)
<\/div>/); + if (!filmListMatch) { + return JSON.stringify(results); + } + + const filmList = filmListMatch[1]; + const itemRegex = /
[\s\S]*?]*class="poster"[\s\S]*?]*alt="([^"]+)"[^>]*src="([^"]+)"/g; + let match; + while ((match = itemRegex.exec(filmList)) !== null) { + results.push({ + title: match[2].trim(), + image: "https://123animes.ru" + match[3].trim(), + href: "https://123animes.ru" + match[1].trim() + }); + } + + return JSON.stringify(results); + } catch (err) { + return JSON.stringify([{ + title: "Error", + image: "Error", + href: "Error" + }]); + } +} + +async function extractDetails(url) { + try { + const response = await fetchv2(url); + const html = await response.text(); + + let description = "N/A"; + let aliases = "N/A"; + let airdate = "N/A"; + + const descMatch = html.match(/
([\s\S]*?)<\/div>/); + if (descMatch) { + description = descMatch[1].replace(/<[^>]*>/g, "").replace(/\s+/g, " ").trim(); + } + + const aliasMatch = html.match(/

([^<]*)<\/p>/); + if (aliasMatch) { + aliases = aliasMatch[1].trim(); + } + + const airdateMatch = html.match(/

Released:<\/dt>\s*
\s*]*>(\d+)<\/a>/); + if (airdateMatch) { + airdate = airdateMatch[1].trim(); + } + + return JSON.stringify([{ + description: description, + aliases: aliases, + airdate: airdate + }]); + } catch (err) { + return JSON.stringify([{ + description: "Error", + aliases: "Error", + airdate: "Error" + }]); + } +} + +async function extractEpisodes(url) { + const results = []; + try { + const animeId = url.split('/').pop(); + + const response = await fetchv2("https://123animes.ru/ajax/film/sv?id=" + animeId); + const jsonData = await response.json(); + const html = jsonData.html; + + const episodesMatch = html.match(/