Ejemplo n.º 1
0
 public function Fire()
 {
     $keeper = new BookKeeper();
     $provider = GetProvider();
     $shows = Show::FetchAll();
     foreach ($shows as $show) {
         LogMessage("Beginning search for {$show->name}");
         $results = $provider->SearchForShow($show);
         foreach ($results as $episode) {
             // Skip this episode if it's too old.
             if (!$keeper->ShouldDownloadEpisode($episode)) {
                 LogMessage("Skipping #{$episode->nzbid} '{$episode->title}' because it is too old");
                 continue;
             }
             // We've already downloaded this episode.
             if ($episode->IsAlreadyDownloaded()) {
                 LogMessage("Skipping #{$episode->nzbid} '{$episode->title}' because it has been downloaded previously");
                 continue;
             }
             TaskPump::Pump()->QueueTask(new DownloadEpisodeTask($episode));
         }
     }
 }
Ejemplo n.º 2
0
 public function Fire()
 {
     $keeper = new BookKeeper();
     $provider = GetProvider();
     $episode = $this->episode;
     // We've already downloaded this episode.
     if ($episode->IsAlreadyDownloaded()) {
         LogMessage("Skipping #{$episode->nzbid} '{$episode->title}' because it has been downloaded previously");
         return;
     }
     $title = SafeFileName($episode->title);
     $basename = $title . '_' . $episode->nzbid . '.nzb';
     $basename = \config::DownloadFileCallback($basename);
     $file_name = \config::$nzb_output_dir . '/' . $basename;
     if ($provider instanceof ProviderNZBMatrix) {
         $file_name .= '.gz';
     }
     // NZBMatrix returns gZIP files rather than raw NZBs.
     try {
         $provider->DownloadEpisode($episode, $file_name);
     } catch (DownloadException $e) {
         LogMessage("Could not get #{$episode->nzbid} '{$episode->title}'", LOG_ERR);
         $this->Cancel();
         return;
     }
     // NZB files are never less than 1k, so it's probably a dud. We'll try
     // on a different execution run.
     if (filesize($file_name) < 1000) {
         LogMessage("Failed to download #{$episode->nzbid} '{$episode->title}'. Please run again.", LOG_WRN);
         unlink($file_name);
         $this->Cancel();
         return;
     }
     $keeper->RecordDownload($episode);
     LogMessage("Downloaded #{$episode->nzbid} '{$episode->title}'");
     $provider->RateLimitDownload($episode);
 }