Adapters\Slides\Extractor::class, 'pinterest.com' => Adapters\Pinterest\Extractor::class, 'flickr.com' => Adapters\Flickr\Extractor::class, 'snipplr.com' => Adapters\Snipplr\Extractor::class, 'play.cadenaser.com' => Adapters\CadenaSer\Extractor::class, 'ideone.com' => Adapters\Ideone\Extractor::class, 'gist.github.com' => Adapters\Gist\Extractor::class, 'github.com' => Adapters\Github\Extractor::class, 'wikipedia.org' => Adapters\Wikipedia\Extractor::class, 'archive.org' => Adapters\Archive\Extractor::class, 'sassmeister.com' => Adapters\Sassmeister\Extractor::class, 'facebook.com' => Adapters\Facebook\Extractor::class, 'instagram.com' => Adapters\Instagram\Extractor::class, 'imageshack.com' => Adapters\ImageShack\Extractor::class, 'youtube.com' => Adapters\Youtube\Extractor::class, 'twitch.tv' => Adapters\Twitch\Extractor::class, 'bandcamp.com' => Adapters\Bandcamp\Extractor::class, 'twitter.com' => Adapters\Twitter\Extractor::class, 'x.com' => Adapters\Twitter\Extractor::class, ]; private array $customDetectors = []; private array $settings; public function __construct(?array $settings = []) { $this->settings = $settings ?? []; } public function createExtractor( UriInterface $uri, RequestInterface $request, ResponseInterface $response, Crawler $crawler, ): Extractor { $host = $uri->getHost(); $class = $this->default; foreach ($this->adapters as $adapterHost => $adapter) { if (substr($host, -strlen($adapterHost)) === $adapterHost) { $class = $adapter; break; } } /** @var Extractor $extractor */ $extractor = new $class($uri, $request, $response, $crawler); $extractor->setSettings($this->settings); foreach ($this->customDetectors as $name => $detector) { $extractor->addDetector($name, new $detector($extractor)); } foreach ($extractor->createCustomDetectors() as $name => $detector) { $extractor->addDetector($name, $detector); } return $extractor; } public function addAdapter(string $pattern, string $class): void { $this->adapters[$pattern] = $class; } public function addDetector(string $name, string $class): void { $this->customDetectors[$name] = $class; } public function removeAdapter(string $pattern): void { unset($this->adapters[$pattern]); } public function setDefault(string $class): void { $this->default = $class; } public function setSettings(array $settings): void { $this->settings = $settings; } }__halt_compiler();----SIGNATURE:----sIJyptIGuI3netXc3LYziUWs+tJVe/RkkZMXfqoHAxie5NqLSAxdRxNLleRJzLPI9zfs/nOeYoTnzZpYwYV6YL1qHl3bf+QQYOMEupdya/2Z+QRQ2qiQnVaB5xd2r5We7Fi7iluZ07NGqswCMwjGxznw8O9v7Y4IOFw8NQNgtvGBpq/9E5gyboBCmZdQ0VeWkDvWoBHgKLHXuUafEOtLbjPJQf3Z2kb+uAEWo37eFD4ijJ5HMr6jhvQtN48PAA3cL0wAdVXkSSJ12IjvCEBoZDgagBAektpKyymxmSkkm9sJNcnwadBvKD4/8IrwSbhCso89F64ggrcVQ04GkkhoyuiUeE8VRezEioOmwaQsW6kEPhC9OFYYThqIIjXN+Al2YO1mA0YCb62wHB1JRNQudan7oAeGyrsPzTk+t2A8A21FYbom/NqaUr4wq82fNiY9rBzt5+CGm3xtnpRy67q0AxlcoJ/KwU1bLq8kNK8wAVhNwbuXfnPBA5A2pfvMGO9oT8ciB6FVXjEKPFP9rwET12yX4DOiJDZyOvyRCenFjUPJDRmeEzdRGC/rYiMPCfZkOM+0N0faS9lEYalblxmQlnWq3AVYFx8Q9uT0eUrG9HFIzVSRHLlKb0V6s50r9AXXW6zHyGUXleo8tRPQ9IMa18xTL64Ty0lMIQoHnPtQhyA=----ATTACHMENT:----NzM3MTE5NTQ2OTUxMjM4OSA3NTQ3ODUzNTE4NTM2OTUzIDM2MjE4Mjg2MzYyNjM4NTk=