MCPcopy Create free account
hub / github.com/omkarcloud/botasaurus / addScraper

Method addScraper

js/botasaurus-server-js/src/server.ts:246–372  ·  view source on GitHub ↗
(
    scraper:Function, {
      productName = null,
      getTaskName,
      createAllTask = false,
      splitTask,
      filters = [],
      sorts = [],
      views = [],
      removeDuplicatesBy = null,
      isGoogleChromeRequired,
      onComplete
  }: {
    productName?: string | null;
    getTaskName?: Function;
    createAllTask?: boolean;
    splitTask?: Function;
    filters?: BaseFilter[];
    sorts?: BaseSort[];
    views?: View[];
    removeDuplicatesBy?: string | null;
    isGoogleChromeRequired?: boolean;
    onComplete?: (info: OnCompleteInfo) => void | Promise<void>;
  } = {}
  )

Source from the content-addressed store, hash-verified

244 }
245
246 addScraper(
247 scraper:Function, {
248 productName = null,
249 getTaskName,
250 createAllTask = false,
251 splitTask,
252 filters = [],
253 sorts = [],
254 views = [],
255 removeDuplicatesBy = null,
256 isGoogleChromeRequired,
257 onComplete
258 }: {
259 productName?: string | null;
260 getTaskName?: Function;
261 createAllTask?: boolean;
262 splitTask?: Function;
263 filters?: BaseFilter[];
264 sorts?: BaseSort[];
265 views?: View[];
266 removeDuplicatesBy?: string | null;
267 isGoogleChromeRequired?: boolean;
268 onComplete?: (info: OnCompleteInfo) => void | Promise<void>;
269 } = {}
270 ): void {
271 // @ts-ignore
272 if (scraper._isQueue) {
273 throw new Error('The function is a queue function. Kindly use a browser, request, or task scraping function')
274 }
275
276 if (!scraper.hasOwnProperty('_scraperType')) {
277 throw new Error('The function must be a browser, request, or task scraping function.');
278 }
279
280 // @ts-ignore
281 const scraperType = scraper._scraperType;
282 if (!this.isValidScraperType(scraperType)) {
283 throw new Error(`Invalid scraper type: ${scraperType}. Must be 'browser', 'request' or 'task'.`);
284 }
285
286 if (createAllTask && typeof splitTask !== 'function') {
287 throw new Error('splitTask function must be provided when createAllTask is true.');
288 }
289
290 if (!Array.isArray(filters)) {
291 filters = [filters];
292 }
293
294 if (!Array.isArray(sorts)) {
295 sorts = [sorts];
296 }
297
298 if (!Array.isArray(views)) {
299 views = [views];
300 }
301
302 const viewIds = views.map((view) => view.id);
303 if (viewIds.length !== new Set(viewIds).size) {

Callers 1

server.jsFile · 0.80

Calls 3

isValidScraperTypeMethod · 0.95
isNotNullishFunction · 0.90
filterMethod · 0.45

Tested by

no test coverage detected