Files
newznab-tmux/misc/testing/Dev/test-ReleaseCleaner.php
T
2017-04-15 15:16:06 +02:00

70 lines
2.2 KiB
PHP
Executable File

<?php
require_once dirname(__DIR__, 3) . DIRECTORY_SEPARATOR . 'bootstrap.php';
use nntmux\ReleaseCleaning;
use nntmux\SphinxSearch;
use nntmux\db\DB;
$message =
'Shows old searchname vs new searchname for releases in a group using the releaseCleaning class. (Good for testing new regex)' .
PHP_EOL .
'Argument 1 is the group name.' . PHP_EOL .
'Argument 2 is how many releases to limit this to, must be a number.' . PHP_EOL .
'Argument 3 (true|false) true renames the releases, false only displays what could be changed.' . PHP_EOL .
'Argument 4 is a categoryID, pass 0 to do all, 0010 to do misc, etc.' . PHP_EOL .
'php ' . $argv[0] . ' alt.binaries.comics.dcp 1000 false' . PHP_EOL;
if ($argc < 5) {
exit($message);
}
if (!is_numeric($argv[2]) || !is_numeric($argv[4])) {
exit($message);
}
if (!in_array($argv[3], ['true', 'false'], false)) {
exit($message);
}
$category = '';
if ($argv[4] !== '0' && strlen($argv[4]) === 4) {
$category = 'AND categories_id = ' . $argv[4];
}
$rename = false;
if ($argv[3] === 'true') {
$rename = true;
}
$pdo = new DB();
$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 groups_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'], $pdo);
}
}
}