UNPKG

node-csfd-api

Version:

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

1 lines 5.35 kB
{"version":3,"file":"search.service.cjs","names":["fetchPage","searchUrl","getUrlByLanguage","getSearchUrl","parseIdFromUrl","getSearchTitle","getSearchYear","getSearchType","getSearchColorRating","getSearchPoster","getSearchOrigins","parseSearchPeople","getUserUrl","getUser","getUserRealName","getAvatar","getCreatorUrl","getCreatorName","getCreatorImage"],"sources":["../../src/services/search.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDSearch, CSFDSearchCreator, CSFDSearchMovie, CSFDSearchUser } from '../dto/search';\nimport { fetchPage } from '../fetchers';\nimport { parseIdFromUrl } from '../helpers/global.helper';\nimport { getCreatorImage, getCreatorName, getCreatorUrl } from '../helpers/search-creator.helper';\nimport { getAvatar, getUser, getUserRealName, getUserUrl } from '../helpers/search-user.helper';\nimport {\n getSearchColorRating,\n getSearchOrigins,\n getSearchPoster,\n getSearchTitle,\n getSearchType,\n getSearchUrl,\n getSearchYear,\n parseSearchPeople\n} from '../helpers/search.helper';\nimport { CSFDLanguage, CSFDOptions } from '../types';\nimport { getUrlByLanguage, searchUrl } from '../vars';\n\nexport class SearchScraper {\n public async search(text: string, options?: CSFDOptions): Promise<CSFDSearch> {\n const url = searchUrl(text, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\n\n const html = parse(response);\n const moviesNode = html.querySelectorAll('.main-movies article');\n const usersNode = html.querySelectorAll('.main-users article');\n const tvSeriesNode = html.querySelectorAll('.main-series article');\n const creatorsNode = html.querySelectorAll('.main-authors article');\n\n return this.parseSearch(moviesNode, usersNode, tvSeriesNode, creatorsNode, options?.language);\n }\n\n private parseSearch(\n moviesNode: HTMLElement[],\n usersNode: HTMLElement[],\n tvSeriesNode: HTMLElement[],\n creatorsNode: HTMLElement[],\n language?: CSFDLanguage\n ) {\n const baseUrl = getUrlByLanguage(language);\n\n const movies: CSFDSearchMovie[] = [];\n const users: CSFDSearchUser[] = [];\n const tvSeries: CSFDSearchMovie[] = [];\n const creators: CSFDSearchCreator[] = [];\n\n const movieMapper = (m: HTMLElement): CSFDSearchMovie => {\n const url = getSearchUrl(m);\n return {\n id: parseIdFromUrl(url),\n title: getSearchTitle(m),\n year: getSearchYear(m),\n url: `${baseUrl}${url}`,\n type: getSearchType(m),\n colorRating: getSearchColorRating(m),\n poster: getSearchPoster(m),\n origins: getSearchOrigins(m),\n creators: {\n directors: parseSearchPeople(m, 'directors'),\n actors: parseSearchPeople(m, 'actors')\n }\n };\n };\n\n const userMapper = (m: HTMLElement): CSFDSearchUser => {\n const url = getUserUrl(m);\n return {\n id: parseIdFromUrl(url),\n user: getUser(m),\n userRealName: getUserRealName(m),\n avatar: getAvatar(m),\n url: `${baseUrl}${url}`\n };\n };\n\n const creatorMapper = (m: HTMLElement): CSFDSearchCreator => {\n const url = getCreatorUrl(m);\n return {\n id: parseIdFromUrl(url),\n name: getCreatorName(m),\n image: getCreatorImage(m),\n url: `${baseUrl}${url}`\n };\n };\n\n movies.push(...moviesNode.map(movieMapper));\n users.push(...usersNode.map(userMapper));\n tvSeries.push(...tvSeriesNode.map(movieMapper));\n creators.push(...creatorsNode.map(creatorMapper));\n\n const search: CSFDSearch = {\n movies,\n users,\n tvSeries,\n creators\n };\n return search;\n }\n}\n"],"mappings":";;;;;;;;AAmBA,IAAa,gBAAb,MAA2B;CACzB,MAAa,OAAO,MAAc,SAA4C;EAI5E,MAAM,QAAA,GAAA,iBAAA,MAAA,CAAa,MAFIA,cAAAA,UADXC,aAAAA,UAAU,MAAM,EAAE,UAAU,SAAS,SAAS,CACvB,GAAG,EAAE,GAAG,SAAS,QAAQ,CAAC,CAElC;EAC3B,MAAM,aAAa,KAAK,iBAAiB,sBAAsB;EAC/D,MAAM,YAAY,KAAK,iBAAiB,qBAAqB;EAC7D,MAAM,eAAe,KAAK,iBAAiB,sBAAsB;EACjE,MAAM,eAAe,KAAK,iBAAiB,uBAAuB;EAElE,OAAO,KAAK,YAAY,YAAY,WAAW,cAAc,cAAc,SAAS,QAAQ;CAC9F;CAEA,YACE,YACA,WACA,cACA,cACA,UACA;EACA,MAAM,UAAUC,aAAAA,iBAAiB,QAAQ;EAEzC,MAAM,SAA4B,CAAC;EACnC,MAAM,QAA0B,CAAC;EACjC,MAAM,WAA8B,CAAC;EACrC,MAAM,WAAgC,CAAC;EAEvC,MAAM,eAAe,MAAoC;GACvD,MAAM,MAAMC,sBAAAA,aAAa,CAAC;GAC1B,OAAO;IACL,IAAIC,sBAAAA,eAAe,GAAG;IACtB,OAAOC,sBAAAA,eAAe,CAAC;IACvB,MAAMC,sBAAAA,cAAc,CAAC;IACrB,KAAK,GAAG,UAAU;IAClB,MAAMC,sBAAAA,cAAc,CAAC;IACrB,aAAaC,sBAAAA,qBAAqB,CAAC;IACnC,QAAQC,sBAAAA,gBAAgB,CAAC;IACzB,SAASC,sBAAAA,iBAAiB,CAAC;IAC3B,UAAU;KACR,WAAWC,sBAAAA,kBAAkB,GAAG,WAAW;KAC3C,QAAQA,sBAAAA,kBAAkB,GAAG,QAAQ;IACvC;GACF;EACF;EAEA,MAAM,cAAc,MAAmC;GACrD,MAAM,MAAMC,2BAAAA,WAAW,CAAC;GACxB,OAAO;IACL,IAAIR,sBAAAA,eAAe,GAAG;IACtB,MAAMS,2BAAAA,QAAQ,CAAC;IACf,cAAcC,2BAAAA,gBAAgB,CAAC;IAC/B,QAAQC,2BAAAA,UAAU,CAAC;IACnB,KAAK,GAAG,UAAU;GACpB;EACF;EAEA,MAAM,iBAAiB,MAAsC;GAC3D,MAAM,MAAMC,8BAAAA,cAAc,CAAC;GAC3B,OAAO;IACL,IAAIZ,sBAAAA,eAAe,GAAG;IACtB,MAAMa,8BAAAA,eAAe,CAAC;IACtB,OAAOC,8BAAAA,gBAAgB,CAAC;IACxB,KAAK,GAAG,UAAU;GACpB;EACF;EAEA,OAAO,KAAK,GAAG,WAAW,IAAI,WAAW,CAAC;EAC1C,MAAM,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC;EACvC,SAAS,KAAK,GAAG,aAAa,IAAI,WAAW,CAAC;EAC9C,SAAS,KAAK,GAAG,aAAa,IAAI,aAAa,CAAC;EAQhD,OAAO;GALL;GACA;GACA;GACA;EAEU;CACd;AACF"}