private function parseNewEpisodes($page)
 {
     $animediaShowRepository = $this->dm->getRepository('AppBundle:AnimediaShow');
     libxml_use_internal_errors(true);
     $dom = new \DOMDocument();
     $dom->loadHTML($page);
     $finder = new \DOMXPath($dom);
     $classname = 'widget__new-series__item__title';
     $nodes = $finder->query("//a[contains(@class, '{$classname}')]");
     foreach ($nodes as $node) {
         $showTitle = $node->getAttribute('title');
         $show = $animediaShowRepository->findOneBy(['title' => $showTitle]);
         if ($show) {
             $url = 'http://online.animedia.tv' . $node->getAttribute('href');
             $matches = [];
             if (preg_match('#Серия\\s(\\d+)\\sиз#u', $node->parentNode->nodeValue, $matches)) {
                 $episode = $show->getEpisodeByNumbers(null, (int) $matches[1]);
                 if (!$episode) {
                     $episode = new Episode();
                     $episode->setEpisodeNumber((int) $matches[1]);
                     $link = new Link();
                     $link->setUrl($url);
                     $link->setResolution('online');
                     $episode->addLink($link);
                     $show->addEpisode($episode);
                     $this->logger->info('Новая серия сериала на animedia:' . $showTitle);
                 }
             }
         } else {
             $this->logger->error('Сериал на animedia не найден:' . $showTitle);
         }
     }
     $this->dm->flush();
 }
 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));
     }
 }