/** * Used for release edit page on site. * * @param int $ID * @param string $name * @param string $searchName * @param string $fromName * @param int $categoryID * @param int $parts * @param int $grabs * @param int $size * @param string $postedDate * @param string $addedDate * @param $videoId * @param $episodeId * @param int $imDbID * @param int $aniDbID * */ public function update($ID, $name, $searchName, $fromName, $categoryID, $parts, $grabs, $size, $postedDate, $addedDate, $videoId, $episodeId, $imDbID, $aniDbID) { $this->pdo->queryExec(sprintf('UPDATE releases SET name = %s, searchname = %s, fromname = %s, categoryid = %d, totalpart = %d, grabs = %d, size = %s, postdate = %s, adddate = %s, videos_id = %d, tv_episodes_id = %s, imdbid = %d, anidbid = %d WHERE id = %d', $this->pdo->escapeString($name), $this->pdo->escapeString($searchName), $this->pdo->escapeString($fromName), $categoryID, $parts, $grabs, $this->pdo->escapeString($size), $this->pdo->escapeString($postedDate), $this->pdo->escapeString($addedDate), $videoId, $episodeId, $imDbID, $aniDbID, $ID)); $this->sphinxSearch->updateRelease($ID, $this->pdo); }
/** * Used for release edit page on site. * * @param int $ID * @param string $name * @param string $searchName * @param string $fromName * @param int $categoryID * @param int $parts * @param int $grabs * @param int $size * @param string $postedDate * @param string $addedDate * @param int $rageID * @param string $seriesFull * @param string $season * @param string $episode * @param int $imDbID * @param int $aniDbID */ public function update($ID, $name, $searchName, $fromName, $categoryID, $parts, $grabs, $size, $postedDate, $addedDate, $rageID, $seriesFull, $season, $episode, $imDbID, $aniDbID) { $this->pdo->queryExec(sprintf('UPDATE releases SET name = %s, searchname = %s, fromname = %s, categoryid = %d, totalpart = %d, grabs = %d, size = %s, postdate = %s, adddate = %s, rageid = %d, seriesfull = %s, season = %s, episode = %s, imdbid = %d, anidbid = %d WHERE id = %d', $this->pdo->escapeString($name), $this->pdo->escapeString($searchName), $this->pdo->escapeString($fromName), $categoryID, $parts, $grabs, $this->pdo->escapeString($size), $this->pdo->escapeString($postedDate), $this->pdo->escapeString($addedDate), $rageID, $this->pdo->escapeString($seriesFull), $this->pdo->escapeString($season), $this->pdo->escapeString($episode), $imDbID, $aniDbID, $ID)); $this->sphinxSearch->updateReleaseSearchName($ID, $searchName); }
protected function _preFTsearchQuery($preTitle) { switch (nZEDb_RELEASE_SEARCH_TYPE) { case ReleaseSearch::SPHINX: $titlematch = SphinxSearch::escapeString($preTitle); $join = sprintf('INNER JOIN releases_se rse ON rse.id = r.id WHERE rse.query = "@(name,searchname,filename) %s;mode=extended"', $titlematch); break; case ReleaseSearch::FULLTEXT: default: //Remove all non-printable chars from PreDB title preg_match_all('#[a-zA-Z0-9]{3,}#', $preTitle, $matches, PREG_PATTERN_ORDER); $titlematch = '+' . implode(' +', $matches[0]); $join = sprintf("INNER JOIN release_search_data rs ON rs.releaseid = r.id\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t(MATCH (rs.name) AGAINST ('%1\$s' IN BOOLEAN MODE)\n\t\t\t\t\t\t\tOR MATCH (rs.searchname) AGAINST ('%1\$s' IN BOOLEAN MODE))", $titlematch); break; } return $join; }
/** * Update the release with the new information. * * @param array $release * @param string $name * @param string $method * @param boolean $echo * @param string $type * @param int $nameStatus * @param int $show * @param int $preId */ public function updateRelease($release, $name, $method, $echo, $type, $nameStatus, $show, $preId = 0) { if ($this->relid !== $release['releaseid']) { $releaseCleaning = new ReleaseCleaning($this->pdo); $newName = $releaseCleaning->fixerCleaner($name); if (strtolower($newName) != strtolower($release["searchname"])) { $this->matched = true; $this->relid = $release["releaseid"]; $determinedCategory = $this->category->determineCategory($release['group_id'], $newName); if ($type === "PAR2, ") { $newName = ucwords($newName); if (preg_match('/(.+?)\\.[a-z0-9]{2,3}(PAR2)?$/i', $name, $match)) { $newName = $match[1]; } } $this->fixed++; $newName = explode("\\", $newName); $newName = preg_replace(['/^[-=_\\.:\\s]+/', '/[-=_\\.:\\s]+$/'], '', $newName[0]); if ($this->echooutput === true && $show === 1) { $groupName = $this->_groups->getByNameByID($release['group_id']); $oldCatName = $this->category->getNameByID($release['categoryid']); $newCatName = $this->category->getNameByID($determinedCategory); if ($type === "PAR2, ") { echo PHP_EOL; } echo $this->pdo->log->headerOver("\nNew name: ") . $this->pdo->log->primary(substr($newName, 0, 255)) . $this->pdo->log->headerOver("Old name: ") . $this->pdo->log->primary($release["searchname"]) . $this->pdo->log->headerOver("Use name: ") . $this->pdo->log->primary($release["name"]) . $this->pdo->log->headerOver("New cat: ") . $this->pdo->log->primary($newCatName) . $this->pdo->log->headerOver("Old cat: ") . $this->pdo->log->primary($oldCatName) . $this->pdo->log->headerOver("Group: ") . $this->pdo->log->primary($groupName) . $this->pdo->log->headerOver("Method: ") . $this->pdo->log->primary($type . $method) . $this->pdo->log->headerOver("ReleaseID: ") . $this->pdo->log->primary($release["releaseid"]); if (isset($release['filename']) && $release['filename'] != "") { echo $this->pdo->log->headerOver("Filename: ") . $this->pdo->log->primary($release["filename"]); } if ($type !== "PAR2, ") { echo "\n"; } } $newTitle = $this->pdo->escapeString(substr($newName, 0, 255)); if ($echo == true) { if ($nameStatus == 1) { $status = ''; switch ($type) { case "NFO, ": $status = "isrenamed = 1, iscategorized = 1, proc_nfo = 1,"; break; case "PAR2, ": $status = "isrenamed = 1, iscategorized = 1, proc_par2 = 1,"; break; case "Filenames, ": case "file matched source: ": $status = "isrenamed = 1, iscategorized = 1, proc_files = 1,"; break; case "SHA1, ": case "MD5, ": $status = "isrenamed = 1, iscategorized = 1, dehashstatus = 1,"; break; case "PreDB FT Exact, ": $status = "isrenamed = 1, iscategorized = 1,"; break; case "sorter ": $status = "isrenamed = 1, iscategorized = 1, proc_sorter = 1,"; break; } $this->pdo->queryExec(sprintf(' UPDATE releases SET videos_id = 0, tv_episodes_id = 0, imdbid = NULL, musicinfoid = NULL, consoleinfoid = NULL, bookinfoid = NULL, anidbid = NULL, preid = %d, searchname = %s, %s categoryid = %d WHERE id = %d', $preId, $newTitle, $status, $determinedCategory, $release['releaseid'])); $this->sphinx->updateRelease($release['releaseid'], $this->pdo); } else { $newTitle = $this->pdo->escapeString(substr($newName, 0, 255)); $this->pdo->queryExec(sprintf(' UPDATE releases SET videos_id = 0, tv_episodes_id = 0, imdbid = NULL, musicinfoid = NULL, consoleinfoid = NULL, bookinfoid = NULL, anidbid = NULL, preid = %d, searchname = %s, iscategorized = 1, categoryid = %d WHERE id = %d', $preId, $newTitle, $determinedCategory, $release['releaseid'])); $this->sphinx->updateRelease($release['releaseid'], $this->pdo); } } } } $this->done = true; }
$rename = false; if ($argv[3] === 'true') { $rename = true; } require_once dirname(__FILE__) . '/../../../www/config.php'; $pdo = new Settings(); $group = $pdo->queryOneRow(sprintf('SELECT id FROM groups WHERE name = %s', $pdo->escapeString($argv[1]))); if ($group === false) { exit('No group with name ' . $argv[1] . ' found in the database.'); } $releases = $pdo->query(sprintf('SELECT name, searchname, fromname, size, id FROM releases WHERE group_id = %d %s ORDER BY postdate LIMIT %d', $group['id'], $category, $argv[2])); if (count($releases) === 0) { exit('No releases found in your database for group ' . $argv[1] . PHP_EOL); } $RC = new ReleaseCleaning($pdo); $sphinx = new SphinxSearch(); foreach ($releases as $release) { $newName = $RC->releaseCleaner($release['name'], $release['fromname'], $release['size'], $argv[1]); if (is_array($newName)) { $newName = $newName['cleansubject']; } if ($newName !== $release['searchname']) { echo 'Old name: ' . $release['searchname'] . PHP_EOL; echo 'New name: ' . $newName . PHP_EOL . PHP_EOL; if ($rename === true) { $newName = $pdo->escapeString($newName); $pdo->queryExec(sprintf('UPDATE releases SET searchname = %s WHERE id = %d', $newName, $release['id'])); $sphinx->updateReleaseSearchName($release['id'], $newName); } } }
<?php /* This script runs the subject names through namecleaner to create a clean search name, it also recategorizes and runs the releases through namefixer. * Type php resetSearchname.php to see detailed info. */ require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'indexer.php'); use nzedb\ConsoleTools; use nzedb\NameFixer; use nzedb\processing\ProcessReleases; use nzedb\ReleaseCleaning; use nzedb\SphinxSearch; use nzedb\db\Settings; $pdo = new Settings(); $sphinx = new SphinxSearch(); $show = 2; if (isset($argv[2]) && $argv[2] === 'show') { $show = 1; } if (isset($argv[1]) && $argv[1] == "full") { $res = $pdo->query("SELECT releases.id, releases.name, releases.fromname, releases.size, groups.name AS gname FROM releases INNER JOIN groups ON releases.group_id = groups.id"); if (count($res) > 0) { echo $pdo->log->header("Going to recreate all search names, recategorize them and fix the names with namefixer, this can take a while."); $done = 0; $timestart = time(); $consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]); $rc = new ReleaseCleaning($pdo); foreach ($res as $row) { $newname = $rc->releaseCleaner($row['name'], $row['fromname'], $row['size'], $row['gname']); if (is_array($newname)) { $newname = $newname['cleansubject']; } $newname = $pdo->escapeString($newname);
} $rename = false; if ($argv[3] === 'true') { $rename = true; } $pdo = new Settings(); $group = $pdo->queryOneRow(sprintf('SELECT id FROM groups WHERE name = %s', $pdo->escapeString($argv[1]))); if ($group === false) { exit('No group with name ' . $argv[1] . ' found in the database.'); } $releases = $pdo->query(sprintf('SELECT name, searchname, fromname, size, id FROM releases WHERE group_id = %d %s ORDER BY postdate LIMIT %d', $group['id'], $category, $argv[2])); if (count($releases) === 0) { exit('No releases found in your database for group ' . $argv[1] . PHP_EOL); } $RC = new ReleaseCleaning($pdo); $sphinx = new SphinxSearch(); foreach ($releases as $release) { $newName = $RC->releaseCleaner($release['name'], $release['fromname'], $release['size'], $argv[1]); if (is_array($newName)) { $newName = $newName['cleansubject']; } if ($newName !== $release['searchname']) { echo 'Old name: ' . $release['searchname'] . PHP_EOL; echo 'New name: ' . $newName . PHP_EOL . PHP_EOL; if ($rename === true) { $newName = $pdo->escapeString($newName); $pdo->queryExec(sprintf('UPDATE releases SET searchname = %s WHERE id = %d', $newName, $release['id'])); $sphinx->updateRelease($release['id']); } } }
/** * Delete release files for a release ID. * * @param int $id The release ID. * * @return mixed */ public function delete($id) { $res = $this->pdo->queryExec(sprintf("DELETE FROM release_files WHERE releaseid = %d", $id)); $this->sphinxSearch->updateRelease($id, $this->pdo); return $res; }
<?php /* This script runs the subject names through namecleaner to create a clean search name, it also recategorizes and runs the releases through namefixer. * Type php resetSearchname.php to see detailed info. */ require_once dirname(__FILE__) . '/../../../www/config.php'; use nzedb\ConsoleTools; use nzedb\NameFixer; use nzedb\processing\ProcessReleases; use nzedb\ReleaseCleaning; use nzedb\SphinxSearch; use nzedb\db\Settings; $pdo = new Settings(); $sphinx = new SphinxSearch(); $show = 2; if (isset($argv[2]) && $argv[2] === 'show') { $show = 1; } if (isset($argv[1]) && $argv[1] == "full") { $res = $pdo->query("SELECT releases.id, releases.name, releases.fromname, releases.size, groups.name AS gname FROM releases INNER JOIN groups ON releases.group_id = groups.id"); if (count($res) > 0) { echo $pdo->log->header("Going to recreate all search names, recategorize them and fix the names with namefixer, this can take a while."); $done = 0; $timestart = time(); $consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]); $rc = new ReleaseCleaning($pdo); foreach ($res as $row) { $newname = $rc->releaseCleaner($row['name'], $row['fromname'], $row['size'], $row['gname']); if (is_array($newname)) { $newname = $newname['cleansubject']; } $newname = $pdo->escapeString($newname);