mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-09-01 10:48:53 +00:00
Add fulltext search to books, music and console name searches, add safe link for IAFD xxx search.
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE musicinfo ADD FULLTEXT INDEX ix_musicinfo_artist_title_ft (artist, title);
|
||||
ALTER TABLE bookinfo ADD FULLTEXT INDEX ix_bookinfo_author_title_ft (author, title);
|
||||
ALTER TABLE consoleinfo ADD FULLTEXT INDEX ix_consoleinfo_title_platform_ft (title, platform);
|
||||
UPDATE `tmux` set `value` = '122' where `setting` = 'sqlpatch';
|
||||
+24
-8
@@ -101,13 +101,29 @@ class Konsole
|
||||
|
||||
public function getConsoleInfoByName($title, $platform)
|
||||
{
|
||||
return $this->pdo->queryOneRow(
|
||||
sprintf(
|
||||
"SELECT * FROM consoleinfo WHERE title %s AND platform %s",
|
||||
$this->pdo->likeString($title, true, true),
|
||||
$this->pdo->likeString($platform, true, true)
|
||||
)
|
||||
);
|
||||
//only used to get a count of words
|
||||
$searchwords = $searchsql = '';
|
||||
$ft = $this->pdo->queryDirect("SHOW INDEX FROM consoleinfo WHERE key_name = 'ix_consoleinfo_title_platform_ft'");
|
||||
if ($ft->rowCount() !== 2) {
|
||||
$searchsql .= sprintf(" title %s AND platform %s'", $this->pdo->likeString($title, true, true), $this->pdo->likeString($platform, true, true));
|
||||
} else {
|
||||
$title = preg_replace('/( - | -|\(.+\)|\(|\))/', ' ', $title);
|
||||
$title = preg_replace('/[^\w ]+/', '', $title);
|
||||
$title = trim(preg_replace('/\s\s+/i', ' ', $title));
|
||||
$title = trim($title);
|
||||
$words = explode(' ', $title);
|
||||
|
||||
foreach ($words as $word) {
|
||||
$word = trim(rtrim(trim($word), '-'));
|
||||
if ($word !== '' && $word !== '-') {
|
||||
$word = '+' . $word;
|
||||
$searchwords .= sprintf('%s ', $word);
|
||||
}
|
||||
}
|
||||
$searchwords = trim($searchwords);
|
||||
$searchsql .= sprintf(" MATCH(title, platform) AGAINST(%s IN BOOLEAN MODE)", $this->pdo->escapeString($searchwords));
|
||||
}
|
||||
return $this->pdo->queryOneRow(sprintf("SELECT * FROM consoleinfo WHERE %s", $searchsql));
|
||||
}
|
||||
|
||||
public function getRange($start, $num)
|
||||
@@ -640,7 +656,7 @@ class Konsole
|
||||
|
||||
$this->update(
|
||||
$consoleId, $con['title'], $con['asin'], $con['url'], $con['salesrank'],
|
||||
$con['platform'], $con['publisher'], $con['releasedate'], $con['esrb'],
|
||||
$con['platform'], $con['publisher'], (isset($con['releasedate']) ? $con['releasedate']: null), $con['esrb'],
|
||||
$con['cover'], $con['consolegenreid'], (isset($con['review']) ? $con['review'] : null)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -97,9 +97,38 @@ class Books
|
||||
|
||||
public function getBookInfoByName($author, $title)
|
||||
{
|
||||
return $this->pdo->queryOneRow(sprintf('SELECT * FROM bookinfo WHERE author %s AND title %s', $this->pdo->likeString($author, true, true), $this->pdo->likeString($title, true, true)));
|
||||
$pdo = $this->pdo;
|
||||
$like = 'ILIKE';
|
||||
if ($pdo->dbSystem() === 'mysql') {
|
||||
$like = 'LIKE';
|
||||
}
|
||||
|
||||
//only used to get a count of words
|
||||
$searchwords = $searchsql = '';
|
||||
$ft = $pdo->queryDirect("SHOW INDEX FROM bookinfo WHERE key_name = 'ix_bookinfo_author_title_ft'");
|
||||
if ($ft->rowCount() !== 2) {
|
||||
$searchsql .= sprintf(" author LIKE %s AND title %s %s'", $pdo->escapeString('%' . $author . '%'), $like, $pdo->escapeString('%' . $title . '%'));
|
||||
} else {
|
||||
$title = preg_replace('/( - | -|\(.+\)|\(|\))/', ' ', $title);
|
||||
$title = preg_replace('/[^\w ]+/', '', $title);
|
||||
$title = trim(preg_replace('/\s\s+/i', ' ', $title));
|
||||
$title = trim($title);
|
||||
$words = explode(' ', $title);
|
||||
|
||||
foreach ($words as $word) {
|
||||
$word = trim(rtrim(trim($word), '-'));
|
||||
if ($word !== '' && $word !== '-') {
|
||||
$word = '+' . $word;
|
||||
$searchwords .= sprintf('%s ', $word);
|
||||
}
|
||||
}
|
||||
$searchwords = trim($searchwords);
|
||||
$searchsql .= sprintf(" MATCH(author, title) AGAINST(%s IN BOOLEAN MODE)", $pdo->escapeString($searchwords));
|
||||
}
|
||||
return $pdo->queryOneRow(sprintf("SELECT * FROM bookinfo WHERE %s", $searchsql));
|
||||
}
|
||||
|
||||
|
||||
public function getRange($start, $num)
|
||||
{
|
||||
if ($start === false) {
|
||||
|
||||
@@ -7,8 +7,8 @@ class IAFD
|
||||
|
||||
|
||||
const ADE = "Adult DVD Empire";
|
||||
const IAFDSEARCHURL = "http://www.iafd.com/results.asp?searchtype=title&searchstring=";
|
||||
const IAFDURL = "http://www.iafd.com";
|
||||
const IAFDSEARCHURL = "http://iafd.com.prx.proxyunblocker.org/results.asp?searchtype=title&searchstring=";
|
||||
const IAFDURL = "http://iafd.com.prx.proxyunblocker.org";
|
||||
const HM = "Hot Movies";
|
||||
public $classUsed = "";
|
||||
public $cookie = "";
|
||||
|
||||
@@ -103,7 +103,36 @@ class Musik
|
||||
*/
|
||||
public function getMusicInfoByName($artist, $album)
|
||||
{
|
||||
return $this->pdo->queryOneRow(sprintf("SELECT * FROM musicinfo WHERE title %s AND artist %s", $this->pdo->likeString($album, true, true), $this->pdo->likeString($artist, true, true)));
|
||||
$pdo = $this->pdo;
|
||||
$like = 'ILIKE';
|
||||
if ($pdo->dbSystem() === 'mysql') {
|
||||
$like = 'LIKE';
|
||||
}
|
||||
|
||||
//only used to get a count of words
|
||||
$searchwords = $searchsql = '';
|
||||
$ft = $pdo->queryDirect("SHOW INDEX FROM musicinfo WHERE key_name = 'ix_musicinfo_artist_title_ft'");
|
||||
if ($ft->rowCount() !== 2) {
|
||||
$searchsql .= sprintf(" artist LIKE %s AND title %s %s'", $pdo->escapeString('%' . $artist . '%'), $like, $pdo->escapeString('%' . $album . '%'));
|
||||
} else {
|
||||
$album = preg_replace('/( - | -|\(.+\)|\(|\))/', ' ', $album);
|
||||
$album = preg_replace('/[^\w ]+/', '', $album);
|
||||
$album = preg_replace('/(WEB|FLAC|CD)/', '', $album);
|
||||
$album = trim(preg_replace('/\s\s+/i', ' ', $album));
|
||||
$album = trim($album);
|
||||
$words = explode(' ', $album);
|
||||
|
||||
foreach ($words as $word) {
|
||||
$word = trim(rtrim(trim($word), '-'));
|
||||
if ($word !== '' && $word !== '-') {
|
||||
$word = '+' . $word;
|
||||
$searchwords .= sprintf('%s ', $word);
|
||||
}
|
||||
}
|
||||
$searchwords = trim($searchwords);
|
||||
$searchsql .= sprintf(" MATCH(artist, title) AGAINST(%s IN BOOLEAN MODE)", $pdo->escapeString($searchwords));
|
||||
}
|
||||
return $pdo->queryOneRow(sprintf("SELECT * FROM musicinfo WHERE %s", $searchsql));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -374,7 +403,7 @@ class Musik
|
||||
}
|
||||
|
||||
if (isset($amaz->Items->Item->ItemAttributes->Title)) {
|
||||
$mus['title'] = (string) $amaz->Items->Item->ItemAttributes->Title;
|
||||
$mus['title'] = (string)$amaz->Items->Item->ItemAttributes->Title;
|
||||
if (empty($mus['title'])) {
|
||||
return false;
|
||||
}
|
||||
@@ -390,41 +419,41 @@ class Musik
|
||||
}
|
||||
|
||||
// Get album properties.
|
||||
$mus['coverurl'] = (string) $amaz->Items->Item->LargeImage->URL;
|
||||
$mus['coverurl'] = (string)$amaz->Items->Item->LargeImage->URL;
|
||||
if ($mus['coverurl'] != "") {
|
||||
$mus['cover'] = 1;
|
||||
} else {
|
||||
$mus['cover'] = 0;
|
||||
}
|
||||
|
||||
$mus['asin'] = (string) $amaz->Items->Item->ASIN;
|
||||
$mus['asin'] = (string)$amaz->Items->Item->ASIN;
|
||||
|
||||
$mus['url'] = (string) $amaz->Items->Item->DetailPageURL;
|
||||
$mus['url'] = (string)$amaz->Items->Item->DetailPageURL;
|
||||
$mus['url'] = str_replace("%26tag%3Dws", "%26tag%3Dopensourceins%2D21", $mus['url']);
|
||||
|
||||
$mus['salesrank'] = (string) $amaz->Items->Item->SalesRank;
|
||||
$mus['salesrank'] = (string)$amaz->Items->Item->SalesRank;
|
||||
if ($mus['salesrank'] == "") {
|
||||
$mus['salesrank'] = 'null';
|
||||
}
|
||||
|
||||
$mus['artist'] = (string) $amaz->Items->Item->ItemAttributes->Artist;
|
||||
$mus['artist'] = (string)$amaz->Items->Item->ItemAttributes->Artist;
|
||||
if (empty($mus['artist'])) {
|
||||
$mus['artist'] = (string) $amaz->Items->Item->ItemAttributes->Creator;
|
||||
$mus['artist'] = (string)$amaz->Items->Item->ItemAttributes->Creator;
|
||||
if (empty($mus['artist'])) {
|
||||
$mus['artist'] = "";
|
||||
}
|
||||
}
|
||||
|
||||
$mus['publisher'] = (string) $amaz->Items->Item->ItemAttributes->Publisher;
|
||||
$mus['publisher'] = (string)$amaz->Items->Item->ItemAttributes->Publisher;
|
||||
|
||||
$mus['releasedate'] = $this->pdo->escapeString((string) $amaz->Items->Item->ItemAttributes->ReleaseDate);
|
||||
$mus['releasedate'] = $this->pdo->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['review'] = trim(strip_tags((string)$amaz->Items->Item->EditorialReviews->EditorialReview->Content));
|
||||
}
|
||||
|
||||
$mus['year'] = $year;
|
||||
@@ -434,7 +463,7 @@ class Musik
|
||||
|
||||
$mus['tracks'] = "";
|
||||
if (isset($amaz->Items->Item->Tracks)) {
|
||||
$tmpTracks = (array) $amaz->Items->Item->Tracks->Disc;
|
||||
$tmpTracks = (array)$amaz->Items->Item->Tracks->Disc;
|
||||
$tracks = $tmpTracks['Track'];
|
||||
$mus['tracks'] = (is_array($tracks) && !empty($tracks)) ? implode('|', $tracks) : '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user