jooservices/crawlerx

A PHP 8.5+ Laravel package for structured web crawling with typed DTOs

Maintainers

Package info

github.com/jooservices/crawlerx

Language:HTML

pkg:composer/jooservices/crawlerx

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-06-07 22:32 UTC

This package is auto-updated.

Last update: 2026-06-07 22:38:05 UTC


README

JOOservices CrawlerX is a PHP 8.5+ Laravel package for structured web crawling through site adapters and typed DTO results.

Package name: jooservices/crawlerx

What it does

CrawlerX gives Laravel code one small API for crawling supported sites:

  • choose a registered site adapter
  • pass a RequestDto with a URL, crawl type, page, and HTTP options
  • receive either a ListDto for listing pages or an ItemDto for detail pages

All package DTOs extend JOOservices\Dto\Core\Dto.

Install

composer require jooservices/crawlerx

The package auto-registers JOOservices\CrawlerX\CrawlerXServiceProvider through Laravel package discovery.

To publish the configuration:

php artisan vendor:publish --tag=crawlerx-config

Quick example

use JOOservices\CrawlerX\Dto\RequestDto;
use JOOservices\CrawlerX\Enums\CrawlType;
use JOOservices\CrawlerX\Services\CrawlerXService;

$result = app(CrawlerXService::class)
    ->site('onejav')
    ->crawl(new RequestDto(
        url: 'https://onejav.com/2026/05/31',
        type: CrawlType::Listing,
        page: 1,
    ));

$payload = $result->toArray();

Detail crawls use the same service with CrawlType::Detail:

$item = app(CrawlerXService::class)
    ->site('onejav')
    ->crawl(new RequestDto(
        url: 'https://onejav.com/torrent/ymds282',
        type: CrawlType::Detail,
    ));

Supported sites

The default config registers:

  • onejav => JOOservices\CrawlerX\Adapters\Onejav\OnejavCrawler
  • 141jav => JOOservices\CrawlerX\Adapters\OneFourOneJav\OneFourOneJavCrawler
  • ffjav => JOOservices\CrawlerX\Adapters\FfJav\FfJavCrawler

Sites are configured in config/crawlerx.php under sites.

Result DTOs

RequestDto accepts:

  • url: target URL
  • type: CrawlType::Listing or CrawlType::Detail
  • page: page number, default 1
  • options: request-specific HTTP options

ListDto contains:

  • url
  • page
  • items, a list of ItemDto
  • pagination, a PaginationDto

ItemDto contains:

  • url
  • externalId
  • title
  • meta, adapter-specific structured metadata

Development

composer lint
composer lint:all
composer lint:fix
composer test
composer test:coverage
composer check
composer ci

Start with:

License

This package is licensed under the MIT License.