Spaces:
Sleeping
Sleeping
import { AxiosHeaders, AxiosInstance } from "axios"; | |
import { createAxiosInstance } from "../utils/axiosInstance"; | |
interface DoubanSubject { | |
id: string; | |
title: string; | |
rate: string; | |
cover: string; | |
url: string; | |
is_new: boolean; | |
} | |
export class DoubanService { | |
private baseUrl: string; | |
private api: AxiosInstance; | |
constructor() { | |
this.baseUrl = "https://movie.douban.com/j"; | |
this.api = createAxiosInstance( | |
this.baseUrl, | |
AxiosHeaders.from({ | |
accept: "*/*", | |
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", | |
priority: "u=1, i", | |
"sec-ch-ua": '"Not A(Brand";v="8", "Chromium";v="132", "Microsoft Edge";v="132"', | |
"sec-ch-ua-mobile": "?0", | |
"sec-ch-ua-platform": '"Windows"', | |
"sec-fetch-dest": "empty", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-site": "same-origin", | |
"x-requested-with": "XMLHttpRequest", | |
cookie: | |
'll="118282"; bid=StA6AQFsAWQ; _pk_id.100001.4cf6=6448be57b1b5ca7e.1723172321.; _vwo_uuid_v2=DC15B8183560FF1E538FFE1D480723310|c08e2d213ecb5510005f90a6ff332121; __utmv=30149280.6282; _vwo_uuid_v2=DC15B8183560FF1E538FFE1D480723310|c08e2d213ecb5510005f90a6ff332121; __utmz=30149280.1731915179.21.6.utmcsr=search.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/movie/subject_search; __utmz=223695111.1731915179.21.6.utmcsr=search.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/movie/subject_search; douban-fav-remind=1; __utmc=30149280; __utmc=223695111; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1739176523%2C%22https%3A%2F%2Fsearch.douban.com%2Fmovie%2Fsubject_search%3Fsearch_text%3D%E8%84%91%E6%B4%9E%E5%A4%A7%E5%BC%80%26cat%3D1002%22%5D; _pk_ses.100001.4cf6=1; ap_v=0,6.0; __utma=30149280.859303574.1723448979.1739167503.1739176523.42; __utmb=30149280.0.10.1739176523; __utma=223695111.1882744177.1723448979.1739167503.1739176523.42; __utmb=223695111.0.10.1739176523', | |
Referer: "https://movie.douban.com/", | |
"Referrer-Policy": "unsafe-url", | |
}) | |
); | |
} | |
async getHotList(params: { | |
type: string; | |
tag: string; | |
page_limit: string; | |
page_start: string; | |
}): Promise<{ data: DoubanSubject[] }> { | |
try { | |
const response = await this.api.get("/search_subjects", { | |
params: params, | |
}); | |
if (response.data && response.data.subjects) { | |
return { | |
data: response.data.subjects, | |
}; | |
} else { | |
return { | |
data: [], | |
}; | |
} | |
} catch (error) { | |
console.error("Error fetching hot list:", error); | |
throw error; | |
} | |
} | |
} | |