<?php require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'indexer.php'); use nzedb\ColorCLI; use nzedb\RottenTomato; use nzedb\db\Settings; $cli = new ColorCLI(); $rtkey = (new Settings())->getSetting('rottentomatokey'); if (isset($rtkey)) { $rt = new RottenTomato($rtkey); print_r(json_decode($rt->searchMovie("inception"))); $url = RottenTomato::API_URL . "movies.json?apikey=" . $rt->getApiKey() . "&q=inception&page_limit=50"; exit($cli->header("\nIf nothing was displayed above then there might be an error. If so, go to the following url: {$url}\n")); } else { exit($cli->error("\nNo rotten tomato key.\n")); }
/** * Download new headers for a single group. * * @param array $groupMySQL Array of MySQL results for a single group. * @param int $maxHeaders (Optional) How many headers to download max. * * @return void */ public function updateGroup($groupMySQL, $maxHeaders = 0) { $startGroup = microtime(true); $this->logIndexerStart(); // Select the group on the NNTP server, gets the latest info on it. $groupNNTP = $this->_nntp->selectGroup($groupMySQL['name']); if ($this->_nntp->isError($groupNNTP)) { $groupNNTP = $this->_nntp->dataError($this->_nntp, $groupMySQL['name']); if ($groupNNTP->code == 411) { $this->_groups->disableIfNotExist($groupMySQL['id']); } if ($this->_nntp->isError($groupNNTP)) { return; } } if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary('Processing ' . $groupMySQL['name']), true); } // Attempt to repair any missing parts before grabbing new ones. if ($groupMySQL['last_record'] != 0) { if ($this->_partRepair) { if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary('Part repair enabled. Checking for missing parts.'), true); } $this->partRepair($groupMySQL); } else { if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary('Part repair disabled by user.'), true); } } } // Generate postdate for first record, for those that upgraded. if (is_null($groupMySQL['first_record_postdate']) && $groupMySQL['first_record'] != 0) { $groupMySQL['first_record_postdate'] = $this->postdate($groupMySQL['first_record'], $groupNNTP); $this->_pdo->queryExec(sprintf(' UPDATE groups SET first_record_postdate = %s WHERE id = %d', $this->_pdo->from_unixtime($groupMySQL['first_record_postdate']), $groupMySQL['id'])); } // Get first article we want aka the oldest. if ($groupMySQL['last_record'] == 0) { if ($this->_newGroupScanByDays) { // For new newsgroups - determine here how far we want to go back using date. $first = $this->daytopost($this->_newGroupDaysToScan, $groupNNTP); } else { if ($groupNNTP['first'] >= $groupNNTP['last'] - ($this->_newGroupMessagesToScan + $this->messageBuffer)) { // If what we want is lower than the groups first article, set the wanted first to the first. $first = $groupNNTP['first']; } else { // Or else, use the newest article minus how much we should get for new groups. $first = (string) ($groupNNTP['last'] - ($this->_newGroupMessagesToScan + $this->messageBuffer)); } } // We will use this to subtract so we leave articles for the next time (in case the server doesn't have them yet) $leaveOver = $this->messageBuffer; // If this is not a new group, go from our newest to the servers newest. } else { // Set our oldest wanted to our newest local article. $first = $groupMySQL['last_record']; // This is how many articles we will grab. (the servers newest minus our newest). $totalCount = (string) ($groupNNTP['last'] - $first); // Check if the server has more articles than our loop limit x 2. if ($totalCount > $this->messageBuffer * 2) { // Get the remainder of $totalCount / $this->message buffer $leaveOver = round($totalCount % $this->messageBuffer, 0, PHP_ROUND_HALF_DOWN) + $this->messageBuffer; } else { // Else get half of the available. $leaveOver = round($totalCount / 2, 0, PHP_ROUND_HALF_DOWN); } } // The last article we want, aka the newest. $last = $groupLast = (string) ($groupNNTP['last'] - $leaveOver); // If the newest we want is older than the oldest we want somehow.. set them equal. if ($last < $first) { $last = $groupLast = $first; } // This is how many articles we are going to get. $total = (string) ($groupLast - $first); // This is how many articles are available (without $leaveOver). $realTotal = (string) ($groupNNTP['last'] - $first); // Check if we should limit the amount of fetched new headers. if ($maxHeaders > 0) { if ($maxHeaders < $groupLast - $first) { $groupLast = $last = (string) ($first + $maxHeaders); } $total = (string) ($groupLast - $first); } // If total is bigger than 0 it means we have new parts in the newsgroup. if ($total > 0) { if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary(($groupMySQL['last_record'] == 0 ? 'New group ' . $groupNNTP['group'] . ' starting with ' . ($this->_newGroupScanByDays ? $this->_newGroupDaysToScan . ' days' : number_format($this->_newGroupMessagesToScan) . ' messages') . ' worth.' : 'Group ' . $groupNNTP['group'] . ' has ' . number_format($realTotal) . ' new articles.') . ' Leaving ' . number_format($leaveOver) . " for next pass.\nServer oldest: " . number_format($groupNNTP['first']) . ' Server newest: ' . number_format($groupNNTP['last']) . ' Local newest: ' . number_format($groupMySQL['last_record'])), true); } $done = false; // Get all the parts (in portions of $this->messageBuffer to not use too much memory). while ($done === false) { // Increment last until we reach $groupLast (group newest article). if ($total > $this->messageBuffer) { if ((string) ($first + $this->messageBuffer) > $groupLast) { $last = $groupLast; } else { $last = (string) ($first + $this->messageBuffer); } } // Increment first so we don't get an article we already had. $first++; if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->header("\nGetting " . number_format($last - $first + 1) . ' articles (' . number_format($first) . ' to ' . number_format($last) . ') from ' . $groupMySQL['name'] . " - (" . number_format($groupLast - $last) . " articles in queue).")); } // Get article headers from newsgroup. $scanSummary = $this->scan($groupMySQL, $first, $last); // Check if we fetched headers. if (!empty($scanSummary)) { // If new group, update first record & postdate if (is_null($groupMySQL['first_record_postdate']) && $groupMySQL['first_record'] == 0) { $groupMySQL['first_record'] = $scanSummary['firstArticleNumber']; if (isset($scanSummary['firstArticleDate'])) { $groupMySQL['first_record_postdate'] = strtotime($scanSummary['firstArticleDate']); } else { $groupMySQL['first_record_postdate'] = $this->postdate($groupMySQL['first_record'], $groupNNTP); } $this->_pdo->queryExec(sprintf(' UPDATE groups SET first_record = %s, first_record_postdate = %s WHERE id = %d', $scanSummary['firstArticleNumber'], $this->_pdo->from_unixtime($this->_pdo->escapeString($groupMySQL['first_record_postdate'])), $groupMySQL['id'])); } if (isset($scanSummary['lastArticleDate'])) { $scanSummary['lastArticleDate'] = strtotime($scanSummary['lastArticleDate']); } else { $scanSummary['lastArticleDate'] = $this->postdate($scanSummary['lastArticleNumber'], $groupNNTP); } $this->_pdo->queryExec(sprintf(' UPDATE groups SET last_record = %s, last_record_postdate = %s, last_updated = NOW() WHERE id = %d', $this->_pdo->escapeString($scanSummary['lastArticleNumber']), $this->_pdo->from_unixtime($scanSummary['lastArticleDate']), $groupMySQL['id'])); } else { // If we didn't fetch headers, update the record still. $this->_pdo->queryExec(sprintf(' UPDATE groups SET last_record = %s, last_updated = NOW() WHERE id = %d', $this->_pdo->escapeString($last), $groupMySQL['id'])); } if ($last == $groupLast) { $done = true; } else { $first = $last; } } if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary(PHP_EOL . 'Group ' . $groupMySQL['name'] . ' processed in ' . number_format(microtime(true) - $startGroup, 2) . ' seconds.'), true); } } else { if ($this->_echoCLI) { $this->_colorCLI->doEcho($this->_colorCLI->primary('No new articles for ' . $groupMySQL['name'] . ' (first ' . number_format($first) . ', last ' . number_format($last) . ', grouplast ' . number_format($groupMySQL['last_record']) . ', total ' . number_format($total) . ")\n" . 'Server oldest: ' . number_format($groupNNTP['first']) . ' Server newest: ' . number_format($groupNNTP['last']) . ' Local newest: ' . number_format($groupMySQL['last_record'])), true); } } }
<?php require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'indexer.php'); use nzedb\ColorCLI; use nzedb\db\Settings; $cli = new ColorCLI(); $pdo = new Settings(['checkVersion' => true]); $ftinnodb = $pdo->isDbVersionAtLeast('5.6'); if (isset($argv[1]) && isset($argv[2]) && $argv[2] == "fmyisam") { $tbl = $argv[1]; printf($cli->header("Converting {$tbl}")); $pdo->queryExec("ALTER TABLE {$tbl} ENGINE=MYISAM ROW_FORMAT=FIXED"); } else { if (isset($argv[1]) && isset($argv[2]) && $argv[2] == "dmyisam") { $tbl = $argv[1]; printf($cli->header("Converting {$tbl}")); $pdo->queryExec("ALTER TABLE {$tbl} ENGINE=MYISAM ROW_FORMAT=DYNAMIC"); } else { if (isset($argv[1]) && isset($argv[2]) && $argv[2] == "cinnodb") { $tbl = $argv[1]; if ($ftinnodb || !$ftinnodb && $tbl !== 'release_search_data' && $tbl !== 'predb_hashes' && $tbl !== 'bookinfo' && $tbl !== 'consoleinfo' && $tbl !== 'musicinfo') { printf($cli->header("Converting {$tbl}")); $pdo->queryExec("ALTER TABLE {$tbl} ENGINE=INNODB ROW_FORMAT=COMPRESSED"); } else { printf($cli->header("Not converting bookinfo / consoleinfo / musicinfo / release_search_data / predb_hashes as your INNODB version does not support fulltext indexes")); } } else { if (isset($argv[1]) && isset($argv[2]) && $argv[2] == "dinnodb") { $tbl = $argv[1]; if ($ftinnodb || !$ftinnodb && $tbl !== 'release_search_data' && $tbl !== 'predb_hashes' && $tbl !== 'bookinfo' && $tbl !== 'consoleinfo' && $tbl !== 'musicinfo') { printf($cli->header("Converting {$tbl}"));
use nzedb\db\Settings; use nzedb\utility\Misc; $pdo = new Settings(); $DIR = nZEDb_MISC; $smarty = new Smarty(); $dbname = DB_NAME; $cli = new ColorCLI(); if (isset($argv[1]) && ($argv[1] == "true" || $argv[1] == "safe")) { $restart = (new Tmux())->stopIfRunning(); system("cd {$DIR} && git pull"); if (Misc::hasCommand("php5")) { $PHP = "php5"; } else { $PHP = "php"; } echo $cli->header("Patching database - {$dbname}."); $safe = $argv[1] === "safe" ? true : false; system("{$PHP} " . nZEDb_ROOT . 'cli' . DS . "update_db.php true {$safe}"); // Remove folders from smarty. $cleared = $smarty->clearCompiledTemplate(); if ($cleared) { echo $cli->header("The smarty template cache has been cleaned for you"); } else { echo $cli->header("You should clear your smarty template cache at: " . SMARTY_DIR . "templates_c"); } if ($restart) { echo $cli->header("Starting tmux scripts."); $pdo->queryExec("UPDATE tmux SET value = '1' WHERE setting = 'RUNNING'"); } } else { exit($cli->error("\nThis script will automatically do a git pull, patch the DB and delete the smarty folder contents.\n\n" . "php {$argv['0']} true ...: To run.\n" . "php {$argv['0']} safe ...: Tto run a backup of your database and then update.\n"));
<?php require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'indexer.php'); use nzedb\ColorCLI; use nzedb\db\Settings; $pdo = new Settings(); $count = $groups = 0; $cli = new ColorCLI(); echo $cli->header("This script will show all Backfill Groups.\n" . "An optional first argument of ASC/DESC is used to sort the display by first_record_postdate in ascending/descending order.\n" . "An optional second argument will limit the return to that number of groups.\n\n" . "php {$argv['0']} true 20 ...: To sort the backfill groups by first_record_postdate and display only 20 groups.\n"); $limit = ""; if (isset($argv[2]) && is_numeric($argv[2])) { $limit = "limit " . $argv[2]; } else { if (isset($argv[1]) && is_numeric($argv[1])) { $limit = "limit " . $argv[1]; } } $mask = $cli->primary("%-50.50s %22.22s %22.22s %22.22s %22.22s"); $mask1 = $cli->header("%-50.50s %22.22s %22.22s %22.22s %22.22s"); $groups = $pdo->queryOneRow("SELECT COUNT(*) AS count FROM groups WHERE backfill = 1 AND first_record IS NOT NULL"); if ($rels = $pdo->query("SELECT last_updated, last_updated, CAST(last_record AS SIGNED)-CAST(first_record AS SIGNED) AS headers_downloaded FROM groups")) { foreach ($rels as $rel) { $count += $rel['headers_downloaded']; } } printf($mask1, "Group Name => " . $groups['count'] . "(" . number_format($count) . " downloaded)", "Backfilled Days", "Oldest Post", "Last Updated", "Headers Downloaded"); printf($mask1, "==================================================", "======================", "======================", "======================", "======================"); if (isset($argv[1]) && ($argv[1] === "desc" || $argv[1] === "DESC")) { if ($rels = $pdo->query(sprintf("SELECT name, backfill_target, first_record_postdate, last_updated, last_updated, " . "CAST(last_record AS SIGNED)-CAST(first_record AS SIGNED) AS headers_downloaded, " . "TIMESTAMPDIFF(DAY,first_record_postdate,NOW()) AS days FROM groups " . "WHERE backfill = 1 AND first_record_postdate IS NOT NULL AND last_updated IS NOT NULL " . "AND last_updated IS NOT NULL ORDER BY first_record_postdate DESC %s", $limit))) { foreach ($rels as $rel) { $headers = number_format($rel['headers_downloaded']);
use nzedb\db\Settings; $giantbombkey = (new Settings())->getSetting('giantbombkey'); $cli = new ColorCLI(); $obj = new GiantBomb($giantbombkey, $resp = "json"); $searchgame = "South Park The Stick of Truth"; $resultsfound = 0; $e = null; try { $fields = array("deck", "description", "original_game_rating", "api_detail_url", "image", "genres", "name", "platforms", "publishers", "original_release_date", "reviews", "site_detail_url"); $result = $obj->search($searchgame, $fields, 1); $result = json_decode(json_encode($result), true); if ($result['number_of_total_results'] != 0) { $resultsfound = count($result['results']); for ($i = 0; $i <= $resultsfound; $i++) { similar_text($result['results'][$i]['name'], $searchgame, $p); if ($p > 90) { $result = $result['results'][$i]; break; } } } } catch (\Exception $e) { $result = false; } if ($result !== false && !empty($result)) { print_r($result); exit($cli->header("\nLooks like it is working alright.")); } else { print_r($e); exit($cli->error("\nThere was a problem attempting to query giantbomb. Maybe your key is wrong, or you are being throttled.\n")); }