UNPKG

node-csfd-api

Version:

ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)

1 lines 5.36 kB
{"version":3,"file":"index.cjs","names":["fetchSafe","LIB_PREFIX"],"sources":["../../src/fetchers/index.ts"],"sourcesContent":["import { LIB_PREFIX } from '../vars';\nimport { fetchSafe } from './fetch.polyfill';\n\ninterface BrowserProfile {\n 'User-Agent': string;\n 'Sec-Ch-Ua': string;\n 'Sec-Ch-Ua-Platform': string;\n}\n\nconst browserProfiles: BrowserProfile[] = [\n // Chrome 131 / Windows\n {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',\n 'Sec-Ch-Ua': '\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"Windows\"'\n },\n // Chrome 130 / Windows\n {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',\n 'Sec-Ch-Ua': '\"Google Chrome\";v=\"130\", \"Chromium\";v=\"130\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"Windows\"'\n },\n // Chrome 131 / macOS\n {\n 'User-Agent':\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',\n 'Sec-Ch-Ua': '\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"macOS\"'\n },\n // Chrome 130 / macOS\n {\n 'User-Agent':\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',\n 'Sec-Ch-Ua': '\"Google Chrome\";v=\"130\", \"Chromium\";v=\"130\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"macOS\"'\n },\n // Edge 131 / Windows\n {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0',\n 'Sec-Ch-Ua': '\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"Windows\"'\n },\n // Edge 130 / Windows\n {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0',\n 'Sec-Ch-Ua': '\"Microsoft Edge\";v=\"130\", \"Chromium\";v=\"130\", \"Not_A Brand\";v=\"24\"',\n 'Sec-Ch-Ua-Platform': '\"Windows\"'\n }\n];\n\nconst randomProfile = (): BrowserProfile =>\n browserProfiles[Math.floor(Math.random() * browserProfiles.length)];\n\nconst baseHeaders = {\n Accept:\n 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',\n 'Accept-Language': 'cs-CZ,cs;q=0.9,en-US;q=0.8,en;q=0.7',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Cache-Control': 'max-age=0',\n Connection: 'keep-alive',\n 'Sec-Ch-Ua-Mobile': '?0',\n 'Sec-Fetch-Dest': 'document',\n 'Sec-Fetch-Mode': 'navigate',\n 'Sec-Fetch-Site': 'none',\n 'Sec-Fetch-User': '?1',\n 'Upgrade-Insecure-Requests': '1'\n};\n\nexport const fetchPage = async (url: string, optionsRequest?: RequestInit): Promise<string> => {\n try {\n const mergedHeaders = new Headers({ ...baseHeaders, ...randomProfile() });\n\n // Merge any custom headers provided in the function arguments\n if (optionsRequest?.headers) {\n const reqHeaders = new Headers(optionsRequest.headers);\n reqHeaders.forEach((value, key) => mergedHeaders.set(key, value));\n }\n\n const { headers: _, ...restOptions } = optionsRequest || {};\n\n const response = await fetchSafe(url, {\n credentials: 'omit',\n ...restOptions,\n headers: mergedHeaders\n });\n\n if (!response.ok) {\n throw new Error(`node-csfd-api: Bad response ${response.status} for url: ${url}`);\n }\n\n const html = await response.text();\n\n // Quickly check if we hit the trap\n if (html.includes(\"Making sure you're not a bot!\")) {\n console.warn('[node-csfd-api] Trap detected. You may be rate-limited or blocked by ČSFD.');\n }\n\n return html;\n } catch (e: unknown) {\n if (e instanceof Error) {\n console.error(LIB_PREFIX, e.message);\n } else {\n console.error(LIB_PREFIX, String(e));\n }\n return 'Error';\n }\n};\n"],"mappings":";;;AASA,MAAM,kBAAoC;CAExC;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;CAEA;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;CAEA;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;CAEA;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;CAEA;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;CAEA;EACE,cACE;EACF,aAAa;EACb,sBAAsB;CACxB;AACF;AAEA,MAAM,sBACJ,gBAAgB,KAAK,MAAM,KAAK,OAAO,IAAI,gBAAgB,MAAM;AAEnE,MAAM,cAAc;CAClB,QACE;CACF,mBAAmB;CACnB,mBAAmB;CACnB,iBAAiB;CACjB,YAAY;CACZ,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,6BAA6B;AAC/B;AAEA,MAAa,YAAY,OAAO,KAAa,mBAAkD;CAC7F,IAAI;EACF,MAAM,gBAAgB,IAAI,QAAQ;GAAE,GAAG;GAAa,GAAG,cAAc;EAAE,CAAC;EAGxE,IAAI,gBAAgB,SAElB,IADuB,QAAQ,eAAe,OACrC,CAAC,CAAC,SAAS,OAAO,QAAQ,cAAc,IAAI,KAAK,KAAK,CAAC;EAGlE,MAAM,EAAE,SAAS,GAAG,GAAG,gBAAgB,kBAAkB,CAAC;EAE1D,MAAM,WAAW,MAAMA,uBAAAA,UAAU,KAAK;GACpC,aAAa;GACb,GAAG;GACH,SAAS;EACX,CAAC;EAED,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MAAM,+BAA+B,SAAS,OAAO,YAAY,KAAK;EAGlF,MAAM,OAAO,MAAM,SAAS,KAAK;EAGjC,IAAI,KAAK,SAAS,+BAA+B,GAC/C,QAAQ,KAAK,4EAA4E;EAG3F,OAAO;CACT,SAAS,GAAY;EACnB,IAAI,aAAa,OACf,QAAQ,MAAMC,aAAAA,YAAY,EAAE,OAAO;OAEnC,QAAQ,MAAMA,aAAAA,YAAY,OAAO,CAAC,CAAC;EAErC,OAAO;CACT;AACF"}