Files
newznab-tmux/misc/testing/PostProc/check_previews.php
T

63 lines
2.6 KiB
PHP

<?php
// --------------------------------------------------------------
// Scan for releases missing previews on disk
// --------------------------------------------------------------
require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'indexer.php');
use newznab\db\Settings;
use newznab\utility\Utility;
use newznab\Releases;
use newznab\NZB;
use newznab\ReleaseImage;
use newznab\ConsoleTools;
$pdo = new Settings();
$row = $pdo->queryOneRow("SELECT value FROM settings WHERE setting = 'coverspath'");
if ($row !== false) {
Utility::setCoversConstant($row['value']);
} else {
die("Unable to determine covers path!\n");
}
$path2preview = NN_COVERS . 'preview' . DS;
if (isset($argv[1]) && ($argv[1] === "true" || $argv[1] === "check")) {
$releases = new Releases(['Settings' => $pdo]);
$nzb = new NZB($pdo);
$releaseImage = new ReleaseImage($pdo);
$consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]);
$couldbe = $argv[1] === "true" ? $couldbe = "were " : "could be ";
$limit = $counterfixed = 0;
if (isset($argv[2]) && is_numeric($argv[2])) {
$limit = $argv[2];
}
echo $pdo->log->header("Scanning for releases missing previews");
$res = $pdo->queryDirect("SELECT id, guid FROM releases where nzbstatus = 1 AND haspreview = 1");
if ($res instanceof \Traversable) {
foreach ($res as $row) {
$nzbpath = $path2preview . $row["guid"] . "_thumb.jpg";
if (!file_exists($nzbpath)) {
$counterfixed++;
echo $pdo->log->warning("Missing preview " . $nzbpath);
if ($argv[1] === "true") {
$pdo->queryExec(
sprintf("UPDATE releases SET consoleinfo_id = NULL, gamesinfo_id = 0, imdbid = NULL, musicinfo_id = NULL, bookinfo_id = NULL, videos_id = 0, xxxinfo_id = 0, passwordstatus = -1, haspreview = -1, jpgstatus = 0, videostatus = 0, audiostatus = 0, nfostatus = -1 WHERE id = %s", $row['id']));
}
}
if (($limit > 0) && ($counterfixed >= $limit)) {
break;
} // QUAD!
}
}
echo $pdo->log->header("Total releases missing previews that " . $couldbe . "reset for reprocessing= " . number_format($counterfixed));
} else {
exit($pdo->log->header("\nThis script checks if release previews actually exist on disk.\n\n"
. "Releases without previews may be reset for post-processing, thus regenerating them and related meta data.\n\n"
. "Useful for recovery after filesystem corruption, or as an alternative re-postprocessing tool.\n\n"
. "Optional LIMIT parameter restricts number of releases to be reset.\n\n"
. "php $argv[0] check [LIMIT] ...: Dry run, displays missing previews.\n"
. "php $argv[0] true [LIMIT] ...: Re-process releases missing previews.\n"));
}