mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
2193 lines
56 KiB
PHP
2193 lines
56 KiB
PHP
<?php
|
|
define('FS_ROOT', realpath(dirname(__FILE__)));
|
|
require_once(FS_ROOT."/config.php");
|
|
require_once(WWW_DIR."/lib/framework/db.php");
|
|
require_once(WWW_DIR."/lib/releases.php");
|
|
require_once(WWW_DIR."/lib/movie.php");
|
|
require_once(WWW_DIR."/lib/tvrage.php");
|
|
require_once(WWW_DIR."/lib/amazon.php");
|
|
require_once(WWW_DIR."/lib/anidb.php");
|
|
require_once(WWW_DIR."/lib/nzbinfo.php");
|
|
require_once(WWW_DIR."/lib/nzb.php");
|
|
require_once(WWW_DIR."/lib/book.php");
|
|
require_once(WWW_DIR."/lib/music.php");
|
|
|
|
$qualities = array('(:?..)?tv', '480[ip]?', '640[ip]?', '720[ip]?', '1080[ip]?', 'ac3', 'audio_ts', 'avi', 'bd[\- ]?rip', 'bd25', 'bd50', 'bdmv', 'blu ?ray', 'br[\- ]?disk', 'br[\- ]?rip', 'cam', 'cam[\- ]?rip', '\bdc\b', 'directors.?cut', 'divx\d?', '\bdts', 'dvd', 'dvd[\- ]?r', 'dvd[\- ]?rip', 'dvd[\- ]?scr', 'extended', 'hd', 'hd[\- ]?tv', 'h264', 'hd[\- ]?cam', 'hd[\- ]?ts', 'iso', 'm2ts', 'mkv', 'mpeg(:?\-\d)?', 'mpg', 'ntsc', 'pal', 'proper', 'ppv', 'ppv[\- ]?rip', 'r\d{1}', 'repack\b', 'repacked', 'scr', 'screener', 'tc', 'telecine', 'telesync', 'ts', 'tv[\- ]?rip', 'unrated', 'video_ts', 'video ts', 'x264', 'xvid');
|
|
|
|
define("DEBUGGING", false);
|
|
|
|
function findbookid ($author, $title)
|
|
{
|
|
global $db;
|
|
|
|
$bookID = 0;
|
|
|
|
$book = new Book();
|
|
|
|
$author = stripname($author);
|
|
$title = stripname($title);
|
|
|
|
$tmp = explode(",", $author);
|
|
|
|
if (count($tmp) > 1)
|
|
$author = trim($tmp[1]." ".$tmp[0]);
|
|
|
|
$rel = $book->getBookInfoByName($author, $title);
|
|
|
|
echo "book1 ";
|
|
var_dump($rel);
|
|
|
|
if ($rel === false)
|
|
{
|
|
$query = "Select * from `bookinfo` WHERE `title` LIKE '%".$title."%' AND ID in (SELECT ID FROM `bookinfo` WHERE `author` sounds LIKE '".$author."')";
|
|
$rel = $db->query($query);
|
|
|
|
echo "book2 ";
|
|
var_dump($rel);
|
|
|
|
if (isset($rel[0]["ID"]))
|
|
{
|
|
$bookID = $rel[0]["ID"];
|
|
} else {
|
|
|
|
$bookID = $book->updateBookInfo($author, $title);
|
|
}
|
|
} else {
|
|
$bookID = $rel['ID'];
|
|
}
|
|
unset($book);
|
|
echo "book ".$bookID."\n";
|
|
return $bookID;
|
|
}
|
|
|
|
|
|
function findmusicname($row, $cat = 3010)
|
|
{
|
|
global $db;
|
|
$ok = false;
|
|
|
|
$query = "SELECT * FROM releases WHERE ( releases.passwordstatus < 0 AND releases.haspreview < 0 ) AND ID = ".$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
if ($rel !== false)
|
|
return false;
|
|
|
|
$query = "SELECT releasevideo.releaseID FROM releasevideo WHERE releasevideo.releaseID = ".$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
if ($rel !== false)
|
|
return false;
|
|
|
|
$query = "SELECT releasefiles.releaseID, releasefiles.`name` FROM releasefiles INNER JOIN releases ON releasefiles.releaseID = releases.ID WHERE releases.ID = ".$row['ID']." order by releasefiles.`name`";
|
|
$rel = $db->query($query);
|
|
|
|
$name = '';
|
|
$ok = false;
|
|
|
|
$m3u = '';
|
|
$alt = '';
|
|
$mp3 = false;
|
|
$mp3name = '';
|
|
$files = 0;
|
|
$extras = 0;
|
|
$folder = '';
|
|
$bookId = 0;
|
|
$musicId = 0;
|
|
|
|
|
|
if (count($rel) > 0)
|
|
{
|
|
echo "findmusicname ".$row['ID']." ".count($rel)."\n";
|
|
foreach($rel as $r)
|
|
{
|
|
$sub = $r['name']."\n";
|
|
|
|
$sub = preg_replace('/[\x01-\x1f]/', '', $sub);
|
|
|
|
$sub = preg_replace('/(?<!\d)\.(?!(.{3,4}$))/', ' ', $sub);
|
|
|
|
$a = preg_replace('/[\/\_]/', ' ', $row['name']);
|
|
|
|
$sub = preg_replace("/".preg_quote($a)."/i",'', $sub);
|
|
|
|
if ($folder != '')
|
|
{
|
|
$sub = preg_replace("/".preg_quote($folder)."/i",'', $sub);
|
|
$sub = preg_replace("/^\\\\/i",'', $sub);
|
|
}
|
|
|
|
// $sub = preg_replace("/^([^\\\\]+?)[^\\\\]*[\\\\](.*\1)/Ui",'\\2', $sub);
|
|
|
|
echo "doing music file = $sub\n";
|
|
|
|
if (preg_match('/(\nfo\b|sfv)/iU', $sub))
|
|
{
|
|
$extras++;
|
|
$alt = preg_replace('/(\.[a-z][a-z0-9]{2})+?$/iU', '', $sub);
|
|
} elseif (!preg_match('/(\.[a-z][a-z0-9]{2,3}?$)/iU', $sub)) {
|
|
$extras++;
|
|
$folder = preg_replace('/\\\\$/', '', $sub);
|
|
}
|
|
|
|
if (preg_match('/\.mp3/', $sub, $matches))
|
|
{
|
|
$mp3name = preg_replace('/(?iU)^[^\"]+\"(0\d+?-?(00)??)??/iU', '', $sub);
|
|
|
|
$mp3 = true;
|
|
$files++;
|
|
}
|
|
|
|
if (preg_match('/\.m3u|\"00+[ \-\_\.]+?|\.nfo\b|\.sfv/iU', $sub, $matches))
|
|
{
|
|
if (preg_match('/\.url|playlist/iU', $sub))
|
|
{
|
|
continue;
|
|
}
|
|
$sub = preg_replace('/(\.vol\d{1,3}?\+\d{1,3}?|\.par2|\.[a-z][a-z0-9]{2})+?/iU', '', $sub);
|
|
|
|
$m3u = preg_replace('/00+?[\-\.](.+[a-z][a-z0-9]{2,3})$/iU', '', $sub);
|
|
}
|
|
}
|
|
$name = '';
|
|
|
|
|
|
echo "folder $folder\n";
|
|
|
|
echo "$m3u $mp3name\n";
|
|
|
|
echo (($m3u != '' || ($files + $extras) / count($rel) > 0.7) && $mp3)." ".$mp3." ".$m3u."\n";
|
|
|
|
if (($m3u != '' || (($files + $extras) / count($rel) > 0.7)) && $mp3)
|
|
{
|
|
$name = $m3u;
|
|
|
|
if ($files == 1)
|
|
$name = $mp3name;
|
|
|
|
if (empty($name))
|
|
{
|
|
$name = matchnames($row['name'], $alt);
|
|
}
|
|
|
|
echo $row['guid']." ".$name.' '.$mp3.' '.($files + $extras) / count($rel)."\n";
|
|
}
|
|
|
|
|
|
// if (preg_match('/\.mp3|\.m3u|\.sfv|\.nfo|\.flac/|\.asf/', $r['name']))
|
|
// echo "release file ".$r['name']."\n";
|
|
|
|
$name = preg_replace("/^\d+\-/i", '', $name);
|
|
$name = trim(preg_replace("/\\\\|^ +| +$/i", ' ', $name));
|
|
|
|
echo "file name $name\n";
|
|
|
|
} else {
|
|
$name = domusicfiles ($row);
|
|
}
|
|
|
|
echo "found name $name\n";
|
|
|
|
if ($name != '')
|
|
{
|
|
$music = new Music();
|
|
$result = $music->parseArtist($name);
|
|
$artist = $result['artist'];
|
|
$album = $result['album'];
|
|
|
|
if (empty($album) && empty($artist))
|
|
$album = $name;
|
|
|
|
echo "1artist = $artist album = $album\n";
|
|
|
|
$album = stripname($album);
|
|
$artist = stripname($artist);
|
|
|
|
$artist = preg_replace('/\d+/', '', $artist);
|
|
|
|
$tmp = explode(",", $artist);
|
|
|
|
if (count($tmp) > 1)
|
|
$artist = trim($tmp[1]." ".$tmp[0]);
|
|
|
|
|
|
echo "2artist = $artist album = $album\n";
|
|
|
|
$rel = $music->getMusicInfoByName($artist, $album);
|
|
// var_dump($rel);
|
|
$musicId = $rel['ID'];
|
|
|
|
if ($musicId <= 1)
|
|
{
|
|
echo "amazon music1 ";
|
|
$musicId = $music->updateMusicInfo($artist, $album, 0);
|
|
|
|
if ($musicId === false)
|
|
{
|
|
// $book = new Book(true);
|
|
// $bookId = $book->updateBookInfo($artist, $album);
|
|
// unset($book);
|
|
$bookId = findbookid ($artist, $album);
|
|
}
|
|
//var_dump($musicId);
|
|
}
|
|
echo "music name: $name $musicId $bookId\n";
|
|
if ($musicId > 1)
|
|
{
|
|
$ok = dodbupdate($row['ID'], $cat, $name, $musicId, 'music');
|
|
} else if ($bookId > 0) {
|
|
$ok = dodbupdate($row['ID'], 3030, $name, $bookId, 'book');
|
|
} else {
|
|
if (preg_match('/book/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 3030, $name);
|
|
else
|
|
$ok = dodbupdate($row['ID'], $cat, $name);
|
|
}
|
|
|
|
unset($music);
|
|
}
|
|
return $ok;
|
|
}
|
|
|
|
function stripname($name)
|
|
{
|
|
|
|
global $qualities;
|
|
|
|
$quality = preg_replace('/(.+?)/iU', "/\b\\1\b.*?$/iU", $qualities);
|
|
|
|
// var_dump($quality);
|
|
|
|
$name1 = $name;
|
|
|
|
do {
|
|
$original = $name1;
|
|
// echo "fm1: $name1\n";
|
|
$name1 = preg_replace($quality, " ", $name1);
|
|
$name1 = preg_replace('/(as )?(requested|request|req):?/i', " ", $name1);
|
|
$name1 = preg_replace('/Thanks To Original Poster/i', " ", $name1);
|
|
$name1 = preg_replace('/\b[a-z]{1,2}[0-9]{1,2} /i', " ", $name1);
|
|
$name1 = preg_replace('/^\d+|\d+$/', '', $name1);
|
|
$name1 = preg_replace('/\battn:? [^ ]+\b/i', " ", $name1);
|
|
$name1 = preg_replace('/^National.?Geographic|^nat.?geo|^bbc/i', " ", $name1);
|
|
$name1 = preg_replace("/\.?(s\d+?e\d+?)\.?/iU", " \\1 ", $name1);
|
|
$name1 = preg_replace("/^(\[\d+\].\[.+\].(\[#?a.b.[^\]]+\])*?.)/iU", "", $name1);
|
|
$name1 = preg_replace("/\[(?![^\[]+\])|\((?![^\(]+\))|\{(?![^\{]+\})/iU", " ", $name1);
|
|
$name1 = preg_replace("/^\(?\?+?\)/iU", " ", $name1);
|
|
$name1 = preg_replace("/[\x01-\x1f\_\!\?\[\{\}\]\/\:\|]/iU", " ", $name1);
|
|
$name1 = preg_replace("/(?<![a-z0-9])(\.)(?!\.[0-9])/iU", " ", $name1);
|
|
$name1 = preg_replace("/(?<=[a-z])(\.)(?!\.[0-9])/iU", " ", $name1);
|
|
$name1 = preg_replace("/[\[\{\(]??\d{1,4}?\/\d{1,4}?[\]\}\)]??/iU", "", $name1);
|
|
$name1 = preg_replace("/^[\?\)\,\.\- \"\']+|[\,\(\?\.\- \"\']+$/iU", "", $name1);
|
|
$name1 = preg_replace("/ +?/iU", " ", $name1);
|
|
$name1 = trim($name1);
|
|
// echo "fm2: $name1\n";
|
|
} while ($original != $name1);
|
|
|
|
echo "stripname $name1\n";
|
|
echo cleanname($name1)."\n";
|
|
|
|
return $name1;
|
|
}
|
|
|
|
function lookupTV ($namebase = '', $nfo, $row, $cat = 5050)
|
|
{
|
|
global $db;
|
|
|
|
$rageID = false;
|
|
|
|
$ok = false;
|
|
|
|
$tmp = array();
|
|
|
|
$name = $namebase;
|
|
|
|
$name = stripname($name);
|
|
|
|
$tvrage = new TvRage();
|
|
if ($name != '')
|
|
{
|
|
$name = cleanname($name);
|
|
|
|
echo "title = ".$name."\n";
|
|
|
|
$showinfo = $tvrage->parseNameEpSeason($name);
|
|
|
|
if (empty($showinfo['cleanname']))
|
|
{
|
|
$showinfo['name'] = $name;
|
|
$showinfo['cleanname'] = $name;
|
|
}
|
|
|
|
echo "clean ".$showinfo['cleanname']."\n";
|
|
|
|
$rageID = $tvrage->getByTitle($showinfo['cleanname']);
|
|
|
|
}
|
|
|
|
// echo "1 $name\n";
|
|
|
|
if ($rageID == false)
|
|
{
|
|
$rageID = $tvrage->parseRageIdFromNfo($nfo);
|
|
|
|
$name1 = $tvrage->getRageInfoFromService($rageID);
|
|
// var_dump($name1);
|
|
if (isset($name1['name']) && $name1['name'] != '')
|
|
$name = $name1['name'];
|
|
else
|
|
{
|
|
if (!isset($showinfo['cleanname']))
|
|
$showinfo = $tvrage->parseNameEpSeason($name);
|
|
$showInfo1 = array(
|
|
'name' => '',
|
|
'season' => '',
|
|
'episode' => '',
|
|
'seriesfull' => '',
|
|
'airdate' => '',
|
|
'country' => '',
|
|
'year' => '',
|
|
'cleanname' => ''
|
|
);
|
|
foreach ($showInfo1 as $k => $v)
|
|
if (isset($showinfo[$k]))
|
|
$showInfo1[$k] = $showinfo[$k];
|
|
$showinfo = $showInfo1;
|
|
echo "calling rage $name\n";
|
|
// var_dump($showinfo);
|
|
try {
|
|
$tvrShow = $tvrage->getRageMatch($showinfo);
|
|
// var_dump($tvrShow);
|
|
if (isset($tvrShow["showid"]))
|
|
$rageID = $tvrShow["showid"];
|
|
// echo "$rageID \n";
|
|
} catch (Exception $e) {
|
|
echo 'Caught exception: ', $e->getMessage(), "\n";
|
|
}
|
|
}
|
|
$tvrage->updateRageInfo($rageID, $showinfo, $tvrShow, null);
|
|
}
|
|
|
|
// echo "2 $name\n";
|
|
|
|
if ($rageID == false)
|
|
{
|
|
$query = "SELECT * FROM releases WHERE ( releases.passwordstatus < 0 AND releases.haspreview < 0 ) AND ID = ".$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
if ($rel !== false)
|
|
return false;
|
|
|
|
$query = "SELECT releasevideo.releaseID FROM releasevideo WHERE releasevideo.releaseID = ".$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
if ($rel === false)
|
|
return false;
|
|
|
|
$query = "SELECT releasefiles.releaseID, releasefiles.`name` FROM releasefiles INNER JOIN releases ON releasefiles.releaseID = releases.ID WHERE releases.ID = ".$row['ID'];
|
|
$rel = $db->query($query);
|
|
|
|
foreach($rel as $r)
|
|
{
|
|
$name1 = preg_replace('/(?<!\d)[\.\_]/', ' ', $r['name']);
|
|
|
|
// echo $name1."\n";
|
|
|
|
$parsed = $tvrage->parseNameEpSeason($name1);
|
|
|
|
// var_dump($parsed);
|
|
|
|
$rageID = $tvrage->getByTitle($parsed['cleanname']);
|
|
|
|
if ($rageID == false)
|
|
{
|
|
if ($parsed)
|
|
$name1 = $parsed['cleanname'];
|
|
$sql = sprintf("SELECT rageID from tvrage where (releasetitle = %s or releasetitle = %s)", $db->escapeString($name1), $db->escapeString(str_replace(' and ', ' & ', $name1)));
|
|
|
|
$sql = str_replace(" = '", " like '%", $sql);
|
|
$sql = str_replace("' or", "%' or", $sql);
|
|
$sql = str_replace("')", "%')", $sql);
|
|
|
|
// echo "$sql\n";
|
|
|
|
$res = $db->queryOneRow($sql);
|
|
if ($res)
|
|
$rageID = $res["rageID"];
|
|
}
|
|
}
|
|
if ($rageID != 0 && $name1 != '')
|
|
$name = $name1;
|
|
}
|
|
|
|
$tmp = $tvrage->getByRageID($rageID);
|
|
|
|
// echo "ltvrageid = $rageID\n";
|
|
// var_dump($tmp);
|
|
|
|
if (!isset($tmp[0]))
|
|
{
|
|
|
|
$name = preg_replace('/[\_\.]|bbc|nat.?geo|national.?geographic/i', " ", $name1);
|
|
// $name = preg_replace('/(19|20)\d{2}.*$/i', " ", $name);
|
|
$name = preg_replace('/\d{1,3} ?of ?\d{1,3}.*$/i', " ", $name);
|
|
$name = preg_replace('/^[\]\}\)]|[\[\{\(]/i', "", $name);
|
|
$name = trim($name);
|
|
|
|
echo "name == $name\n";
|
|
$showinfo = $tvrage->parseNameEpSeason($name);
|
|
if (!isset($showinfo['cleanname']))
|
|
$showinfo = array(
|
|
'name' => $name,
|
|
'season' => '',
|
|
'episode' => '',
|
|
'seriesfull' => '',
|
|
'airdate' => '',
|
|
'country' => '',
|
|
'year' => '',
|
|
'cleanname' => $name
|
|
);
|
|
|
|
|
|
|
|
try {
|
|
$tvrShow = $tvrage->getRageMatch($showinfo);
|
|
if (isset($tvrShow["showid"]))
|
|
$rageID = $tvrShow["showid"];
|
|
} catch (Exception $e) {
|
|
echo 'Caught exception: ', $e->getMessage(), "\n";
|
|
}
|
|
// var_dump($tvrShow);
|
|
if ($tvrShow === false)
|
|
{
|
|
$name1 = preg_replace('/(\D+?)( s?\d{1,3}?(?!\d).*?)/iU', '\1', $name);
|
|
$showinfo = $tvrage->parseNameEpSeason($name1);
|
|
if (!isset($showinfo['cleanname']))
|
|
$showinfo = array(
|
|
'name' => $name1,
|
|
'season' => '',
|
|
'episode' => '',
|
|
'seriesfull' => '',
|
|
'airdate' => '',
|
|
'country' => '',
|
|
'year' => '',
|
|
'cleanname' => $name1
|
|
);
|
|
echo "$name1\n";
|
|
$tvrShow = $tvrage->getRageMatch($showinfo);
|
|
// var_dump($tvrShow);
|
|
if ($tvrShow !== false)
|
|
{
|
|
if (isset($tvrShow["showid"]))
|
|
$rageID = $tvrShow["showid"];
|
|
}
|
|
}
|
|
|
|
if (($tvrShow !== false && is_array($tvrShow) && $tvrShow['title'] == $name) || $rageID)
|
|
{
|
|
$showinfo['name'] = $tvrShow["title"];
|
|
$showinfo['cleanname'] = $tvrShow["title"];
|
|
if ($rageID != 0)
|
|
$tvrage->updateRageInfo($rageID, $showinfo, $tvrShow, NULL);
|
|
}
|
|
$tmp = $tvrage->getByRageID($rageID);
|
|
}
|
|
|
|
if (isset($tmp[0]))
|
|
{
|
|
// echo "rageID = $rageID\n";
|
|
// echo "title = ".$tmp[0]['releasetitle']."\n";
|
|
// var_dump($tmp);
|
|
|
|
$show = $tvrage->parseNameEpSeason($tmp[0]["releasetitle"]." ".$row['searchname']);
|
|
// var_dump($tvrage->getEpisodeInfo($rageID, $show['season'], $show['episode']));
|
|
|
|
$name = matchnames($row['name'], $tmp[0]['releasetitle']." ".$show['seriesfull']);
|
|
|
|
$name = findquality ($nfo, $name);
|
|
|
|
if (dodbupdate($row['ID'], $cat, $name, $rageID, 'tv'))
|
|
{
|
|
if (is_array($show) && $show['name'] != '')
|
|
{
|
|
// $tvrage->updateEpInfo($show, $row['ID']);
|
|
}
|
|
$ok = $rageID;
|
|
}
|
|
}
|
|
|
|
unset($tvrage);
|
|
return $ok;
|
|
}
|
|
|
|
function cleanname($name)
|
|
{
|
|
global $qualities;
|
|
|
|
$quality = preg_replace('/(.+?)/iU', "/\.*?(\b\\1\b)\.*?/iU", $qualities);
|
|
|
|
do {
|
|
$original = $name;
|
|
// echo "CN: $name\n";
|
|
$name = preg_replace($quality, " \\1 ", $name);
|
|
$name = preg_replace("/\.?(s\d+?e\d+?)\.?/iU", " \\1 ", $name);
|
|
$name = preg_replace("/yenc/iU", " ", $name);
|
|
$name = preg_replace("/^(\[\d+\].\[.+\].(\[#?a.b.[^\]]+\])*?.)/iU", "", $name);
|
|
$name = preg_replace("/\[(?![^\[]+\])|\((?![^\(]+\))|\{(?![^\{]+\})/iU", " ", $name);
|
|
$name = preg_replace("/^\(?\?+?\)/iU", " ", $name);
|
|
$name = preg_replace("/[\x01-\x1f\_\!\?\[\{\}\]\/\:\|]/iU", " ", $name);
|
|
$name = preg_replace("/(?<![a-z0-9])(\.)(?!\.[0-9])/iU", " ", $name);
|
|
$name = preg_replace("/(?<=[a-z])(\.)(?!\.[0-9])/iU", " ", $name);
|
|
$name = preg_replace("/[\[\{\(]??\d{1,4}?\/\d{1,4}?[\]\}\)]??/iU", "", $name);
|
|
$name = preg_replace("/^[\?\)\,\.\- ]+|[\,\(\?\.\- ]+$/iU", "", $name);
|
|
$name = preg_replace("/ +?/iU", " ", $name);
|
|
$name = trim($name);
|
|
|
|
// echo "$original * O* *N * $name\n";
|
|
|
|
} while ($original != $name);
|
|
$name = mb_convert_case($name, MB_CASE_TITLE, "UTF-8");
|
|
|
|
// echo "CN2: $name\n";
|
|
|
|
$tmp = explode(" ", $name);
|
|
|
|
if (!stripos($name, ' -*- '))
|
|
for ($i = 0; $i < count($tmp); $i++) {
|
|
for ($j = $i +3; $j < count($tmp); $j++) {
|
|
if ($tmp[$i] == $tmp[$j])
|
|
$tmp[$j] = '';
|
|
}
|
|
}
|
|
|
|
$name = implode(' ', $tmp);
|
|
$name = preg_replace("/ +?/iU", " ", $name);
|
|
$name = trim($name);
|
|
|
|
// echo "CN3: $name\n";
|
|
|
|
return $name;
|
|
}
|
|
function matchnames($old, $new)
|
|
|
|
{
|
|
if (is_array($old))
|
|
$old = '';
|
|
|
|
$new = cleanname($new);
|
|
$old = cleanname($old);
|
|
|
|
$new = preg_quote($new);
|
|
$old = preg_quote($old);
|
|
|
|
// echo "new = $new\n";
|
|
// echo "old = $old\n";
|
|
|
|
$arr = preg_split('/[\s\(\)\_\\\\]/', $new, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
if (str_word_count($old) < 2)
|
|
{
|
|
echo "una palabra ".$old."\n";
|
|
}
|
|
|
|
$str = $old;
|
|
$i = 0;
|
|
|
|
$str = preg_replace('/[\s\(\)\_\\\\]/', ' ', $str);
|
|
|
|
|
|
// echo "$str\n";
|
|
// echo implode($arr, " ")."\n";
|
|
|
|
foreach ($arr as $r)
|
|
{
|
|
if (preg_match('/^[\-\*]$/', $r))
|
|
continue;
|
|
// echo "$str $r\n";
|
|
$str = preg_replace("/\b".preg_quote($r)."\b/i", " ", $str);
|
|
}
|
|
|
|
$str = trim($new." ".$str);
|
|
|
|
do {
|
|
$str1 = $str;
|
|
$str = str_ireplace("\\", "", $str);
|
|
$str = preg_replace("/([\{\[\(] ?)?( ?[\]\}\)])?/iU", "", $str);
|
|
$str = preg_replace("/ [0-9a-f]{5,}$/iU", "", $str);
|
|
$str = preg_replace("/ +/", " ", $str);
|
|
$str = trim($str);
|
|
} while ($str != $str1);
|
|
|
|
// echo "CNF $str\n";
|
|
return $str;
|
|
}
|
|
|
|
function updateTV ($name, $id, $row, $cat = 5000, $nfo = '')
|
|
{
|
|
global $db, $tvrage;
|
|
|
|
$ok = false;
|
|
|
|
$set = preg_split('/(?:\btitle|\bname).+[\.\s]+?[^a-z0-9]*?([a-z0-9\-\.\_ ]+?)/iU', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
|
|
|
|
// var_dump($set);
|
|
|
|
$name1 = $name;
|
|
|
|
if (isset($set[1]))
|
|
{
|
|
$name1 = $set[1];
|
|
}
|
|
|
|
$name1 = preg_replace('/[\-\.\_]/iU', ' ', $name1);
|
|
$name1 = preg_replace('/ +/iU', ' ', $name1);
|
|
$name1 = trim($name1);
|
|
|
|
$rageID = lookupTV ($name1, $nfo, $row, $cat);
|
|
|
|
if ($rageID != 0)
|
|
{
|
|
$tvrage = new TVRage(true);
|
|
$name1 = $tvrage->getByRageID($rageID);
|
|
unset($tvrage);
|
|
|
|
$name1 = $name1[0]["releasetitle"];
|
|
|
|
$name = matchnames($row['name'], $name1);
|
|
|
|
echo "doing tv1 ".$name." ".$row['guid']."\n";
|
|
|
|
$ok = dodbupdate($id, $cat, $name, $rageID, 'tv');
|
|
|
|
} else {
|
|
|
|
//echo "$name $name1\n";
|
|
|
|
$name = matchnames($row['name'], $name1);
|
|
|
|
echo "doing tv2 ".$name." ".$row['guid']."\n";
|
|
|
|
// $matches = preg_split('/(\btitle\:|\bname=)[ \.\_]*?(.*)\r/iU', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
// echo $matches[1]."\n";
|
|
|
|
if (empty($name))
|
|
{
|
|
$ok = dodbupdate($id, $cat, '');
|
|
} else {
|
|
$ok = dodbupdate($id, $cat, $name);
|
|
}
|
|
}
|
|
return $ok;
|
|
}
|
|
|
|
function doAmazon ($name, $id, $nfo = "", $q, $region = 'com', $upc = false, $nfo ='', $row = '')
|
|
{
|
|
global $db;
|
|
$s = new Sites();
|
|
$site = $s->get();
|
|
$amazon = new AmazonProductAPI($site->amazonpubkey, $site->amazonprivkey, $site->amazonassociatetag);
|
|
$ok = false;
|
|
|
|
|
|
try {
|
|
if ($upc)
|
|
{
|
|
$amaz = $amazon->getItemByUpc(trim($q), $region);
|
|
} else {
|
|
$amaz = $amazon->getItemByAsin(trim($q), $region);
|
|
}
|
|
} catch (Exception $e) {
|
|
echo 'Caught exception: ', $e->getMessage(), "\n";
|
|
unset($s);
|
|
unset($amaz);
|
|
unset($amazon);
|
|
return $ok;
|
|
}
|
|
|
|
$type = $amaz->Items->Item->ItemAttributes->ProductGroup;
|
|
|
|
switch ($type)
|
|
{
|
|
case 'Book':
|
|
$new = (string) $amaz->Items->Item->ItemAttributes->Author;
|
|
$new = $new . " - ". (string) $amaz->Items->Item->ItemAttributes->Title;
|
|
$name = matchnames($name, $new);
|
|
|
|
$query = "SELECT ID FROM `bookinfo` WHERE `asin` = '".(string) $amaz->Items->Item->ASIN."'";
|
|
$rel = $db->query($query);
|
|
if (count($rel) == 0)
|
|
{
|
|
$book = new Book();
|
|
$item = array();
|
|
$item["asin"] = (string) $amaz->Items->Item->ASIN;
|
|
$item["url"] = (string) $amaz->Items->Item->DetailPageURL;
|
|
$item["coverurl"] = (string) $amaz->Items->Item->LargeImage->URL;
|
|
if ($item['coverurl'] != "")
|
|
$item['cover'] = 1;
|
|
else
|
|
$item['cover'] = 0;
|
|
$item["author"] = (string) $amaz->Items->Item->ItemAttributes->Author;
|
|
$item["dewey"] = (string) $amaz->Items->Item->ItemAttributes->DeweyDecimalNumber;
|
|
$item["ean"] = (string) $amaz->Items->Item->ItemAttributes->EAN;
|
|
$item["isbn"] = (string) $amaz->Items->Item->ItemAttributes->ISBN;
|
|
$item["publisher"] = (string) $amaz->Items->Item->ItemAttributes->Publisher;
|
|
$item["publishdate"] = (string) $amaz->Items->Item->ItemAttributes->PublicationDate;
|
|
$item["pages"] = (string) $amaz->Items->Item->ItemAttributes->NumberOfPages;
|
|
$item["title"] = (string) $amaz->Items->Item->ItemAttributes->Title;
|
|
$item["review"] = "";
|
|
if (isset($amaz->Items->Item->EditorialReviews))
|
|
$item["review"] = trim(strip_tags((string) $amaz->Items->Item->EditorialReviews->EditorialReview->Content));
|
|
|
|
$bookId = $book->addUpdateBookInfo($item['title'], $item['asin'], $item['url'],
|
|
$item['author'], $item['publisher'], $item['publishdate'], $item['review'],
|
|
$item['cover'], $item['dewey'], $item['ean'], $item['isbn'], $item['pages'] );
|
|
unset($book);
|
|
} else {
|
|
$bookId = $rel[0]['ID'];
|
|
}
|
|
|
|
|
|
$query = "SELECT * FROM releases INNER JOIN releaseaudio ON releases.ID = releaseaudio.releaseID WHERE releases.ID = $id";
|
|
$rel = $db->query($query);
|
|
if (count($rel) == 0)
|
|
{
|
|
$ok = dodbupdate($id, 7020, $name, $bookId, 'book');
|
|
} else {
|
|
$ok = dodbupdate($id, 3030, $name, $bookId, 'book');
|
|
}
|
|
unset($rel);
|
|
break;
|
|
|
|
case 'Digital Music Track':
|
|
case 'Digital Music Album':
|
|
case 'Music':
|
|
$new = (string) $amaz->Items->Item->ItemAttributes->Artist;
|
|
if ($new != '')
|
|
$new = $new . " - ";
|
|
$new = $new .(string) $amaz->Items->Item->ItemAttributes->Title;
|
|
$name = matchnames($name, $new);
|
|
|
|
$query = "SELECT * FROM `bookinfo` WHERE `asin` = '".(string) $amaz->Items->Item->ASIN."'";
|
|
|
|
// echo "$query\n";
|
|
$rel = $db->query($query);
|
|
if (count($rel) == 0)
|
|
{
|
|
$mus = array();
|
|
$mus['coverurl'] = (string) $amaz->Items->Item->LargeImage->URL;
|
|
if ($mus['coverurl'] != "")
|
|
$mus['cover'] = 1;
|
|
else
|
|
$mus['cover'] = 0;
|
|
|
|
$mus['title'] = (string) $amaz->Items->Item->ItemAttributes->Title;
|
|
|
|
$mus['asin'] = (string) $amaz->Items->Item->ASIN;
|
|
|
|
$mus['url'] = (string) $amaz->Items->Item->DetailPageURL;
|
|
|
|
$mus['salesrank'] = (string) $amaz->Items->Item->SalesRank;
|
|
if (empty($mus['salesrank']))
|
|
$mus['salesrank'] = 'null';
|
|
|
|
$mus['artist'] = (string) $amaz->Items->Item->ItemAttributes->Artist;
|
|
|
|
$mus['publisher'] = (string) $amaz->Items->Item->ItemAttributes->Publisher;
|
|
|
|
$mus['releasedate'] = $db->escapeString((string) $amaz->Items->Item->ItemAttributes->ReleaseDate);
|
|
if ($mus['releasedate'] == "''")
|
|
$mus['releasedate'] = 'null';
|
|
|
|
$mus['review'] = '';
|
|
if (isset($amaz->Items->Item->EditorialReviews))
|
|
$mus['review'] = trim(strip_tags((string) $amaz->Items->Item->EditorialReviews->EditorialReview->Content));
|
|
|
|
$mus['year'] = ($mus['releasedate'] != 'null' ? substr($mus['releasedate'], 1, 4) : date("Y"));
|
|
|
|
$mus['tracks'] = '';
|
|
if (isset($amaz->Items->Item->Tracks))
|
|
{
|
|
$tmpTracks = (array) $amaz->Items->Item->Tracks->Disc;
|
|
$tracks = $tmpTracks['Track'];
|
|
$mus['tracks'] = (is_array($tracks) && !empty($tracks)) ? implode('|', $tracks) : '';
|
|
}
|
|
|
|
$music = new Music();
|
|
$musicId = $music->addUpdateMusicInfo($mus['title'], $mus['asin'], $mus['url'],
|
|
$mus['salesrank'], $mus['artist'], $mus['publisher'], $mus['releasedate'], $mus['review'],
|
|
$mus['year'],'', $mus['tracks'], $mus['cover'] );
|
|
|
|
unset($music);
|
|
} else {
|
|
$musicId = $rel[0]['ID'];
|
|
}
|
|
|
|
$ok = dodbupdate($id, 3010, $name, $musicId, 'music');
|
|
break;
|
|
|
|
case 'Movies':
|
|
case 'DVD':
|
|
$new = (string) $amaz->Items->Item->ItemAttributes->Title;
|
|
$new = $new . " (" . substr((string) $amaz->Items->Item->ItemAttributes->ReleaseDate, 0, 4) . ")";
|
|
$name = matchnames($name, $new);
|
|
|
|
$ok = matchimdb ($nfo, $row);
|
|
|
|
if (!$ok)
|
|
{
|
|
$name = findquality ($nfo, $name);
|
|
$ok = dodbupdate($id, 2000, $name);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
echo "* * * * * * uncatched amazon category $type ".$name;
|
|
break;
|
|
}
|
|
//echo $query."\n";
|
|
|
|
unset($s);
|
|
unset($amaz);
|
|
unset($amazon);
|
|
return $ok;
|
|
}
|
|
|
|
function doarray($matches)
|
|
{
|
|
$r = array();
|
|
|
|
foreach ($matches as $m)
|
|
{
|
|
if (strlen($m) < 50)
|
|
{
|
|
$str = preg_replace("/\s/iU", "", $m);
|
|
|
|
$m = strtolower($str);
|
|
|
|
if ($m == 'audiobook') {
|
|
$r[-1] = $m;
|
|
} else if ($m == 'anidb.net') {
|
|
$r[-2] = $m;
|
|
} else if ($m == 'upc') {
|
|
$r[-3] = $m;
|
|
} else if ($m == 'amazon.') {
|
|
$r[-4] = $m;
|
|
} else if ($m == 'asin') {
|
|
$r[-5] = $m;
|
|
} else if ($m == 'imdb') {
|
|
$r[-6] = $m;
|
|
} else if ($m == 'os') {
|
|
$r[-7] = $m;
|
|
} else if ($m == 'mac' || $m == 'macintosh' || $m == 'dmg' || $m == 'macos' || $m == 'macosx' || $m == 'osx') {
|
|
$r[-8] = $m;
|
|
} else if ($m == 'itunes.apple.com/') {
|
|
$r[-9] = $m;
|
|
} else if (preg_match('/sports|deportes|nhl|nfl|\bnba/i', $m)) {
|
|
$r[1000] = $m;
|
|
} else if (preg_match('/avi|xvid|divx|mkv/i', $m)) {
|
|
$r[1001] = $m;
|
|
} else {
|
|
$r[] = $m;
|
|
}
|
|
}
|
|
}
|
|
|
|
ksort($r);
|
|
return $r;
|
|
}
|
|
|
|
function doOS ($nfo, $name, $cat, $id)
|
|
{
|
|
global $db;
|
|
|
|
$ok = false;
|
|
|
|
$pattern = '/(.*v(?:er)?[\.\s]*?\d+\.\d(?:\.\d+)??[^\v]*?)|(?<!fine )(?:\btitle|\bname|release)\b(?! type| info(?:rmation)?| date)(?:[\-\:\.\}\[\s\xb0-\x{3000}]+?)\B([a-z0-9\.\- \(\)]+?)/Uui';
|
|
$set = preg_split($pattern, $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
if (!isset($set[1]) || strlen($set[1]) < 3)
|
|
{
|
|
$pattern = '/(?:(?:presents?|p +r +e +s +e +n +t +s)(?:[^a-z0-9]+?))([a-z0-9 \.\-\_]+?)/Ui';
|
|
$set = preg_split($pattern, $nfo, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
|
|
}
|
|
|
|
if (isset($set[1]))
|
|
{
|
|
$name = matchnames($name, $set[1]);
|
|
|
|
$ok = dodbupdate($id, $cat, $name);
|
|
|
|
} else {
|
|
$ok = dodbupdate($id, $cat);
|
|
}
|
|
|
|
return $ok;
|
|
|
|
}
|
|
|
|
function domusicfiles ($row)
|
|
{
|
|
$nzbinfo = new nzbInfo();
|
|
$nzb = new Nzb();
|
|
|
|
|
|
// echo $row['guid']."\n";
|
|
|
|
$file = $nzb->getNZBPath($row['guid']);
|
|
$m3u = '';
|
|
$alt = '';
|
|
$mp3 = false;
|
|
$mp3name = '';
|
|
$files = 0;
|
|
$extras = 0;
|
|
|
|
echo "doing music ".$row['guid']."\n";
|
|
|
|
if ($nzbinfo->loadFromFile($file))
|
|
{
|
|
$name = $row['name'];
|
|
|
|
$name = preg_replace("/\//",' ', $name);
|
|
|
|
// echo "$name\n";
|
|
|
|
$name = preg_quote($name);
|
|
|
|
|
|
echo "$name\n";
|
|
|
|
|
|
foreach($nzbinfo->nzb as $nzbsubject)
|
|
{
|
|
|
|
$sub = $nzbsubject['subject']."\n";
|
|
|
|
$sub = preg_replace("/$name/i",'', $sub);
|
|
|
|
// echo "doing music file = $sub\n";
|
|
|
|
if (preg_match('/\.(vol\d{1,3}?\+\d{1,3}?|par2|nfo\b|sfv|par\b|p\d{1,3}?|sv\b)/iU', $sub))
|
|
{
|
|
$extras++;
|
|
$alt = preg_replace('/(\.vol\d{1,3}?\+\d{1,3}?|\.par2|\.[a-z][a-z0-9]{2})+?".+?/iU', '', $sub);
|
|
}
|
|
|
|
if (preg_match('/\.mp3/', $sub, $matches))
|
|
{
|
|
$mp3name = preg_replace('/(\.mp3".+?)/iU', '.mp3', $sub);
|
|
$mp3name = preg_replace('/(?iU)^[^\"]+\"(0\d+?-?(00)??)??/iU', '', $mp3name);
|
|
|
|
$mp3 = true;
|
|
$files++;
|
|
}
|
|
|
|
if (preg_match('/\.m3u|\"00+[ \-\_\.]+?|\.nfo\b|\.sfv/iU', $sub, $matches))
|
|
{
|
|
if (preg_match('/\.url|playlist/iU', $sub))
|
|
{
|
|
continue;
|
|
}
|
|
$sub = preg_replace('/(\.vol\d{1,3}?\+\d{1,3}?|\.par2|\.[a-z][a-z0-9]{2})+?".+?/iU', '', $sub);
|
|
|
|
$m3u = preg_replace('/(?iU)^[^\"]+\"(0\d+?-?(00)??)??/iU', '', $sub);
|
|
}
|
|
|
|
}
|
|
}
|
|
$name = '';
|
|
|
|
echo (($m3u != '' || ($files + $extras) / count($nzbinfo->nzb) > 0.7) && $mp3)." ".$mp3." ".$m3u."\n";
|
|
|
|
if (($m3u != '' || (($files + $extras) / count($nzbinfo->nzb) > 0.7)) && $mp3)
|
|
{
|
|
$name = $m3u;
|
|
|
|
if ($files == 1)
|
|
$name = $mp3name;
|
|
|
|
if (empty($name))
|
|
{
|
|
$name = matchnames($row['name'], $alt);
|
|
}
|
|
|
|
echo $row['guid']." ".$name.' '.$mp3.' '.($files + $extras) / count($nzbinfo->nzb)."\n";
|
|
|
|
}
|
|
|
|
echo (($m3u != '' || ($files + $extras) / count($nzbinfo->nzb) > 0.7) && $mp3)." ".$mp3." ".$m3u."\n";
|
|
|
|
echo "music files $name\n";
|
|
$name = cleanname($name);
|
|
echo "cleaned name $name\n";
|
|
unset($file);
|
|
|
|
unset($nzbinfo);
|
|
unset($nzb);
|
|
|
|
return $name;
|
|
}
|
|
|
|
function findquality ($nfo, $name)
|
|
{
|
|
global $qualities;
|
|
// $qualities = array('\b480[ip]?\b', '\b640[ip]?\b', '\b720[ip]?\b', '1080[ip]?\b', 'audio_ts', '\bavi\b', 'bd..\b', 'bdrip', 'bluray', 'BR\-?Disk', 'br\-?rip', 'cam', 'divx', 'dvd', 'hd\-?tv', 'iso\b', 'm2ts', 'mkv', 'mpeg', 'mpg', 'ntsc', 'pal', 'ppv', 'r\d\b', '\bscr\b', '\bscreener\b', 'tc\b', 'telecine', 'telesync', '\bts\b', '\b(..)?tv\b', 'tv\-?rip', 'video_ts', 'x264', 'xvid');
|
|
// $qualities = array('(..)?tv', '480[ip]?', '640[ip]?', '720[ip]?', '1080[ip]?', 'audio_ts', 'avi', 'bd[\- ]?rip', 'bd25', 'bd50', 'bdmv', 'blu ?ray', 'br[\- ]?disk', 'br[\- ]?rip', 'cam', 'cam[\- ]?rip', 'divx', 'dvd', 'dvd[\- ]?r', 'dvd[\- ]?rip', 'dvd[\- ]?scr', 'hd', 'hd[\- ]?tv', 'hd[\- ]?cam', 'hd[\- ]?ts', 'iso', 'm2ts', 'mkv', 'mpeg(\-\d)?', 'mpg', 'ntsc', 'pal', 'ppv', 'ppv[\- ]?rip', 'r\d{1}', 'scr', 'screener', 'tc', 'telecine', 'telesync', 'ts', 'tv[\- ]?rip', 'video_ts', 'x264', 'xvid');
|
|
$qual = array();
|
|
// echo "$name\n";
|
|
foreach ($qualities as $quality)
|
|
{
|
|
if (preg_match("/(?<!\[ \] )(\b".$quality."\b)(?! \[ \])/iU", $nfo, $match))
|
|
{
|
|
$qual[] =$match[1];
|
|
}
|
|
}
|
|
|
|
foreach ($qual as $key=>$quality)
|
|
{
|
|
if (preg_match("/$quality/iU", $name))
|
|
{
|
|
unset($qual[$key]);
|
|
}
|
|
}
|
|
|
|
$n = '';
|
|
if (count($qual) > 0)
|
|
{
|
|
foreach ($qual as $quality)
|
|
{
|
|
$n = $n ." ".$quality;
|
|
}
|
|
}
|
|
|
|
return trim($name .' '.$n);
|
|
}
|
|
|
|
function matchanime ($nfo, $id, $name)
|
|
{
|
|
$ok = false;
|
|
$anime = '';
|
|
|
|
if (preg_match('/anidb.net.*aid=(\d+?)/iU', $nfo, $set))
|
|
{
|
|
$anidb = new AniDB();
|
|
if ($anidb->getAnimeInfo($set[1]) === false)
|
|
{
|
|
$anidb->addTitle($anidb->AniDBAPI($set[1]));
|
|
}
|
|
$anime = $anidb->getAnimeInfo($set[1]);
|
|
|
|
if ($anime !== false)
|
|
{
|
|
|
|
$anime = matchnames($name, $anime['title']);
|
|
|
|
$ok = dodbupdate($id, 5070, $anime, $set[1], 'anime');
|
|
}
|
|
unset($anidb);
|
|
|
|
}
|
|
return $ok;
|
|
}
|
|
|
|
function matchimdb ($nfo, $row)
|
|
{
|
|
$ok = false;
|
|
|
|
preg_match('/imdb\.[a-z0-9\.\_\-\/]+?(?:tt|\?)(\d+?)\/?/iU', $nfo, $set);
|
|
|
|
// echo "imdb name= ".$row['name']."\n";
|
|
|
|
if (isset($set[1]))
|
|
{
|
|
$imdb = $set[1] + 0;
|
|
|
|
$movie = new Movie();
|
|
|
|
$title = $movie->getMovieInfo($imdb);
|
|
|
|
if ($title === false)
|
|
{
|
|
$movie->fetchImdbProperties($imdb);
|
|
$movie->updateMovieInfo($imdb);
|
|
$title = $movie->getMovieInfo($imdb);
|
|
}
|
|
|
|
$name = $title['title']." (".$title['year'].")";
|
|
|
|
// $name = matchnames($row['name'], $name);
|
|
|
|
// echo "quality ".findquality ($nfo, $name)."\n";
|
|
$name = findquality ($nfo, $name);
|
|
|
|
$name = matchnames($row['name'], $name);
|
|
|
|
echo "imdb $name\n";
|
|
|
|
// echo (strval($imdb) + 0) . " * * * " . (strval($title['imdbID']) + 0) ."\n";
|
|
|
|
if ((strval($imdb) + 0) == (strval($title['imdbID']) + 0))
|
|
{
|
|
if (preg_match('/sport/iU', $title['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5060, $name, $imdb, 'imdb');
|
|
} else if (preg_match('/docu/iU', $title['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5080, $name, $imdb, 'imdb');
|
|
} else if (preg_match('/talk\-show/iU', $title['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5000, $name, $imdb, 'imdb');
|
|
} else if (preg_match('/tv/iU', $title['genre']) || preg_match('/episode/iU', $title['genre']) || preg_match('/reality/iU', $title['genre'])) {
|
|
$ok = updateTV ($title['title']." (".$title['year'].")", $row['ID'], $row, 5000, $nfo);
|
|
} else {
|
|
$ok = dodbupdate($row['ID'], 2000, $name, $imdb, 'imdb');
|
|
}
|
|
}
|
|
unset($movie);
|
|
}
|
|
// echo (bool) $ok."\n";
|
|
return $ok;
|
|
}
|
|
|
|
function matchaudiobook ($nfo, $id, $oldname, $row)
|
|
{
|
|
global $db;
|
|
$ok = false;
|
|
|
|
if (preg_match('/Sample Rate|MP3|speech|Encoded|ID3|(un)?abridged|Copyright|Ripped|khz|stero|mono/i', $nfo))
|
|
{
|
|
if (preg_match('/mpeg|pixels|fps/i', $nfo))
|
|
{
|
|
echo "not audio\n";
|
|
return $ok;
|
|
}
|
|
$query = "SELECT * FROM releases INNER JOIN releasevideo ON releases.ID = releasevideo.releaseID where ( releases.passwordstatus >= 0 OR releases.haspreview >= 0 ) AND releases.ID = ".$id;
|
|
$rel = $db->query($query);
|
|
if (count($rel) > 0)
|
|
{
|
|
echo "not audio\n";
|
|
return $ok;
|
|
}
|
|
unset ($rel);
|
|
|
|
echo "audiobooks $id\n";
|
|
$name = $oldname;
|
|
$author = '';
|
|
$title = '';
|
|
$bookID = 0;
|
|
$set = preg_split('/\btitle\:?(\.\.+?|\s\s+?|__+?)([^\r]*)\r/Ui', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
|
|
if (isset($set[2]))
|
|
{
|
|
|
|
$set[2] = trim(preg_replace('/[\|\:\-]| +/', ' ', $set[2]));
|
|
|
|
// echo $set[2]."\n";
|
|
$name = $set[2];
|
|
$title = $name;
|
|
|
|
$set = preg_split('/author\:?(\.\.+?|\s\s+?|__+?)([^\r]*)\r/Ui', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
if (isset($set[2]))
|
|
{
|
|
$set[2] = trim(preg_replace('/[\|\:\-]| +/', ' ', $set[2]));
|
|
|
|
// echo $set[2]."\n";
|
|
$name = $set[2]." - ".$name;
|
|
$author = $set[2];
|
|
}
|
|
|
|
$bookID = findbookid ($author, $title);
|
|
//
|
|
// $book = new Book();
|
|
// $rel = $book->getBookInfoByName($author, $title);
|
|
//
|
|
// if ($rel === false)
|
|
// {
|
|
// $query = "Select * from `bookinfo` WHERE `title` LIKE '%".$title."%' AND ID in (SELECT ID FROM `bookinfo` WHERE `author` sounds LIKE '".$author."')";
|
|
// $rel = $db->query($query);
|
|
// // echo "$query\n";
|
|
//
|
|
// if (isset($rel[0]["ID"]))
|
|
// {
|
|
// // var_dump($rel);
|
|
// $bookID = $rel[0]["ID"];
|
|
// } else {
|
|
// // echo "not found\n";
|
|
// $bookID = $book->updateBookInfo($author, $title);
|
|
// // echo "$bookID\n";
|
|
// }
|
|
// } else {
|
|
// $bookID = $rel['ID'];
|
|
// }
|
|
|
|
$name = matchnames($oldname, $name);
|
|
if ($bookID > 0)
|
|
{
|
|
$ok = dodbupdate($id, 3030, $name, $bookID, 'book');
|
|
} else {
|
|
$ok = dodbupdate($id, 3030, $name);
|
|
}
|
|
} else {
|
|
$ok = findmusicname($row, 3030);
|
|
// $ok = dodbupdate($id, 3030);
|
|
}
|
|
}
|
|
// unset($book);
|
|
return $ok;
|
|
}
|
|
|
|
function matchmusic($nfo, $row)
|
|
{
|
|
$artist = $album = '';
|
|
|
|
$artist = preg_split('/(?:a\s?r\s?t\s?i\s?s\s?t\b)+? *?(?!(?:[^ \.\:\}\]\*] ?){2,}?\b)(?:[\*\?\-\=\|\;\:\.\[\}\]\( \xb0-\x{3000}]+?)[ \.\>\:]([a-z0-9]?(?!:).+?(?<!\s\s))/Uuim', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
// $title = preg_split('/(?:title\b|album\b|release\b)(?![ \.]*(?:notes|\d+\:\d+|size|info|date|time|information|no|number))(?:[\|\;\:\.\[\}\]\(\s\xb0-\x{3000}]+?)(\b.+?$)/Uuim', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
$title = preg_split('/(?:t\s?i\s?t\s?l\s?e\b|a\s?l\s?b\s?u\s?m\b)+? *?(?!(?:[^ \.\:\}\]\*] ?){2,}?\b)(?:[\*\?\-\=\|\;\:\.\[\}\]\( \xb0-\x{3000}]+?)[ \.\>\:]([a-z0-9]?(?!:).+?(?<!\s\s))/Uuim', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
|
|
// var_dump($artist);
|
|
// var_dump($title);
|
|
|
|
$ok = false;
|
|
|
|
// echo "title = ".$title[1]."\n";
|
|
// echo "artist = ".$artist[1]."\n";
|
|
|
|
if (!isset($title[1]))
|
|
{
|
|
$ok = findmusicname($row, 3010);
|
|
return $ok;
|
|
}
|
|
|
|
$new = '';
|
|
|
|
$artist1 ='';
|
|
$music = new Music();
|
|
|
|
$musicId = 0;
|
|
$bookId = 0;
|
|
|
|
if (isset($title[1]) && strlen($title[1]) >1 && $title[1] <50 && isset($artist[1]) && strlen($artist[1]) >1 && $artist[1] <50)
|
|
{
|
|
|
|
// echo "\n * * * * * title= ".$title[1]."\t ".$row['name']."\n";
|
|
if (isset($artist[1]))
|
|
{
|
|
$new = trim($artist[1]);
|
|
$artist1 = trim($artist[1]);
|
|
}
|
|
|
|
|
|
if (isset($title[1]))
|
|
{
|
|
if (strlen($new) > 1)
|
|
{
|
|
$new = $new . " -*- ";
|
|
}
|
|
$new = $new . trim($title[1]);
|
|
$album = trim($title[1]);
|
|
}
|
|
|
|
$name = matchnames($row['name'], $new);
|
|
|
|
$artist = matchnames($artist1, '');
|
|
$album = matchnames($album, '');
|
|
|
|
// echo "$artist * * $album\n";
|
|
} else {
|
|
|
|
$name = domusicfiles ($row);
|
|
if ($name != "")
|
|
{
|
|
$result = $music->parseArtist($name);
|
|
$artist = $result['artist'];
|
|
$album = $result['album'];
|
|
}
|
|
}
|
|
|
|
echo "3artist = $artist album = $album\n";
|
|
|
|
$album = stripname($album);
|
|
$artist = stripname($artist);
|
|
|
|
|
|
|
|
$tmp = explode(",", $artist);
|
|
|
|
if (count($tmp) > 1)
|
|
$artist = trim($tmp[1]." ".$tmp[0]);
|
|
|
|
echo "4artist = $artist album = $album\n";
|
|
|
|
if ($artist != '' && $album != '')
|
|
$musicId = 0;
|
|
else {
|
|
$rel = $music->getMusicInfoByName($artist, $album);
|
|
// var_dump($rel);
|
|
$musicId = $rel['ID'];
|
|
}
|
|
|
|
if ($musicId <= 1)
|
|
{
|
|
echo "amazon music2 ";
|
|
$musicId = $music->updateMusicInfo($artist, $album, 0);
|
|
|
|
if ($musicId === false)
|
|
{
|
|
// var_dump($artist);
|
|
// var_dump($album);
|
|
$book = new Book(true);
|
|
$bookId = $book->updateBookInfo($artist, $album);
|
|
unset($book);
|
|
}
|
|
// var_dump($musicId);
|
|
|
|
}
|
|
|
|
if ($musicId > 0)
|
|
{
|
|
$ok = dodbupdate($row['ID'], 3010, $name, $musicId, 'music');
|
|
} else if ($bookId > 0) {
|
|
$ok = dodbupdate($row['ID'], 3030, $name, $bookId, 'book');
|
|
}
|
|
|
|
if (!$ok)
|
|
{
|
|
$ok = findmusicname($row, 3010);
|
|
|
|
// $name = matchnames($row['name'], domusicfiles($row));
|
|
// $ok = dodbupdate($row['ID'], 3010, '');
|
|
}
|
|
if (!$ok)
|
|
{
|
|
if (preg_match('/book/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 3030, $name);
|
|
else
|
|
$ok = dodbupdate($row['ID'], 3010, $name);
|
|
}
|
|
unset($music);
|
|
return $ok;
|
|
}
|
|
|
|
function matchmag($nfo, $row)
|
|
{
|
|
$ok = false;
|
|
$set = preg_split('/(?:\btitle|\bname|release)\b(?:[\-\:\.\}\[\s\xb0-\x{3000}]+?)\B([a-z0-9\.\- \(\)]+?)/Uui', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
|
|
if (isset($set[1]))
|
|
{
|
|
$name = trim($set[1]);
|
|
if (preg_match('/(?:issue)\b(?:[\-\:\.\}\[\s\xb0-\x{3000}]+?)\B([a-z0-9\.\- \(\)\/]+?)/iuU', $nfo, $set))
|
|
{
|
|
if (isset($set[1]))
|
|
{
|
|
$name = $name." ".trim($set[1]);
|
|
}
|
|
$name = matchnames($row['name'], $name);
|
|
$ok = dodbupdate($row['ID'], 7010, $name );
|
|
}
|
|
}
|
|
return $ok;
|
|
}
|
|
|
|
function dodbupdate($id, $cat, $name = '', $typeid = 0, $type='none', $debug = DEBUGGING)
|
|
{
|
|
global $db;
|
|
|
|
$query = "UPDATE `releases` SET `categoryID` = $cat";
|
|
|
|
if ($name != '')
|
|
$query = $query.", `searchname` = ".$db->escapeString($name);
|
|
switch ($type) {
|
|
case 'imdb':
|
|
if ($typeid != 0)
|
|
$query = $query.", `imdbID` = $typeid";
|
|
break;
|
|
case 'book':
|
|
if ($typeid != 0)
|
|
$query = $query.", `bookinfoID` = $typeid";
|
|
break;
|
|
case 'music':
|
|
if ($typeid != 0)
|
|
$query = $query.", `musicinfoID` = $typeid";
|
|
break;
|
|
case 'anime':
|
|
if ($typeid != 0)
|
|
$query = $query.", `anidbID` = $typeid";
|
|
break;
|
|
case 'tv':
|
|
if ($typeid != 0)
|
|
$query = $query.", `rageID` = $typeid";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
$query = $query." where `ID` = $id";
|
|
echo $debug." ".$query."\n";
|
|
if (!$debug)
|
|
{
|
|
echo "updating";
|
|
if ($db->query($query) !== false)
|
|
return true;
|
|
} else {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findmovie($name)
|
|
{
|
|
$imdb = 0;
|
|
|
|
$j = 0;
|
|
|
|
$name = stripname($name);
|
|
|
|
$url = "http://www.omdbapi.com/?r=xml&s=";
|
|
$name1 = $name;
|
|
if (preg_match('/([^\[\r\]]+)[\[\{\(\_\. ]+?((?:19|20)\d{2})/U', $name, $title))
|
|
{
|
|
$url = $url.urlencode($title[1])."&y=".$title[2];
|
|
$name1 = $title[1]." ".$title[2];
|
|
}
|
|
else
|
|
$url = $url.urlencode($name);
|
|
|
|
echo "omdbapi: $url\n";
|
|
echo cleanname($name1)."\n";
|
|
|
|
$data = getUrl($url);
|
|
|
|
//echo "$data\n";
|
|
$xmlObj = @simplexml_load_string(html_entity_decode($data));
|
|
$arrXml = objectsIntoArray($xmlObj);
|
|
|
|
// var_dump($arrXml);
|
|
|
|
if (isset($arrXml["Movie"]))
|
|
{
|
|
|
|
$tvrage = new TVRage(true);
|
|
|
|
$name1 = '';
|
|
|
|
foreach ($arrXml["Movie"] as $ax)
|
|
{
|
|
// var_dump($ax);
|
|
|
|
if (isset($ax["@attributes"]))
|
|
$a = $ax["@attributes"];
|
|
else
|
|
$a = $ax;
|
|
if (isset($title[2]) && $a["Year"] == $title[2])
|
|
{
|
|
$i = 0;
|
|
$a["Title"] = preg_replace('/&/', ' and ', $a["Title"]);
|
|
$name = preg_replace('/&/', ' and ', $name);
|
|
|
|
//echo "matched ".$a["Title"]."\n";
|
|
|
|
$arr = preg_split('/[\:\:\.\, \-\_\(\)\[\]\{\}]/', $a["Title"], 0, PREG_SPLIT_NO_EMPTY);
|
|
foreach ($arr as $r)
|
|
{
|
|
echo preg_quote($r)."\n";
|
|
if (preg_match('/'.preg_quote($r).'/i', $name))
|
|
$i++;
|
|
}
|
|
if (count($arr) == $i && $i > $j)
|
|
{
|
|
$name1 = $name;
|
|
$imdb = $a["imdbID"];
|
|
$j = $i;
|
|
}
|
|
// echo "comp result ".count($arr)." ".$i." ".$name."\n";
|
|
// echo $a["Title"]."\n";
|
|
}
|
|
}
|
|
echo "$name1 $imdb\n";
|
|
|
|
unset($tvrage);
|
|
}
|
|
echo "findmovie = $imdb\n";
|
|
|
|
return array(strval($imdb), $j);
|
|
}
|
|
|
|
function matchvideo($row, $nfo)
|
|
{
|
|
global $db;
|
|
|
|
$ok = false;
|
|
|
|
$imdb = '';
|
|
|
|
$j = 0;
|
|
|
|
$query = "SELECT releasevideo.releaseID FROM releasevideo WHERE releasevideo.releaseID = ".$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
if ($rel === false)
|
|
{
|
|
$query = "SELECT releasefiles.`name`, releasefiles.releaseID, releasefiles.size FROM releasefiles WHERE releasefiles.releaseID = ".$row['ID'];
|
|
$res = $db->queryDirect($query);
|
|
|
|
$cont = false;
|
|
while ($rel = $db->getAssocArray($res))
|
|
{
|
|
if(preg_match('/\.(iso|mkv|mp4|iso|divx)$|\.([^\.]+)$/', $rel['name'], $ext))
|
|
{
|
|
echo "ext = ".$ext[1]."\n";
|
|
var_dump($ext);
|
|
$cont = true;
|
|
}
|
|
}
|
|
if (!$cont)
|
|
return false;
|
|
}
|
|
$thename = $name = $row['name'];
|
|
echo "name1: $name\n";
|
|
$rageID = lookupTV ($name, $nfo, $row, 5000);
|
|
|
|
if ($rageID == 0)
|
|
{
|
|
$imdb = findmovie($name);
|
|
$imdb = $imdb[0];
|
|
}
|
|
|
|
if ($rageID == 0 && empty($imdb) )
|
|
{
|
|
$set = preg_split('/(?:\btitle|\bname).+[\.\s]+?[^a-z0-9]*?([a-z0-9\-\.\_ ]+?)/iU', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
|
|
//var_dump($set);
|
|
if (isset($set[1]))
|
|
{
|
|
echo "name2: ".$set[1]."\n";
|
|
$rageID = lookupTV ($set[1], $nfo, $row, 5000);
|
|
if ($rageID)
|
|
{
|
|
$thename = $set[1];
|
|
} else
|
|
{
|
|
$imdb = findmovie($set[1]);
|
|
$imdb = $imdb[0];
|
|
}
|
|
|
|
}
|
|
|
|
if ($rageID == 0 && empty($imdb) )
|
|
{
|
|
$query = "SELECT releasefiles.releaseID, releasefiles.`name` FROM releasefiles INNER JOIN releases ON releasefiles.releaseID = releases.ID WHERE releases.ID = ".$row['ID'];
|
|
$rel = $db->query($query);
|
|
|
|
$ok = false;
|
|
$j = 0;
|
|
|
|
|
|
if (count($rel) > 0)
|
|
{
|
|
foreach($rel as $r)
|
|
{
|
|
$name1 = preg_replace('/video[\_\. ]ts/iU', ' ', $r['name']);
|
|
|
|
$name1 = preg_replace('/\\\\/', ' ', $name1);
|
|
|
|
$name1 = preg_replace('/\.[a-z][a-z0-9]{2}$/iU', '', $name1);
|
|
|
|
$name1 = preg_replace('/ +/', ' ', $name1);
|
|
|
|
$name1 = preg_replace('/^ | $/', '', $name1);
|
|
|
|
echo "file ".$name1."\n";
|
|
echo "name3: $name1\n";
|
|
$rageID = lookupTV ($name1, $nfo, $row, 5000);
|
|
|
|
if ($rageID && $j == 0)
|
|
{
|
|
$thename = $name1;
|
|
break;
|
|
} else {
|
|
$tmp = findmovie($name1);
|
|
// var_dump($tmp);
|
|
if ($tmp[1] > $j)
|
|
{
|
|
echo "$rageID\n";
|
|
$imdb = $tmp[0];
|
|
$j = $tmp[1];
|
|
$thename = $name1;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
echo "$j $rageID $imdb\n";
|
|
|
|
if ($imdb != '')
|
|
{
|
|
$imdb = preg_replace('/^tt/', '', $imdb);
|
|
$movie = new Movie();
|
|
$tmp = $movie->getMovieInfo($imdb);
|
|
|
|
if ($tmp === false)
|
|
{
|
|
$movie->fetchImdbProperties($imdb);
|
|
$movie->updateMovieInfo($imdb);
|
|
$tmp = $movie->getMovieInfo($imdb);
|
|
}
|
|
|
|
|
|
$thename = matchnames($row['name'], $thename);
|
|
$thename = matchnames($thename, $tmp['title']);
|
|
$thename = findquality ($nfo, $thename);
|
|
|
|
unset($movie);
|
|
|
|
echo "$thename\t";
|
|
// var_dump($tmp);
|
|
|
|
if (isset($tmp['ID']))
|
|
{
|
|
if (preg_match('/sport/iU', $tmp['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5060, $thename, $imdb, 'imdb');
|
|
} else if (preg_match('/docu/iU', $tmp['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5080, $thename, $imdb, 'imdb');
|
|
} else if (preg_match('/talk\-show/iU', $tmp['genre'])) {
|
|
$ok = dodbupdate($row['ID'], 5000, $thename, $imdb, 'imdb');
|
|
} else if (preg_match('/tv/iU', $tmp['genre']) || preg_match('/episode/iU', $tmp['genre']) || preg_match('/reality/iU', $tmp['genre'])) {
|
|
$ok = updateTV ($tmp['title']." (".$tmp['year'].")", $row['ID'], $row, 5000, $nfo);
|
|
} else {
|
|
$ok = dodbupdate($row['ID'], 2000, $thename, $imdb, 'imdb');
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if ($rageID)
|
|
{
|
|
$tvrage = new TVRage(true);
|
|
$tmp = $tvrage->getByRageID($rageID);
|
|
$thename = matchnames($row['name'], $thename);
|
|
$thename = matchnames($thename, $tmp[0]['releasetitle']);
|
|
$thename = findquality ($nfo, $thename);
|
|
|
|
$name = $tmp[0]['releasetitle'];
|
|
|
|
// $tmp = $tvrage->getByRageID($rageID);
|
|
|
|
unset($tvrage);
|
|
// var_dump($tmp);
|
|
echo "doing updates";
|
|
if (isset($tmp[0]))
|
|
{
|
|
if (preg_match('/sports/i', $tmp[0]['genre']))
|
|
$ok = dodbupdate($row['ID'], 5060, $thename, $rageID, 'tv');
|
|
elseif (preg_match('/documen/i', $tmp[0]['genre']))
|
|
$ok = dodbupdate($row['ID'], 5080, $thename, $rageID, 'tv');
|
|
else
|
|
$ok = dodbupdate($row['ID'], 5000, $thename, $rageID, 'tv');
|
|
}
|
|
}
|
|
|
|
if ($rageID == 0 && empty($imdb) )
|
|
{
|
|
$thename = matchnames($row['name'], $thename);
|
|
$thename = findquality ($nfo, $thename);
|
|
|
|
if (preg_match('/sport/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 5060, $thename);
|
|
elseif (preg_match('/docu/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 5080, $thename);
|
|
elseif (preg_match('/tv/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 5000, $thename);
|
|
elseif (preg_match('/mov/i', $row['gname']))
|
|
$ok = dodbupdate($row['ID'], 2000, $thename);
|
|
else
|
|
$ok = dodbupdate($row['ID'], 5050, $thename);
|
|
}
|
|
|
|
return $ok;
|
|
}
|
|
|
|
mysql_query("SET NAMES 'utf8'");
|
|
mysql_query("SET CHARACTER SET 'utf8'");
|
|
mb_internal_encoding("UTF-8");
|
|
mb_regex_encoding("UTF-8");
|
|
mb_http_output("UTF-8");
|
|
mb_language("uni");
|
|
|
|
$db = new DB();
|
|
|
|
|
|
$query = "SELECT uncompress(releasenfo.nfo) AS nfo, releases.ID, releases.guid, releases.`name`, releases.searchname, groups.`name` AS gname FROM releasenfo INNER JOIN releases ON releasenfo.releaseID = releases.ID INNER JOIN groups ON releases.groupID = groups.ID WHERE releases.categoryID IN ( SELECT ID FROM category WHERE parentID = 8000 )";
|
|
//$query = "SELECT uncompress(releasenfo.nfo) AS nfo, releases.ID, releases.guid, releases.`name`, releases.searchname, groups.`name` AS gname FROM releasenfo INNER JOIN releases ON releasenfo.releaseID = releases.ID INNER JOIN groups ON releases.groupID = groups.ID";
|
|
//$query = "SELECT uncompress(releasenfo.nfo) AS nfo, releases.ID, releases.guid, releases.`name`, releases.searchname, groups.`name` AS gname FROM releasenfo INNER JOIN releases ON releasenfo.releaseID = releases.ID INNER JOIN groups ON releases.groupID = groups.ID WHERE releases.guid = 'e4c785818de8184770f5bf7b1f383863'";
|
|
//
|
|
//echo $query."\n";
|
|
|
|
$res = $db->queryDirect($query);
|
|
|
|
while ($row = $db->getAssocArray($res))
|
|
{
|
|
$nfo = utf8_decode($row['nfo']);
|
|
$pattern = '/(imdb)\.[a-z0-9\.\_\-\/]+?(tt|\?)(\d+?)\/?|(tvrage)|(\bASIN)|(isbn)|(UPC\b)|(comic book)|(comix)|(tv series)|(\bos\b)|(documentaries)|(documentary)|(doku)|(macintosh)|(dmg)|(mac[ _\.\-]??os[ _\.\-]??x??)|(\bos\b\s??x??)|(\bosx\b)';
|
|
$pattern = $pattern . '|(\bios\b)|(iphone)|(ipad)|(ipod)|(pdtv)|(hdtv)|(video streams)|(movie)|(audiobook)|(audible)|(recorded books)|(spoken book)|(speech)|(read by)\:?|(narrator)\:?|(narrated by)';
|
|
$pattern = $pattern . '|(avi\b)|(xvid)|(divx)|(mkv)|(amazon\.)[a-z]{2,3}.*\/dp\/|(anidb.net).*aid=|(\blame\b)|(\btrack)|(t r a c k)|music|type:(game)|(game) Type|(platform)|\b(win(?:dows|all|xp)\b)|(\bwin\b)';
|
|
$pattern = $pattern . '|(application)|(plugin)|(\bcrack)|(install)|(setup)|(magazin)|(x264)|(itunes\.apple\.com\/)|(sports)|(deportes)|(nhl)|(nfl)|(\bnba)|ncaa|(album)/iU';
|
|
|
|
$matches = preg_split($pattern, $nfo, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
$matches = doarray($matches);
|
|
|
|
if (count($matches) > 0)
|
|
{
|
|
// var_dump($matches);
|
|
}
|
|
|
|
|
|
foreach($matches as $m)
|
|
{
|
|
|
|
if (isset($m)) {
|
|
$case = preg_replace('/ /', '', $m);
|
|
} else {
|
|
$case = '';
|
|
}
|
|
if ($row['name'] == '4d5bdbf0da623fb9cf849b8b745c60e9')
|
|
print_r($matches);
|
|
|
|
if (($m == 'os' || $m == 'platform') && preg_match('/(?:\bos\b(?: type)??|platform)[ \.\:\}]+(\w+?).??(\w*?)/iU', $nfo, $set))
|
|
{
|
|
|
|
if (isset($set[1]))
|
|
{
|
|
// var_dump($set);
|
|
$case = strtolower($set[1]);
|
|
}
|
|
if (strlen($set[2]) && (stripos($set[2], 'mac') !== false || stripos($set[2], 'osx') !== false))
|
|
{
|
|
$case = strtolower($set[2]);
|
|
}
|
|
}
|
|
|
|
|
|
echo "\n".$case." ".$row['guid']."\n";
|
|
// echo $row['name']."\n";
|
|
// echo $row['searchname']."\n";
|
|
// echo "$case ".$row['guid']."\n";
|
|
|
|
switch (strtolower($case))
|
|
{
|
|
case 'itunes.apple.com/':
|
|
echo $row['guid']."\n";
|
|
preg_match('/itunes\.apple\.com\/(.*)/iU', $nfo, $set);
|
|
echo 'itunes.apple.com'.$set[1]."\n";
|
|
break;
|
|
|
|
case 'imdb':
|
|
if (matchimdb($nfo, $row))
|
|
break(2);
|
|
break;
|
|
|
|
|
|
case "asin":
|
|
case "isbn":
|
|
case "amazon.":
|
|
case "upc":
|
|
if ($case == 'asin' || $case == 'isbn')
|
|
{
|
|
preg_match('/(?:isbn|asin)[ \:]*? *?([a-zA-Z0-9]{8,13}?)/iU', $nfo, $set);
|
|
if (isset($set[1]))
|
|
{
|
|
if (strlen($set[1])>10)
|
|
break;
|
|
if (isset($set[1]))
|
|
{
|
|
$set[2] = $set[1];
|
|
$set[1] = "com";
|
|
}
|
|
}
|
|
} else if ($case == 'amazon.') {
|
|
preg_match('/amazon\.([a-z]*?\.?[a-z]{2,3}?)\/.*\/dp\/([a-zA-Z0-9]{8,10}?)/iU', $nfo, $set);
|
|
} else if ($case == 'upc') {
|
|
preg_match('/UPC\:?? *?([a-zA-Z0-9]*?)/iU', $nfo, $set);
|
|
if (isset($set[1]))
|
|
{
|
|
$set[2] = $set[1];
|
|
$set[1] = "All";
|
|
}
|
|
} else {
|
|
echo "* * * * * error in amazon";
|
|
break;
|
|
}
|
|
|
|
if (count($set) > 1)
|
|
{
|
|
if (doAmazon ($row['name'], $row['ID'], $nfo, $set[2], $set[1], $case == 'upc', $nfo, $row))
|
|
{
|
|
break(2);
|
|
}
|
|
}
|
|
break;
|
|
case 'comicbook':
|
|
case 'comix':
|
|
if (dodbupdate($row['ID'], 7030))
|
|
break(2);
|
|
break;
|
|
case 'audiobook':
|
|
case 'audible':
|
|
case 'recordedbooks':
|
|
case 'spokenbook':
|
|
case 'readby':
|
|
case 'narratedby':
|
|
case 'narrator':
|
|
case 'speech':
|
|
if (matchaudiobook ($nfo, $row['ID'], $row['name'], $row))
|
|
break(2);
|
|
break;
|
|
|
|
case 't r a c k':
|
|
case 'track':
|
|
case 'lame':
|
|
case 'album':
|
|
case 'music':
|
|
if (preg_match('/(a\s?r\s?t\s?i\s?s\s?t|l\s?a\s?b\s?e\s?l|mp3|e\s?n\s?c\s?o\s?d\s?e\s?r|rip|stereo|mono)/i', $nfo))
|
|
{
|
|
if (!preg_match('/(\bavi\b|x\.?264|divx|mvk|xvid|install|Setup\.exe|unzip|unrar)/i', $nfo))
|
|
{
|
|
if (matchmusic($nfo, $row))
|
|
{
|
|
// echo "breaking 2\n";
|
|
break(2);
|
|
}
|
|
} else {
|
|
// echo "$case ".$row['guid']."\n";
|
|
if (findmusicname($row, 3010))
|
|
break (2);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'magazin':
|
|
// echo "magazin\n";
|
|
if (matchmag($nfo, $row))
|
|
break(2);
|
|
break;
|
|
|
|
case 'dmg':
|
|
case 'mac':
|
|
case 'macintosh':
|
|
case 'macos':
|
|
case 'macosx':
|
|
case 'osx':
|
|
if (doOS($nfo, $row['name'], 4030, $row['ID']))
|
|
break(2);
|
|
break;
|
|
|
|
case 'ios':
|
|
case 'iphone':
|
|
case 'ipad':
|
|
case 'ipod':
|
|
|
|
if (doOS($nfo, $row['name'], 4060, $row['ID']))
|
|
break(2);
|
|
break;
|
|
|
|
case 'application':
|
|
case 'install':
|
|
case 'setup':
|
|
if (!preg_match('/(Setup(\.exe)?|unzip|unrar)/i', $nfo))
|
|
continue;
|
|
if (preg_match('/(\bavi\b|x\.?264|divx|mvk|xvid|install)/i', $nfo))
|
|
continue;
|
|
|
|
case 'windows':
|
|
case 'win':
|
|
case 'winall':
|
|
case 'winxp':
|
|
case 'plugin':
|
|
case 'crack':
|
|
if (doOS($nfo, $row['name'], 4020, $row['ID']))
|
|
break(2);
|
|
break;
|
|
|
|
case 'android':
|
|
if (doOS($nfo, $row['name'], 4070, $row['ID']))
|
|
break(2);
|
|
break;
|
|
|
|
case 'game':
|
|
$set = preg_split('/\>(.*)\</Ui', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
|
|
|
|
if (isset($set[1]))
|
|
{
|
|
$name = matchnames($row['name'], $set[1]);
|
|
if (dodbupdate($row['ID'], 4050, $name))
|
|
break(2);
|
|
} else {
|
|
if (doOS($nfo, $row['name'], 4050, $row['ID']))
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case 'anidb.net':
|
|
if (matchanime ($nfo, $row['ID'], $row['name']))
|
|
break(2);
|
|
break;
|
|
|
|
case 'sports':
|
|
case 'deportes':
|
|
case 'nhl':
|
|
case 'nfl':
|
|
case 'nba':
|
|
case 'ncaa':
|
|
if (doOS($nfo, $row['name'], 5060, $row['ID']))
|
|
{
|
|
break(2);
|
|
}
|
|
break;
|
|
|
|
case 'tvrage':
|
|
case 'documentaries':
|
|
case 'documentary':
|
|
case 'tvseries':
|
|
case 'hdtv':
|
|
case 'pdtv':
|
|
|
|
$cat = 5050;
|
|
|
|
if (preg_match('/hdtv/', $case))
|
|
$cat = 5040;
|
|
elseif (preg_match('/documentar/', $case))
|
|
$cat = 5080;
|
|
|
|
$name = '';
|
|
// $title = preg_match('/(?:\btitle\b)+?(?! *[^ \.\:\}\]]{2,}?\b)(?:[\|\;\:\.\[\}\]\( \xb0-\x{3000}]+?)[ \.]([a-z0-9](?!:)(?:.(?!\s\s+))+?[^\s]+?)/Uuim', $nfo, 0, PREG_SPLIT_DELIM_CAPTURE);
|
|
if (preg_match('/(?:\btitle\b)+?(?! *[^ \.\:\}\]]{2,}?\b)(?:[\|\;\:\.\[\}\]\( \xb0-\x{3000}]+?)[ \.]([a-z0-9](?!:)(?:.(?!\s\s+))+?[^\s]+?)/Uuim', $nfo, $title))
|
|
$name = $title[1];
|
|
elseif (preg_match('/^(.*(19|20)\d{2}[ \_\.]\d{1,2}[ \_\.]\d{1,2})[ \_\.]?/', $nfo, $title))
|
|
$name = $title[1];
|
|
elseif (preg_match('/^(.*\d{1,2}[ \_\.]\d{1,2}[ \_\.](19|20)\d{2})[ \_\.]?/', $nfo, $title))
|
|
$name = $title[1];
|
|
elseif (preg_match('/^(.*(19|20)\d{2}[\]\}\)]?)[ \_\.]/', $nfo, $title))
|
|
$name = $title[1];
|
|
|
|
echo "doing tv ".$name." ".$row['guid']."\n";
|
|
if ($name != '')
|
|
{
|
|
if (lookupTV($name, $nfo, $row, $cat) !== false)
|
|
break(2);
|
|
}
|
|
|
|
// break;
|
|
case 'movie':
|
|
case 'videostreams':
|
|
case 'x264':
|
|
case 'avi':
|
|
case 'mkv':
|
|
case 'xvid':
|
|
echo "doing movie\n";
|
|
if (matchvideo($row, $nfo))
|
|
break(2);
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
//echo "$case ".$row['guid']."\n";
|
|
break;
|
|
|
|
}
|
|
}
|
|
echo $row['guid']."\n";
|
|
|
|
}
|
|
|
|
//exit(0);
|
|
|
|
|
|
|
|
$query = "SELECT *, groups.`name` AS gname FROM releases INNER JOIN groups ON releases.groupID = groups.ID WHERE releases.ID NOT IN ( SELECT releasevideo.releaseID FROM releasevideo ) AND releases.categoryID IN ( SELECT ID FROM category WHERE parentID = 8000 )" ;
|
|
//$query = "SELECT * FROM releases WHERE releases.ID NOT IN ( SELECT releasevideo.releaseID FROM releasevideo )" ;
|
|
|
|
$res = $db->queryDirect($query);
|
|
while ($row = $db->getAssocArray($res))
|
|
{
|
|
echo "\n".$row['guid']."\n";
|
|
|
|
$query = 'SELECT releasenfo.releaseID, uncompress(releasenfo.nfo) AS nfo FROM releasenfo WHERE releasenfo.releaseID = '.$row['ID'];
|
|
$rel = $db->queryOneRow($query);
|
|
|
|
$nfo = '';
|
|
if ($rel !== false)
|
|
if ($rel['releaseID'] == $row['ID'])
|
|
$nfo = $rel['nfo'];
|
|
|
|
matchmusic($nfo, $row);
|
|
//findmusicname($row, 3010);
|
|
}
|
|
|
|
$query = "SELECT releasefiles.`name` AS rname, releasefiles.size, releases.*, groups.`name` AS gname FROM releasefiles INNER JOIN releases ON releasefiles.releaseID = releases.ID INNER JOIN groups ON releases.groupID = groups.ID WHERE releases.categoryID IN ( SELECT ID FROM category WHERE parentID = 8000 ) ORDER BY releasefiles.releaseID, releasefiles.`name`";
|
|
$res = $db->queryDirect($query);
|
|
while ($row = $db->getAssocArray($res))
|
|
{
|
|
|
|
if(preg_match('/\.([^\.]{3,4})$/', $row['rname'], $ext))
|
|
{
|
|
echo "ext = ".$ext[1]."\n";
|
|
// var_dump($ext);
|
|
switch ($ext[1])
|
|
{
|
|
case 'epub':
|
|
case 'mobi':
|
|
$title = preg_split("/ \- /", $row['rname']);
|
|
$author = preg_replace('/(\.[^\.]+)/', '', $title[1]);
|
|
|
|
$tmp = preg_replace('/'.$row['name'].'/', '', $title[0]);
|
|
$tmp = preg_split('/\\\\/', $tmp, 0, PREG_SPLIT_NO_EMPTY);
|
|
|
|
|
|
|
|
echo "author: ".$author." title: ".$tmp[count($tmp)-1]."\n";
|
|
|
|
$bookId = findbookid ($author, $tmp[count($tmp)-1]);
|
|
|
|
$title1 = $tmp[count($tmp)-1];
|
|
|
|
echo $bookId."\n";
|
|
|
|
if ($bookId == 0)
|
|
{
|
|
$bookId = findbookid ($tmp[count($tmp)-1], $author);
|
|
echo "inverse ".$bookId."\n";
|
|
|
|
$title1 = $author;
|
|
$author = $tmp[count($tmp)-1];
|
|
|
|
}
|
|
|
|
$title1 = matchnames($row['name'], $author.' - '.$title1);
|
|
|
|
if ($bookId != 0)
|
|
$ok = dodbupdate($row['ID'], 7020, $title1, $bookId, 'book');
|
|
else
|
|
$ok = dodbupdate($row['ID'], 7020, $title1);
|
|
|
|
|
|
case 'avi':
|
|
case 'mkv':
|
|
case 'mp4':
|
|
case 'iso':
|
|
$tmp = preg_replace("/([^\\\\]+?)\\\\(\\1)/", "\\2", $row['rname']);
|
|
$tmp = preg_replace("/".preg_quote($row['name'])."/", "", $tmp);
|
|
$tmp = preg_replace("/\\\\/", " ", $tmp);
|
|
$tmp = stripname($tmp);
|
|
|
|
$tvrage = new TVRage(true);
|
|
$parsed = $tvrage->parseNameEpSeason($tmp);
|
|
|
|
unset($tvrage);
|
|
echo "name = ".$tmp."\n";
|
|
|
|
$nfo = $tmp."\n";
|
|
|
|
var_dump($parsed);
|
|
|
|
matchvideo($row, $nfo);
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
unset($res);
|
|
unset($row);
|
|
unset($matches);
|
|
|
|
$movie = new Movie();
|
|
$movie->processMovieReleases();
|
|
$movie->updateUpcoming();
|
|
|
|
$music = new Music(true);
|
|
$music->processMusicReleases();
|
|
|
|
$book = new Book(true);
|
|
$book->processBookReleases();
|
|
|
|
$anidb = new AniDB(true);
|
|
$anidb->animetitlesUpdate();
|
|
$anidb->processAnimeReleases();
|
|
|
|
$tvrage = new TVRage(true);
|
|
$tvrage->processTvReleases(true);
|
|
|
|
$thetvdb = new TheTVDB(true);
|
|
$thetvdb->processReleases();
|
|
|
|
$query = "update releases set releases.categoryID= 5060 WHERE imdbID IN ( SELECT movieinfo.imdbID FROM movieinfo WHERE movieinfo.genre REGEXP 'sport' AND NOT movieinfo.genre REGEXP 'comedy' AND NOT movieinfo.genre REGEXP 'romance' AND NOT movieinfo.genre REGEXP 'drama' )";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "update releases set releases.categoryID= 5000 WHERE imdbID IN ( SELECT movieinfo.imdbID FROM movieinfo WHERE genre REGEXP 'tv|talk\-show|reality|episode' ) AND categoryID NOT IN ( SELECT ID FROM category WHERE parentID = 5000 )";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2050 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `imdbID` > 0) OR `categoryID` = 2000) AND size > 10500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2040 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `imdbID` > 0) OR `categoryID` = 2000) AND size > 2500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2030 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `imdbID` > 0) OR `categoryID` = 2000) AND size > 500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2020 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `imdbID` > 0) OR `categoryID` = 2000)";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2040 WHERE `categoryID` = 2050 AND size <10000000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=2030 WHERE `categoryID` = 2040 AND size < 2500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=5040 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `rageID` > 0) OR `categoryID` = 5000) AND size > 1500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=5030 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `rageID` > 0) OR `categoryID` = 5000) AND size > 10000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=5050 WHERE (`categoryID` in (SELECT ID FROM category WHERE parentID = 8000 and `rageID` > 0) OR `categoryID` = 5000)";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=5030 WHERE `categoryID` = 5040 AND size < 1500000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE `releases` SET `categoryID`=5050 WHERE `categoryID` = 5030 AND size < 1000000";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "UPDATE releases SET categoryID = 5070 WHERE rageID IN ( SELECT tvrage.rageID FROM tvrage WHERE tvrage.genre REGEXP 'animat' )";
|
|
|
|
$db->query($query);
|
|
|
|
$query = "update releases set releases.categoryID= 5080 WHERE imdbID IN ( SELECT movieinfo.imdbID FROM movieinfo WHERE genre REGEXP 'docum' )";
|
|
|
|
$db->query($query);
|
|
|
|
//ALTER TABLE `movieinfo` CHANGE `genre` `genre` VARCHAR( 256 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
|
|
|
|
?>
|