Skip to content

Instantly share code, notes, and snippets.

@stephenl03
Last active August 28, 2020 13:03
Show Gist options
  • Save stephenl03/298d1086f3f8a1aaa1cc29dbd1905294 to your computer and use it in GitHub Desktop.
Save stephenl03/298d1086f3f8a1aaa1cc29dbd1905294 to your computer and use it in GitHub Desktop.
<?php
/*
* This script will rename all releases posted by 'nonscene@ef.net' to the extracted filename within the rar.
* It will then reset all the values, so PostProcessing will check the release again and download all relevant info
* Written by stephenl03
* updated by Fossil01 and ThePeePs
*/
require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'bootstrap.php');
use nzedb\db\DB;
use nzedb\Categorize;
use nzedb\Category;
use nzedb\ColorCLI;
use nzedb\ConsoleTools;
use nzedb\Groups;
use nzedb\NameFixer;
$pdo = new DB();
$cat = new Categorize(['Settings' => $pdo]);
$pdo->log = new ColorCLI();
$consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]);
$fixer = new NameFixer();
$poster = "nonscene@Ef.net (EF)";
$regex = "^.*[0-9]{6}-.*$";
$count = 0;
$timestart = TIME();
echo $pdo->log->header("Getting releases to process...");
$sql = sprintf("SELECT rf.name AS textstring, rel.name, rel.searchname, rel.searchname, rel.groups_id, rel.categories_id, rel.id AS releases_id FROM releases rel INNER JOIN release_files rf ON (rf.releases_id = rel.id) WHERE nzbstatus = 1 AND predb_id = 0 AND fromname = %s AND searchname REGEXP %s;", $pdo->escapeString($poster), $pdo->escapeString($regex));
$result = $pdo->query($sql);
$cats = new Category();
$groups = new Groups();
foreach ($result as $r) {
$rts = $r['textstring'];
$rts = preg_replace("#\.[a-z0-9]{2,4}$#", "", $rts);
$searchname = sprintf("UPDATE releases SET searchname = %s WHERE id = %d;", $pdo->escapeString($rts), $r['releases_id'], $r['releases_id']);
$releases = sprintf("UPDATE releases SET consoleinfo_id = NULL, gamesinfo_id = 0, imdbid = NULL, musicinfo_id = NULL, bookinfo_id = NULL, videos_id = 0, tv_episodes_id = 0, xxxinfo_id = 0, passwordstatus = -1, haspreview = -1, jpgstatus = 0, videostatus = 0, audiostatus = 0, nfostatus = -1 WHERE id = %d", $r['releases_id']);
$resp = $pdo->queryExec($searchname);
$res = $pdo->queryExec($releases);
$catId = $cat->determineCategory($r['groups_id'], $rts);
if ($r['categories_id'] != $catId) {
$catup = $pdo->queryExec(sprintf("UPDATE releases SET iscategorized = 1, categories_id = %d WHERE id = %d", $catId, $r['releases_id']));
}
$echodata = array('new_name' => $rts, 'old_name' => $r['searchname'], 'old_category' => $cats->getNameByID($r['categories_id']), 'new_category' => $cats->getNameByID($catId), 'group' => $groups->getNameByID($r['groups_id']), 'release_id' => $r['releases_id'], 'method' => 'File Name Match');
$fixer->echoChangedReleaseName($echodata);
if ($resp && $res && $catup) {
echo $pdo->log->info("Done!");
} else {
var_dump($res);
}
$count++;
}
$poster = "yEncBin@Poster.com (yEncBin)";
$regex = "[0-9]{2}[Ee][0-9]{2}[Ss].*\.mkv$";
$regex2 = "^[A-Za-z0-9]*$";
$sql = sprintf("SELECT rf.name AS textstring, rel.name, rel.searchname, rel.id AS releases_id FROM releases rel INNER JOIN release_files rf ON (rf.releases_id = rel.id) WHERE nzbstatus = 1 AND predb_id = 0 AND fromname = %s AND rf.name REGEXP %s AND searchname REGEXP %s;", $pdo->escapeString($poster), $pdo->escapeString($regex), $pdo->escapeString($regex2));
$result = $pdo->query($sql);
foreach ($result as $r) {
$rts = $r['textstring'];
$rts = preg_replace("#\.mkv$#", "", $rts);
$rts = explode("\\", $rts);
$rts = strrev($rts[1]);
$searchname = sprintf("UPDATE releases SET searchname = %s WHERE id = %d;", $pdo->escapeString($rts), $r['releases_id'], $r['releases_id']);
$releases = sprintf("UPDATE releases SET consoleinfo_id = NULL, gamesinfo_id = 0, imdbid = NULL, musicinfo_id = NULL, bookinfo_id = NULL, videos_id = 0, tv_episodes_id = 0, xxxinfo_id = 0, passwordstatus = -1, haspreview = -1, jpgstatus = 0, videostatus = 0, audiostatus = 0, nfostatus = -1 WHERE id = %d", $r['releases_id']);
$resp = $pdo->queryExec($searchname);
$res = $pdo->queryExec($releases);
$catId = $cat->determineCategory($r['groups_id'], $rts);
if ($r['categories_id'] != $catId) {
$catup = $pdo->queryExec(sprintf("UPDATE releases SET iscategorized = 1, categories_id = %d WHERE id = %d", $catId, $r['releases_id']));
}
$echodata = array('new_name' => $rts, 'old_name' => $r['searchname'], 'old_category' => $cats->getNameByID($r['categories_id']), 'new_category' => $cats->getNameByID($catId), 'group' => $groups->getNameByID($r['groups_id']), 'release_id' => $r['releases_id'], 'method' => 'File Name Match');
$fixer->echoChangedReleaseName($echodata);
if ($resp && $res && $catup) {
echo $pdo->log->info("Done!");
} else {
var_dump($res);
}
$count++;
}
$time = $consoletools->convertTime(TIME() - $timestart);
echo $pdo->log->primary("Updated " . $count . " releases in ". $time .".");
@Fossil01
Copy link

Fossil01 commented Feb 20, 2017

Cleaned this up a bit and added SphinxUpdate. Deleted the second part (yEncBin@Poster.com (yEncBin) though as I don't need that.

<?php
/*
 * This script will rename all releases posted by 'nonscene@ef.net' to the extracted filename within the rar.
 * It will then reset all the values, so PostProcessing will check the release again and download all relevant info
 * Written by stephenl03
 * updated by Fossil01 and ThePeePs
 */

require_once realpath(dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'bootstrap.php');

use nzedb\Categorize;
use nzedb\Category;
use nzedb\ColorCLI;
use nzedb\ConsoleTools;
use nzedb\db\DB;
use nzedb\Groups;
use nzedb\NameFixer;
use nzedb\SphinxSearch;

$pdo = new DB();
$cat = new Categorize(['Settings' => $pdo]);
$pdo->log = new ColorCLI();
$consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]);
$fixer = new NameFixer();
$sphinxSearch = new SphinxSearch();
$cats = new Category();
$groups = new Groups();

$poster = "nonscene@Ef.net (EF)";
$regex = "^.*[0-9]{6}-.*$";
$count = 0;

$timestart = TIME();
echo $pdo->log->header("Getting releases to process...");
$sql = sprintf("SELECT rf.name AS textstring, rel.name, rel.searchname, rel.searchname, rel.groups_id, rel.categories_id, rel.id AS releases_id FROM releases rel INNER JOIN release_files rf ON (rf.releases_id = rel.id) WHERE nzbstatus = 1 AND predb_id = 0 AND fromname = %s AND searchname REGEXP %s;", $pdo->escapeString($poster), $pdo->escapeString($regex));
$result = $pdo->query($sql);

foreach ($result as $r) {
	$rts = $r['textstring'];
	$rts = preg_replace("#\.[a-z0-9]{2,4}$#", "", $rts);

	$searchname = sprintf("UPDATE releases SET searchname = %s, consoleinfo_id = NULL, gamesinfo_id = 0, imdbid = NULL, musicinfo_id = NULL, bookinfo_id = NULL, videos_id = 0, tv_episodes_id = 0, xxxinfo_id = 0, passwordstatus = -1, haspreview = -1, jpgstatus = 0, videostatus = 0, audiostatus = 0, nfostatus = -1 WHERE id = %d;", $pdo->escapeString($rts), $r['releases_id']);
	$resp = $pdo->queryExec($searchname);
	$search = $sphinxSearch->updateRelease($r['releases_id'], $pdo);
	$catId = $cat->determineCategory($r['groups_id'], $rts);
	if ($r['categories_id'] != $catId) {
		$catup = $pdo->queryExec(sprintf("UPDATE releases SET iscategorized = 1,	categories_id = %d WHERE id = %d", $catId, $r['releases_id']));
	}
	$echodata = array('new_name' => $rts, 'old_name' => $r['searchname'], 'old_category' => $cats->getNameByID($r['categories_id']), 'new_category' => $cats->getNameByID($catId), 'group' => $groups->getNameByID($r['groups_id']), 'release_id' => $r['releases_id'], 'method' => 'File Name Match');
	$fixer->echoChangedReleaseName($echodata);
	if ($resp && $catup) {
		echo $pdo->log->info("Done!");
	} else {
		//var_dump($catup);
	}
	$count++;
}

$time = $consoletools->convertTime(TIME() - $timestart);
echo $pdo->log->primary("Updated " . $count . " releases in " . $time . ".");

@CollinChaffin
Copy link

CollinChaffin commented Apr 11, 2017

EDIT: Spoke too soon - apparently in last few months the fixReleasenames scripts were all rewritten by someone with far better OO skills and now all call NameFixer via class.....but that also must have come with some other (as usual, undocumented) changes that affect the db queries because these fixreleasename php's here regex'ing for posters etc. simply now no longer pull db matches.....so best to avoid these completely since they are all now totally depreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment