diff --git a/misc/testing/PreDB/dump_predb.php b/misc/testing/PreDB/dump_predb.php new file mode 100644 index 000000000..16b184e7a --- /dev/null +++ b/misc/testing/PreDB/dump_predb.php @@ -0,0 +1,112 @@ +log->header("SELECT title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, g.name FROM " . $table . " p LEFT OUTER JOIN groups g ON p.groupid = g.id INTO OUTFILE '" . $path . "' FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n';n"); + $pdo->queryDirect("SELECT title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, g.name FROM " . $table . " p LEFT OUTER JOIN groups g ON p.groupid = g.id INTO OUTFILE '" . $path . "' FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n'"); +} else if (isset($argv[1]) && ($argv[1] == 'local' || $argv[1] == 'remote') && isset($argv[2]) && is_file($argv[2])) { + if (!preg_match('/^\//', $path)) { + $path = require_once getcwd() . '/' . $argv[2]; + } + if (isset($argv[3])) { + $table = $argv[3]; + } else { + $table = 'prehash'; + } + + // Truncate prehash_imports to clear any old data + $pdo->queryDirect("TRUNCATE TABLE prehash_imports"); + + // Import file into prehash_imports + if ($argv[1] == 'remote') { + echo $pdo->log->header("LOAD DATA LOCAL INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname);"); + $pdo->queryDirect("LOAD DATA LOCAL INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname)"); + } else { + echo $pdo->log->header("LOAD DATA INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\\t\\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\\r\\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname);"); + $pdo->queryDirect("LOAD DATA INFILE '" . $path . "' IGNORE into table prehash_imports FIELDS TERMINATED BY '\t\t' ENCLOSED BY \"'\" LINES TERMINATED BY '\r\n' (title, nfo, size, files, filename, nuked, nukereason, category, predate, source, requestid, groupname)"); + } + + // Remove any titles where length <=8 + echo $pdo->log->info("Deleting any records where title <=8 from Temporary Table"); + $pdo->queryDirect("DELETE FROM prehash_imports WHERE LENGTH(title) <= 8"); + + // Add any groups that do not currently exist + $sqlAddGroups = <<queryDirect($sqlAddGroups); + + // Drop triggers on prehash + echo $pdo->log->info("Dropping predb_hashes triggers"); + $pdo->queryDirect("DROP TRIGGER IF EXISTS insert_hashes"); + $pdo->queryDirect("DROP TRIGGER IF EXISTS update_hashes"); + + // Insert and update table + $sqlInsert = << 0, t.nuked, prehash.nuked), + prehash.nukereason = IF(t.nuked > 0, t.nukereason, prehash.nukereason), + prehash.category = IF(prehash.category IS NULL, t.category, prehash.category), + prehash.requestid = IF(prehash.requestid = 0, t.requestid, prehash.requestid), + prehash.groupid = IF(g.id IS NOT NULL, g.id, 0); +SQL_INSERT; + echo $pdo->log->primary($sqlInsert); + $pdo->queryDirect($sqlInsert); + + // Add hashes + echo $pdo->log->info("Adding predb_hashes entries"); + $pdo->queryDirect("INSERT IGNORE INTO predb_hashes (pre_id, hashes) (SELECT id, CONCAT_WS(',', MD5(title), MD5(MD5(title)), SHA1(title)) FROM prehash)"); + + // Re-add triggers on prehash + echo $pdo->log->info("Adding predb_hashes triggers"); + $pdo->exec("CREATE TRIGGER insert_hashes AFTER INSERT ON prehash FOR EACH ROW BEGIN INSERT INTO predb_hashes (pre_id, hashes) VALUES (NEW.id, CONCAT_WS(',', MD5(NEW.title), MD5(MD5(NEW.title)), SHA1(NEW.title))); END;"); + $pdo->exec("CREATE TRIGGER update_hashes AFTER UPDATE ON prehash FOR EACH ROW BEGIN IF NEW.title != OLD.title THEN UPDATE predb_hashes SET hashes = CONCAT_WS(',', MD5(NEW.title), MD5(MD5(NEW.title)), SHA1(NEW.title)) WHERE pre_id = OLD.id; END IF; END;"); + + $pdo->queryDirect("TRUNCATE TABLE prehash_imports"); +} else { + exit($pdo->log->error("\nThis script can export or import a prehash dump file. You may use the full path, or a relative path.\n" + . "For importing, the script insert new rows and update existing matched rows. For databases not on the local system, use remote, else use local.\n" + . "For exporting, the path must be writeable by mysql, any existing file[predb_dump.csv] will be + overwritten.\n\n" + . "php dump_predb.php export /path/to/write/to ...: To export.\n" + . "php dump_predb.php [remote | local] /path/to/filename ...: To import.\n")); +} diff --git a/newznab/build/newznab.xml b/newznab/build/newznab.xml index c92a8c819..7cfb4b21b 100644 --- a/newznab/build/newznab.xml +++ b/newznab/build/newznab.xml @@ -2,8 +2,8 @@ - 163 - 163 + 164 + 164 0.4.1 diff --git a/resources/db/patches/0164~prehash_imports.sql b/resources/db/patches/0164~prehash_imports.sql new file mode 100644 index 000000000..05800047a --- /dev/null +++ b/resources/db/patches/0164~prehash_imports.sql @@ -0,0 +1,34 @@ +DROP TABLE IF EXISTS tmp_pre; +DROP TABLE IF EXISTS prehash_imports; +CREATE TABLE prehash_imports ( + title VARCHAR(255) + COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + nfo VARCHAR(255) + COLLATE utf8_unicode_ci DEFAULT NULL, + size VARCHAR(50) + COLLATE utf8_unicode_ci DEFAULT NULL, + category VARCHAR(255) + COLLATE utf8_unicode_ci DEFAULT NULL, + predate DATETIME DEFAULT NULL, + source VARCHAR(50) + COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + requestid INT(10) UNSIGNED NOT NULL DEFAULT '0', + group_id INT(10) UNSIGNED NOT NULL DEFAULT '0' + COMMENT 'FK to groups', + nuked TINYINT(1) NOT NULL DEFAULT '0' + COMMENT 'Is this pre nuked? 0 no 2 yes 1 un nuked 3 mod nuked', + nukereason VARCHAR(255) + COLLATE utf8_unicode_ci DEFAULT NULL + COMMENT 'If this pre is nuked, what is the reason?', + files VARCHAR(50) + COLLATE utf8_unicode_ci DEFAULT NULL + COMMENT 'How many files does this pre have ?', + filename VARCHAR(255) + COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + searched TINYINT(1) NOT NULL DEFAULT '0', + groupname VARCHAR(255) + COLLATE utf8_unicode_ci DEFAULT NULL +) + ENGINE =MYISAM + DEFAULT CHARSET =utf8 + COLLATE =utf8_unicode_ci;