Example #1
0
 /**
  * Gets the completion from the NZB, optionally looks if there is an NFO/PAR2 file.
  *
  * @param string $guid
  * @param int    $relID
  * @param int    $groupID
  * @param bool   $nfoCheck
  *
  * @return array|bool
  *
  * @access public
  */
 public function parseNZB($guid, $relID, $groupID, $nfoCheck = false)
 {
     $nzbFile = $this->LoadNZB($guid);
     if ($nzbFile !== false) {
         $messageID = $hiddenID = '';
         $actualParts = $artificialParts = 0;
         $foundPAR2 = $this->lookuppar2 === false ? true : false;
         $foundNFO = $hiddenNFO = $nfoCheck === false ? true : false;
         foreach ($nzbFile->file as $nzbcontents) {
             foreach ($nzbcontents->segments->segment as $segment) {
                 $actualParts++;
             }
             $subject = (string) $nzbcontents->attributes()->subject;
             if (preg_match('/(\\d+)\\)$/', $subject, $parts)) {
                 $artificialParts += $parts[1];
             }
             if ($foundNFO === false) {
                 if (preg_match('/\\.\\b(nfo|inf|ofn)\\b(?![ .-])/i', $subject)) {
                     $messageID = (string) $nzbcontents->segments->segment;
                     $foundNFO = true;
                 }
             }
             if ($foundNFO === false && $hiddenNFO === false) {
                 if (preg_match('/\\(1\\/1\\)$/i', $subject) && !preg_match('/\\.(apk|bat|bmp|cbr|cbz|cfg|css|csv|cue|db|dll|doc|epub|exe|gif|htm|ico|idx|ini' . '|jpg|lit|log|m3u|mid|mobi|mp3|nib|nzb|odt|opf|otf|par|par2|pdf|psd|pps|png|ppt|r\\d{2,4}' . '|rar|sfv|srr|sub|srt|sql|rom|rtf|tif|torrent|ttf|txt|vb|vol\\d+\\+\\d+|wps|xml|zip)/i', $subject)) {
                     $hiddenID = (string) $nzbcontents->segments->segment;
                     $hiddenNFO = true;
                 }
             }
             if ($foundPAR2 === false) {
                 if (preg_match('/\\.(par[2" ]|\\d{2,3}").+\\(1\\/1\\)$/i', $subject)) {
                     if ($this->pp->parsePAR2((string) $nzbcontents->segments->segment, $relID, $groupID, $this->nntp, 1) === true) {
                         $this->pdo->queryExec(sprintf('UPDATE releases SET proc_par2 = 1 WHERE id = %d', $relID));
                         $foundPAR2 = true;
                     }
                 }
             }
         }
         if ($artificialParts <= 0 || $actualParts <= 0) {
             $completion = 0;
         } else {
             $completion = $actualParts / $artificialParts * 100;
         }
         if ($completion > 100) {
             $completion = 100;
         }
         $this->pdo->queryExec(sprintf('UPDATE releases SET completion = %d WHERE id = %d', $completion, $relID));
         if ($foundNFO === true && strlen($messageID) > 1) {
             return ['hidden' => false, 'ID' => $messageID];
         } elseif ($hiddenNFO === true && strlen($hiddenID) > 1) {
             return ['hidden' => true, 'ID' => $hiddenID];
         }
     }
     return false;
 }
Example #2
0
 /**
  * Process all that require a single thread.
  */
 private function processSingle()
 {
     $postProcess = new PostProcess(['Settings' => $this->pdo, 'ColorCLI' => $this->_colorCLI]);
     //$postProcess->processAnime();
     $postProcess->processBooks();
     $postProcess->processConsoles();
     $postProcess->processGames();
     $postProcess->processMusic();
     $postProcess->processXXX();
 }
Example #3
0
  Array with possible arguments for run and
  whether or not those methods of operation require NNTP
**/
$args = array('additional' => true, 'all' => true, 'allinf' => true, 'amazon' => false, 'anime' => false, 'book' => false, 'console' => false, 'games' => false, 'movies' => false, 'music' => false, 'nfo' => true, 'pre' => true, 'sharing' => true, 'tv' => false, 'xxx' => false);
$bool = array('true', 'false');
if (!isset($argv[1]) || !in_array($argv[1], $args) || !isset($argv[2]) || !in_array($argv[2], $bool)) {
    exit($pdo->log->error("\nIncorrect arguments.\n" . "The second argument (true/false) determines wether to echo or not.\n\n" . "php postprocess.php all true         ...: Does all the types of post processing.\n" . "php postprocess.php pre true         ...: Processes all Predb sites.\n" . "php postprocess.php nfo true         ...: Processes NFO files.\n" . "php postprocess.php movies true      ...: Processes movies.\n" . "php postprocess.php music true       ...: Processes music.\n" . "php postprocess.php console true     ...: Processes console games.\n" . "php postprocess.php games true       ...: Processes games.\n" . "php postprocess.php book true        ...: Processes books.\n" . "php postprocess.php anime true       ...: Processes anime.\n" . "php postprocess.php tv true          ...: Processes tv.\n" . "php postprocess.php xxx true         ...: Processes xxx.\n" . "php postprocess.php additional true  ...: Processes previews/mediainfo/etc...\n" . "php postprocess.php sharing true     ...: Processes uploading/downloading comments.\n" . "php postprocess.php allinf true      ...: Does all the types of post processing on a loop, sleeping 15 seconds between.\n" . "php postprocess.php amazon true      ...: Does all the amazon (books/console/games/music/xxx).\n"));
}
$nntp = null;
if ($args[$argv[1]] === true) {
    $nntp = new NNTP(['Settings' => $pdo]);
    if (($pdo->getSetting('alternate_nntp') == 1 ? $nntp->doConnect(true, true) : $nntp->doConnect()) !== true) {
        exit($pdo->log->error("Unable to connect to usenet." . PHP_EOL));
    }
}
$postProcess = new PostProcess(['Settings' => $pdo, 'Echo' => $argv[2] === 'true' ? true : false]);
$charArray = ['a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
switch ($argv[1]) {
    case 'all':
        $postProcess->processAll($nntp);
        break;
    case 'allinf':
        $i = 1;
        while ($i = 1) {
            $postProcess->processAll($nntp);
            sleep(15);
        }
        break;
    case 'additional':
        $postProcess->processAdditional($nntp, '', isset($argv[3]) && in_array($argv[3], $charArray) ? $argv[3] : '');
        break;