File size: 2,557 Bytes
11fe9b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');

const app = express();
const PORT = 7860;

// Enable CORS
const cors = require('cors');
app.use(cors());

app.get('/anime/:title/:episode', async (req, res) => {
    const animeTitle = req.params.title;
    const episodeNumber = req.params.episode;
    
    console.log(`Requested: ${animeTitle} Episode ${episodeNumber}`);
    
    try {
        const episodeData = await searchGogoanime(animeTitle, episodeNumber);
        res.json(episodeData);
    } catch (error) {
        res.status(500).json({ error: "Failed to fetch episode data", details: error.message });
    }
});

async function searchGogoanime(animeTitle, episodeNumber) {
    try {
        console.log(`Searching for: ${animeTitle} Episode ${episodeNumber}`);

        // Search Gogoanime
        const searchUrl = `https://ww25.gogoanimes.fi/search.html?keyword=${encodeURIComponent(animeTitle)}`;
        const searchResponse = await axios.get(searchUrl);
        const $ = cheerio.load(searchResponse.data);

        // Find first result
        const firstResult = $('.items li a').first();
        const animeSlug = firstResult.attr('href')?.split('/')[2]; 
        if (!animeSlug) throw new Error("Anime not found");

        console.log(`Anime Found: ${animeTitle} (${animeSlug})`);

        // Episode page URL
        const episodeUrl = `https://ww25.gogoanimes.fi/${animeSlug}-episode-${episodeNumber}`;
        console.log(`Episode URL: ${episodeUrl}`);

        return await getEpisodeInfo(episodeUrl, animeTitle, episodeNumber);
    } catch (error) {
        throw new Error("Error searching Gogoanime: " + error.message);
    }
}

async function getEpisodeInfo(episodeUrl, animeTitle, episodeNumber) {
    try {
        console.log(`Fetching: ${episodeUrl}`);
        const response = await axios.get(episodeUrl);
        const $ = cheerio.load(response.data);

        // Find download page URL
        const downloadPageUrl = $('.dowloads a').attr('href');
        if (!downloadPageUrl) throw new Error("Download page not found");

        console.log(`Download Page Found: ${downloadPageUrl}`);

        return {
            anime: animeTitle,
            episode: episodeNumber,
            owner: "Reiker",
            downloadPage: downloadPageUrl
        };
    } catch (error) {
        throw new Error("Error fetching episode info: " + error.message);
    }
}

// Start API Server
app.listen(PORT, () => console.log(`Server running on http://localhost:${PORT}`));