node-csfd-api
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
32 lines (30 loc) • 1.5 kB
JavaScript
import { fetchSafe } from "./fetch.polyfill.mjs";
//#region src/fetchers/index.ts
const USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.77 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Mobile Safari/537.36"
];
const defaultHeaders = { "User-Agent": USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)] };
const fetchPage = async (url, optionsRequest) => {
try {
const mergedHeaders = new Headers(defaultHeaders);
if (optionsRequest?.headers) new Headers(optionsRequest.headers).forEach((value, key) => mergedHeaders.set(key, value));
const { headers: _, ...restOptions } = optionsRequest || {};
const response = await fetchSafe(url, {
credentials: "omit",
...restOptions,
headers: mergedHeaders
});
if (response.status >= 400 && response.status < 600) throw new Error(`node-csfd-api: Bad response ${response.status} for url: ${url}`);
return await response.text();
} catch (e) {
if (e instanceof Error) console.error(e.message);
else console.error(String(e));
return "Error";
}
};
//#endregion
export { fetchPage };
//# sourceMappingURL=index.mjs.map