diff --git a/Changelog b/Changelog index 38cb4815e..f90ba645b 100755 --- a/Changelog +++ b/Changelog @@ -1,3 +1,5 @@ +2017-05-09 DariusIII + * Chg: Change hash16k and srr name fixing queries and support in groupfixrelnames and NameFixer 2017-05-08 DariusIII * Chg: Use reset function in NameFixer * Chg: Update AniDb queries and handling diff --git a/build/nntmux.xml b/build/nntmux.xml index d6aad1cbf..7aa913ff1 100755 --- a/build/nntmux.xml +++ b/build/nntmux.xml @@ -16,8 +16,8 @@ - 306 - 306 + 307 + 307 diff --git a/misc/update/nix/tmux/bin/groupfixrelnames.php b/misc/update/nix/tmux/bin/groupfixrelnames.php index 129d6aac9..fd85d66be 100644 --- a/misc/update/nix/tmux/bin/groupfixrelnames.php +++ b/misc/update/nix/tmux/bin/groupfixrelnames.php @@ -27,7 +27,7 @@ $thread = $pieces[3]; switch (true) { - case $pieces[0] === 'standard' && isset($guidChar) && isset($maxperrun) && is_numeric($maxperrun): + case $pieces[0] === 'standard' && $guidChar !== null && $maxperrun !== null && is_numeric($maxperrun): // Allow for larger filename return sets $pdo->queryExec('SET SESSION group_concat_max_len = 32768'); @@ -38,7 +38,8 @@ switch (true) { sprintf(" SELECT r.id AS releases_id, r.guid, r.groups_id, r.categories_id, r.name, r.searchname, r.proc_nfo, - r.proc_uid, r.proc_files, r.proc_par2, r.proc_sorter, r.ishashed, r.dehashstatus, r.nfostatus, + r.proc_uid, r.proc_files, r.proc_par2, r.proc_srr, r.proc_hash16k, r.proc_sorter, r.ishashed, r + .dehashstatus, r.nfostatus, r.size AS relsize, r.predb_id, IFNULL(rf.releases_id, 0) AS fileid, IF(rf.ishashed = 1, rf.name, 0) AS filehash, IFNULL(GROUP_CONCAT(rf.name ORDER BY rf.name ASC SEPARATOR '|'), '') AS filestring, @@ -65,6 +66,8 @@ switch (true) { OR r.proc_files = %d OR r.proc_uid = %d OR r.proc_par2 = %d + OR r.proc_srr = %d + OR r.proc_hash16k = %d OR ( r.nfostatus = %5\$d @@ -89,6 +92,8 @@ switch (true) { NameFixer::PROC_FILES_NONE, NameFixer::PROC_UID_NONE, NameFixer::PROC_PAR2_NONE, + NameFixer::PROC_SRR_NONE, + NameFixer::PROC_HASH16K_NONE, MiscSorter::PROC_SORTER_NONE, Category::getCategoryOthersGroup(), $maxperrun @@ -132,6 +137,30 @@ switch (true) { } $namefixer->reset(); + if ($release['proc_srr'] == NameFixer::PROC_SRR_NONE) { + echo ColorCLI::primaryOver('sr'); + $namefixer->srrNameCheck($release, true, 'SRR, ', 1, 1); + } + // Not all gate requirements in query always set column status as PP Add check is in query + $namefixer->_updateSingleColumn('proc_srr', NameFixer::PROC_SRR_DONE, $release['releases_id']); + + if ($namefixer->matched) { + continue; + } + $namefixer->reset(); + + if ($release['proc_hash16k'] == NameFixer::PROC_HASH16K_NONE && !empty($release['hash'])) { + echo ColorCLI::primaryOver('U'); + $namefixer->hashCheck($release, true, 'PAR2 hash, ', 1, 1); + } + // Not all gate requirements in query always set column status as PP Add check is in query + $namefixer->_updateSingleColumn('proc_hash16k', NameFixer::PROC_HASH16K_DONE, $release['releases_id']); + + if ($namefixer->matched) { + continue; + } + $namefixer->reset(); + if ($release['nfostatus'] == Nfo::NFO_FOUND && $release['proc_nfo'] == NameFixer::PROC_NFO_NONE) { if (!empty($release['textstring']) && !preg_match('/^=newz\[NZB\]=\w+/', $release['textstring'])) { echo ColorCLI::primaryOver('n'); @@ -160,10 +189,6 @@ switch (true) { if ($namefixer->matched === false) { echo ColorCLI::primaryOver('xf'); $namefixer->xxxNameCheck($releaseFile, true, 'Filenames, ', 1, 1); - if ($namefixer->matched === false) { - echo ColorCLI::primaryOver('e'); - $namefixer->srrNameCheck($releaseFile, true, 'Filenames, ', 1, 1); - } } } } diff --git a/nntmux/NameFixer.php b/nntmux/NameFixer.php index cb79d95c4..458b1db23 100755 --- a/nntmux/NameFixer.php +++ b/nntmux/NameFixer.php @@ -21,8 +21,10 @@ class NameFixer const PROC_PAR2_DONE = 1; const PROC_UID_NONE = 0; const PROC_UID_DONE = 1; - const PROC_HASH_NONE = 0; - const PROC_HASH_DONE = 1; + const PROC_HASH16K_NONE = 0; + const PROC_HASH16K_DONE = 1; + const PROC_SRR_NONE = 0; + const PROC_SRR_DONE = 1; // Constants for overall rename status const IS_RENAMED_NONE = 0; @@ -388,8 +390,8 @@ class NameFixer */ public function fixNamesWithSrr($time, $echo, $cats, $nameStatus, $show): void { - $this->_echoStartMessage($time, 'file names'); - $type = 'Filenames, '; + $this->_echoStartMessage($time, 'SRR file names'); + $type = 'SRR, '; if ($cats === 3) { $query = sprintf(' @@ -409,11 +411,13 @@ class NameFixer FROM releases rel INNER JOIN release_files rf ON (rf.releases_id = rel.id) WHERE (rel.isrenamed = %d OR rel.categories_id IN (%d, %d)) - AND rf.name %s', + AND rf.name %s + AND rel.proc_srr = %d', self::IS_RENAMED_NONE, Category::OTHER_MISC, Category::OTHER_HASHED, - $this->pdo->likeString('.srr', true, false) + $this->pdo->likeString('.srr', true, false), + self::PROC_SRR_NONE ); } @@ -616,21 +620,21 @@ class NameFixer rel.name, rel.name AS textstring, rel.predb_id, rel.searchname, ph.hash AS hash FROM releases rel - LEFT JOIN par_hashes ph ON ph.releases_id = rel.id - WHERE ph.releases_id IS NOT NULL + STRAIGHT_JOIN par_hashes ph ON ph.releases_id = rel.id AND rel.nzbstatus = %d AND rel.isrenamed = %d AND rel.categories_id IN (%d, %d) - AND rel.proc_par2 = %d', + AND rel.proc_hash16k = %d', NZB::NZB_ADDED, self::IS_RENAMED_NONE, Category::OTHER_MISC, Category::OTHER_HASHED, - self::PROC_PAR2_NONE + self::PROC_HASH16K_NONE ); } $releases = $this->_getReleases($time, $cats, $query); + if ($releases instanceof \Traversable) { $total = $releases->rowCount(); if ($total > 0) { @@ -667,15 +671,15 @@ class NameFixer echo ColorCLI::header($query . $this->timeother . $queryLimit . ";\n"); $releases = $this->pdo->queryDirect($query . $this->timeother . $queryLimit); } // 24 hours, all cats - else if ($time === 1 && $cats === 2) { + if ($time === 1 && $cats === 2) { echo ColorCLI::header($query . $this->timeall . $queryLimit . ";\n"); $releases = $this->pdo->queryDirect($query . $this->timeall . $queryLimit); } //other cats - else if ($time === 2 && $cats === 1) { + if ($time === 2 && $cats === 1) { echo ColorCLI::header($query . $this->fullother . $queryLimit . ";\n"); $releases = $this->pdo->queryDirect($query . $this->fullother . $queryLimit); } // all cats - else if ($time === 2 && $cats === 2) { + if ($time === 2 && $cats === 2) { echo ColorCLI::header($query . $this->fullall . $queryLimit . ";\n"); $releases = $this->pdo->queryDirect($query . $this->fullall . $queryLimit); } @@ -850,6 +854,12 @@ class NameFixer case 'UID, ': $status = 'isrenamed = 1, iscategorized = 1, proc_uid = 1,'; break; + case 'PAR2 hash, ': + $status = 'isrenamed = 1, iscategorized = 1, proc_hash16k = 1,'; + break; + case 'SRR, ': + $status = 'isrenamed = 1, iscategorized = 1, proc_srr = 1,'; + break; } $this->pdo->queryExec( sprintf(' @@ -1291,6 +1301,9 @@ class NameFixer case 'UID, ': $this->uidCheck($release, $echo, $type, $namestatus, $show); break; + case 'SRR, ': + $this->srrNameCheck($release, $echo, $type, $namestatus, $show); + break; case 'NFO, ': $this->nfoCheckTV($release, $echo, $type, $namestatus, $show); $this->nfoCheckMov($release, $echo, $type, $namestatus, $show); @@ -1318,8 +1331,13 @@ class NameFixer $this->_updateSingleColumn('proc_files', self::PROC_FILES_DONE, $release['releases_id']); break; case 'PAR2, ': + $this->_updateSingleColumn('proc_par2', self::PROC_PAR2_DONE, $release['releases_id']); + break; case 'PAR2 hash, ': - $this->_updateSingleColumn('proc_par2', self::PROC_FILES_DONE, $release['releases_id']); + $this->_updateSingleColumn('proc_hash16k', self::PROC_HASH16K_DONE, $release['releases_id']); + break; + case 'SRR, ': + $this->_updateSingleColumn('proc_srr', self::PROC_SRR_DONE, $release['releases_id']); break; case 'UID, ': $this->_updateSingleColumn('proc_uid', self::PROC_UID_DONE, $release['releases_id']); @@ -2030,7 +2048,7 @@ class NameFixer } } } - $this->_updateSingleColumn('proc_files', self::PROC_FILES_DONE, $release['releases_id']); + $this->_updateSingleColumn('proc_srr', self::PROC_SRR_DONE, $release['releases_id']); return false; } @@ -2050,8 +2068,8 @@ class NameFixer if ($this->done === false && $this->relid !== (int)$release['releases_id']) { $result = $this->pdo->queryDirect(" SELECT r.id AS releases_id, r.size AS relsize, r.name AS textstring, r.searchname, r.fromname, r.predb_id - FROM par_hashes ph - STRAIGHT_JOIN releases r ON ph.releases_id = r.id + FROM releases r + STRAIGHT_JOIN par_hashes ph ON ph.releases_id = r.id WHERE ph.hash = {$this->pdo->escapeString($release['hash'])} AND ph.releases_id != {$release['releases_id']} AND (r.predb_id > 0 OR r.anidbid > 0)" @@ -2076,7 +2094,7 @@ class NameFixer } } } - $this->_updateSingleColumn('proc_par2', self::PROC_PAR2_DONE, $release['releases_id']); + $this->_updateSingleColumn('proc_hash16k', self::PROC_HASH16K_DONE, $release['releases_id']); return false; } diff --git a/resources/db/patches/mysql/0307~releases.sql b/resources/db/patches/mysql/0307~releases.sql new file mode 100644 index 000000000..6b165a1e3 --- /dev/null +++ b/resources/db/patches/mysql/0307~releases.sql @@ -0,0 +1,9 @@ +# Add proc_srr column to releases table + +ALTER TABLE releases ADD COLUMN proc_srr TINYINT(1) NOT NULL DEFAULT '0' COMMENT 'Has the release been srr +processed'; + +# Add proc_hash16k column to releases table + +ALTER TABLE releases ADD COLUMN proc_hash16k TINYINT(1) NOT NULL DEFAULT '0' COMMENT 'Has the release been +hash16k processed'; diff --git a/resources/db/schema/mysql-ddl.sql b/resources/db/schema/mysql-ddl.sql index 70ebcd465..a75d82dce 100755 --- a/resources/db/schema/mysql-ddl.sql +++ b/resources/db/schema/mysql-ddl.sql @@ -749,6 +749,10 @@ CREATE TABLE releases ( proc_nfo TINYINT(1) NOT NULL DEFAULT '0', proc_files TINYINT(1) NOT NULL DEFAULT '0', proc_uid TINYINT(1) NOT NULL DEFAULT '0', + proc_srr TINYINT(1) NOT NULL DEFAULT '0' COMMENT 'Has the release been srr +processed', + proc_hash16k TINYINT(1) NOT NULL DEFAULT '0' COMMENT 'Has the release been hash16k +processed', PRIMARY KEY (id, categories_id), INDEX ix_releases_name (name), INDEX ix_releases_groupsid (groups_id,passwordstatus),