Spaces:
Running
Running
| import axios from "axios"; | |
| import * as cheerio from "cheerio"; | |
| import { v1_base_url } from "../utils/base_v1.js"; | |
| export default async function extractWatchlist(userId, page = 1) { | |
| try { | |
| const url = `https://${v1_base_url}/community/user/${userId}/watch-list?page=${page}`; | |
| const { data } = await axios.get(url); | |
| const $ = cheerio.load(data); | |
| const watchlist = []; | |
| const totalPages = | |
| Number( | |
| $('.pre-pagination nav .pagination > .page-item a[title="Last"]') | |
| ?.attr("href") | |
| ?.split("=") | |
| .pop() ?? | |
| $('.pre-pagination nav .pagination > .page-item a[title="Next"]') | |
| ?.attr("href") | |
| ?.split("=") | |
| .pop() ?? | |
| $(".pre-pagination nav .pagination > .page-item.active a") | |
| ?.text() | |
| ?.trim() | |
| ) || 1; | |
| $(".flw-item").each((index, element) => { | |
| const title = $(".film-name a", element).text().trim(); | |
| const poster = $(".film-poster img", element).attr("data-src"); | |
| const duration = $(".fdi-duration", element).text().trim(); | |
| const type = $(".fdi-item", element).first().text().trim(); | |
| const id = $(".film-poster a", element).attr("data-id"); | |
| const subCount = $(".tick-item.tick-sub", element).text().trim(); | |
| const dubCount = $(".tick-item.tick-dub", element).text().trim(); | |
| const link = $(".film-name a", element).attr("href"); | |
| const animeId = link.split("/").pop(); | |
| watchlist.push({ | |
| id: animeId, | |
| title, | |
| poster, | |
| duration, | |
| type, | |
| subCount, | |
| dubCount, | |
| link: `https://${v1_base_url}${link}`, | |
| showType: type, | |
| tvInfo: { | |
| showType: type, | |
| duration: duration, | |
| sub: subCount, | |
| dub: dubCount, | |
| }, | |
| }); | |
| }); | |
| return { watchlist, totalPages }; | |
| } catch (error) { | |
| console.error("Error fetching watchlist:", error.message); | |
| throw error; | |
| } | |
| } | |