From 3d7f39db6c4ea9a9ffa08e92c77cf82ede565eea Mon Sep 17 00:00:00 2001
From: aka paul <50n50@noreply.localhost>
Date: Sat, 22 Nov 2025 11:20:27 +0000
Subject: [PATCH] Update ashi/ashi.js
---
ashi/ashi.js | 56 ++++++++++++++++++++++------------------------------
1 file changed, 24 insertions(+), 32 deletions(-)
diff --git a/ashi/ashi.js b/ashi/ashi.js
index 54abc6c..df5fe38 100644
--- a/ashi/ashi.js
+++ b/ashi/ashi.js
@@ -329,16 +329,6 @@ async function extractDetails(url) {
}
async function extractEpisodes(url) {
- const sendEpisodes = async (endpoint, episodeData) => {
- const promises = episodeData.map(item =>
- fetchv2(`${endpoint}=${encodeURIComponent(item.data)}`)
- .then(res => res.json())
- .then(json => ({ name: item.name, data: json.result }))
- .catch(err => ({ name: item.name, error: err.toString() }))
- );
- return Promise.all(promises);
- };
-
try {
if (url.startsWith("Animekai:")) {
const actualUrl = url.replace("Animekai:", "").trim();
@@ -357,18 +347,9 @@ async function extractEpisodes(url) {
const episodeRegex = /]+num="([^"]+)"[^>]+token="([^"]+)"[^>]*>/g;
const episodeMatches = [...cleanedHtml.matchAll(episodeRegex)];
- const recentEpisodeMatches = episodeMatches.slice(-50);
-
- const episodeData = recentEpisodeMatches.map(([_, episodeNum, episodeToken]) => ({
- name: `Episode ${episodeNum}`,
- data: episodeToken
- }));
-
- const batchResults = await sendEpisodes("https://enc-dec.app/api/enc-kai?text", episodeData);
-
- const episodes = batchResults.map((result, index) => ({
- number: parseInt(recentEpisodeMatches[index][1], 10),
- href: `Animekai:https://animekai.to/ajax/links/list?token=${recentEpisodeMatches[index][2]}&_=${result.data}`
+ const episodes = episodeMatches.map(([_, episodeNum, episodeToken]) => ({
+ number: parseInt(episodeNum, 10),
+ href: `Animekai:https://animekai.to/ajax/links/list?token=${episodeToken}&_=ENCRYPT_ME`
}));
return JSON.stringify(episodes);
@@ -388,16 +369,9 @@ async function extractEpisodes(url) {
const episodeRegex = /]+eid="([^"]+)"[^>]+num="([^"]+)"[^>]*>/g;
const episodeMatches = [...cleanedHtml.matchAll(episodeRegex)];
- const episodeData = episodeMatches.map(([_, episodeToken, episodeNum]) => ({
- name: `Episode ${episodeNum}`,
- data: episodeToken
- }));
-
- const batchResults = await sendEpisodes("https://enc-dec.app/api/enc-movies-flix?text", episodeData);
-
- const episodes = batchResults.map((result, index) => ({
- number: parseInt(episodeMatches[index][2], 10),
- href: `https://1movies.bz/ajax/links/list?eid=${episodeMatches[index][1]}&_=${result.data}`
+ const episodes = episodeMatches.map(([_, episodeToken, episodeNum]) => ({
+ number: parseInt(episodeNum, 10),
+ href: `https://1movies.bz/ajax/links/list?eid=${episodeToken}&_=ENCRYPT_ME`
}));
return JSON.stringify(episodes);
@@ -424,6 +398,15 @@ async function extractStreamUrl(url) {
if (source === "Animekai") {
try {
+ const tokenMatch = actualUrl.match(/token=([^&]+)/);
+ if (tokenMatch && tokenMatch[1]) {
+ const rawToken = tokenMatch[1];
+ const encryptResponse = await fetchv2(`https://enc-dec.app/api/enc-kai?text=${encodeURIComponent(rawToken)}`);
+ const encryptData = await encryptResponse.json();
+ const encryptedToken = encryptData.result;
+ actualUrl = actualUrl.replace('&_=ENCRYPT_ME', `&_=${encryptedToken}`);
+ }
+
const response = await fetchv2(actualUrl);
const text = await response.text();
const cleanedHtml = cleanJsonHtml(text);
@@ -582,6 +565,15 @@ async function extractStreamUrl(url) {
}
} else if (source === "1Movies") {
try {
+ const eidMatch = actualUrl.match(/eid=([^&]+)/);
+ if (eidMatch && eidMatch[1]) {
+ const rawEpisodeToken = eidMatch[1];
+ const encryptResponse = await fetchv2(`https://enc-dec.app/api/enc-movies-flix?text=${rawEpisodeToken}`);
+ const encryptData = await encryptResponse.json();
+ const encryptedToken = encryptData.result;
+ actualUrl = actualUrl.replace('&_=ENCRYPT_ME', `&_=${encryptedToken}`);
+ }
+
const response = await fetchv2(actualUrl);
const responseData = await response.json();
const cleanedHtml = cleanJsonHtml(responseData.result);