localDb === null) { $this->localDb = new LocalDbProvider; } return $this->localDb; } /** * Override handle to perform parsing before the standard processing flow. */ public function handle(TvProcessingPassable $passable, Closure $next): TvProcessingPassable { $parsedInfo = $this->getLocalDb()->parseInfo($passable->context->searchName); if ($parsedInfo === false || empty($parsedInfo['name'])) { // Mark as parse failed $passable->setParsedInfo(null); $passable->updateResult( TvProcessingResult::parseFailed(['search_name' => $passable->context->searchName]), $this->getName() ); if ($this->echoOutput) { cli()->error(sprintf( ' ✗ Parse failed: %s', mb_substr($passable->context->searchName, 0, 50) )); } // Don't continue to other pipes - can't process without parsed info return $passable; } $passable->setParsedInfo($parsedInfo); return $next($passable); } protected function process(TvProcessingPassable $passable): TvProcessingResult { // Not used - we override handle() instead return TvProcessingResult::pending(); } }