private function addEpisodeIfNotExists(LostfilmShow $show, $title, $link) { $titleBeginAt = mb_strpos($title, ').', 0, 'UTF-8') + 2; $episodeTitle = trim(mb_substr($title, $titleBeginAt, 1024, 'UTF-8')); $episodeTitle = preg_replace('/\\[.+?\\]/', '', $episodeTitle); $episodeTitle = preg_replace('/\\(S\\d+E\\d+\\)/', '', $episodeTitle); $episodeTitle = trim($episodeTitle, ' .'); $matches = []; if (preg_match('/\\(S(\\d+)E(\\d+)\\)/', $title, $matches)) { $seasonNumber = (int) $matches[1]; $episodeNumber = (int) $matches[2]; $episode = $show->getEpisodeByNumbers($seasonNumber, $episodeNumber); if ($episode !== null) { $this->addLinkToEpisode($episode, $link); return; } $episode = new Episode(); $episode->setCreatedAt(new \DateTime()); $episode->setTitle($episodeTitle); $episode->setSeasonNumber($seasonNumber); $episode->setEpisodeNumber($episodeNumber); $this->addLinkToEpisode($episode, $link); $show->addEpisode($episode); $this->logger->info(sprintf('Добавлен эпизод: %s (S%dE%d)', $show->getTitle(), $seasonNumber, $episodeNumber)); } }