Exemplo n.º 1
0
 /**
  * @param $showId string show id
  *
  * @return array
  */
 public function getRequestHeaders($showId)
 {
     $headers = $this->config->getRequestHeaders();
     if (isset($headers['Host'])) {
         $headers['Host'] = str_replace('[URL]', $this->config->getAddictedUrl(), $headers['Host']);
     }
     if (isset($headers['Referer'])) {
         $headers['Referer'] = str_replace('[SCHEME]://[URL]', $this->getAddictedUrl(), $headers['Referer']);
         $headers['Referer'] = str_replace('[SHOW-URI]', $this->config->getAddictedShowUri(), $headers['Referer']);
         $headers['Referer'] = str_replace('[SHOW]', $showId, $headers['Referer']);
     }
     return $headers;
 }
Exemplo n.º 2
0
 /**
  * @param $episodeFilename string show file name
  * @param $download boolean download the file?
  *
  * @return null|string
  */
 public function findSubtitle($episodeFilename, $download)
 {
     $language = $this->config->getSubtitleLanguage();
     if (!isset($this->languages[$language])) {
         printf("Missing language [%s].\n", $language);
         return null;
     }
     $episode = new Episode($episodeFilename);
     if (!isset($this->shows[$episode->sanitizedShowName])) {
         printf("Missing show [%s].\n", $episode->showName);
         return null;
     }
     $languageId = $this->languages[$language];
     $showId = $this->shows[$episode->sanitizedShowName];
     $url = $this->builder->getAddictedShowAjaxUrl($showId, $episode->season, $languageId);
     printf("Trying to get subtitles from [%s].\n", $url);
     $crawler = $this->client->request('GET', $url);
     $matchingSubtitles = $crawler->filter('div#season > table > tbody > tr.epeven')->reduce(function (Crawler $node) use($episode) {
         $children = $node->children();
         $ep = $children->getNode(1)->nodeValue;
         $group = strtolower($children->getNode(4)->nodeValue);
         $status = strtolower($children->getNode(5)->nodeValue);
         return (int) $ep === (int) $episode->ep && $episode->inGroups($group) && strpos($status, '%') === false;
     });
     if ($matchingSubtitles->count() == 0) {
         printf("Missing subtitles for show [%s] season [%s] episode [%s] \n  and groups [%s].\n", $episode->showName, $episode->season, $episode->ep, implode(', ', $episode->groups));
         return null;
     }
     $chosenSubtitle = $matchingSubtitles->first();
     $downloadUri = $chosenSubtitle->children()->getNode(9)->firstChild->getAttribute('href');
     $url = $this->builder->getSubtitleUrl($downloadUri);
     if ($download === false) {
         printf("Chosen subtitle [%s].\n", $url);
         return null;
     }
     printf("Downloading subtitle [%s].\n", $url);
     $headers = $this->builder->getRequestHeaders($showId);
     return $this->client->getClient()->get($url, ['headers' => $headers])->getBody()->getContents();
 }