Blame | Last modification | View Log | Download
<?php/************************************************************** TorrentFlux PHP Torrent Manager* www.torrentflux.com**************************************************************//*This file is part of TorrentFlux.TorrentFlux is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.TorrentFlux is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with TorrentFlux; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//*v 1.00 - Mar 31, 06 - Created*/class SearchEngine extends SearchEngineBase{var $dateAdded = "";function SearchEngine($cfg){$this->mainURL = "newnova.org";$this->altURL = "newnova.org";$this->mainTitle = "NewNova";$this->engineName = "NewNova";$this->author = "kboy";$this->version = "1.00";$this->updateURL = "http://www.torrentflux.com/forum/index.php?topic=1002.0.html";$this->Initialize($cfg);}//----------------------------------------------------------------// Function to Get Main Categoriesfunction populateMainCategories(){$this->mainCatalog["1"] = "Games";$this->mainCatalog["2"] = "Movies";$this->mainCatalog["3"] = "TV Shows";$this->mainCatalog["4"] = "Music";$this->mainCatalog["5"] = "Apps";$this->mainCatalog["6"] = "Miscellaneous";$this->mainCatalog["7"] = "Anime";}//----------------------------------------------------------------// Function to Get Sub Categoriesfunction getSubCategories($mainGenre){$output = array();$mainGenreName = $this->GetMainCatName($mainGenre);if($mainGenre == "6"){$mainGenreName = "Misc";}$request = '/list_torrents/' . str_replace(" ","",strtolower($mainGenreName)) . '.html';if ($this->makeRequest($request)){$thing = $this->htmlPage;if (is_integer(strpos($thing,"seperator"))){$thing = substr($thing,strpos($thing,"seperator")+strlen("seperator"));$thing = substr($thing,strpos($thing,"<table"));$thing = substr($thing,0,strpos($thing,"</table>"));while (is_integer(strpos($thing,"href=\"JavaScript:showTbl2("))){$thing = substr($thing,strpos($thing,"href=\"JavaScript:showTbl2(")+strlen("href=\"JavaScript:showTbl2("));$tmpStr = substr($thing,0,strpos($thing,')'));$tmpArr = split(",",$tmpStr);$subid = substr($tmpArr[0],strpos($tmpArr[0],'/')+1);while(is_integer(strpos($subid,"/"))){$subid = substr($subid,strpos($subid,'/')+1);}$subid = str_replace(array("'"),"",$subid);$subname = str_replace(array("'"),"",$tmpArr[1]);if($subname != $mainGenreName){$output[$subid] = $subname;}}}}return $output;}//----------------------------------------------------------------// Function to get Latest..function getLatest(){//http://www.newnova.org/list_news.html$request = "/list_news.html";if (array_key_exists("mode",$_REQUEST)){if($_REQUEST["mode"] == "yesterday" ){$request = "/list_news_1.html";}}if (array_key_exists("subGenre",$_REQUEST)){$request = "/list_torrents/".$_REQUEST["subGenre"].".html";}if (array_key_exists("dteAdded",$_REQUEST)){$this->dateAdded = $_REQUEST["dteAdded"];}if ($this->makeRequest($request)){return $this->parseResponse();}else{return $this->msg;}}//----------------------------------------------------------------// Function to perform Search.function performSearch($searchTerm){$request = "/search.foo?data[searchTerm]=".$searchTerm."&";if ($this->makeRequest($request)){return $this->parseResponse();}else{return $this->msg;}}//----------------------------------------------------------------// Override the base to show custom table header.// Function to setup the table headerfunction tableHeader(){$output = "<table width=\"100%\" cellpadding=3 cellspacing=0 border=0>";$output .= "<br>\n";$output .= "<tr bgcolor=\"".$this->cfg["table_header_bg"]."\">";$output .= "<td colspan=7 align=center><strong>".$this->dateAdded."</strong></td>";$output .= "</tr>\n";$output .= "<tr bgcolor=\"".$this->cfg["table_header_bg"]."\">";$output .= " <td> </td>";$output .= " <td><strong>Torrent Name</strong> (";$tmpURI = str_replace(array("?hideSeedless=yes","&hideSeedless=yes","?hideSeedless=no","&hideSeedless=no"),"",$_SERVER["REQUEST_URI"]);// Check to see if Question mark is there.if (strpos($tmpURI,'?')){$tmpURI .= "&";}else{$tmpURI .= "?";}if($this->hideSeedless == "yes"){$output .= "<a href=\"". $tmpURI . "hideSeedless=no\">Show Seedless</a>";}else{$output .= "<a href=\"". $tmpURI . "hideSeedless=yes\">Hide Seedless</a>";}$output .= ")</td>";$output .= " <td><strong>Category</strong></td>";$output .= " <td align=center><strong> Size</strong></td>";$output .= " <td><strong>Seeds</strong></td>";$output .= " <td><strong>Peers</strong></td>";$output .= " <td align=center><strong>Kind</strong></td>";$output .= "</tr>\n";return $output;}//----------------------------------------------------------------// Function to parse the response.function parseResponse(){if (is_integer(strpos($this->htmlPage,"seperator"))){$dteAdded = substr($this->htmlPage,strpos($this->htmlPage,"seperator",20)+strlen("seperator"));$dteAdded = substr($dteAdded,strpos($dteAdded,">")+1);$this->dateAdded = substr($dteAdded,0,strpos($dteAdded,"<"));}else{if (!strlen($this->dateAdded) > 0){$this->dateAdded = date(' j. F Y',time());}}$output = $this->tableHeader();$thing = $this->htmlPage;if (is_integer(strpos($thing,"Loading..."))){$thing = substr($thing,strpos($thing,"Loading..."));$thing = substr($thing,strpos($thing,"<script>")+strlen("<script>"));$tmpList = substr($thing,0,strpos($thing,"</script>"));}else{$tmpList = $thing;}// We got a response so display it.// Chop the front end off.if (is_integer(strpos($tmpList,"at2_nws_hdr"))){$output .= $this->nwsTableRows($tmpList);}elseif (is_integer(strpos($tmpList,"at2_header"))){$output .= $this->at2TableRows($tmpList);}else{if(is_integer(strpos($thing,"search returned no results"))){$output .= "<center>Your search returned no results. Please refine your search</center><br>";}}if (is_integer(strpos($thing,"seperator"))){$dteAdd = substr($thing,strpos($thing,"seperator",20)+strlen("seperator"));$dteAdd = substr($dteAdd,strpos($dteAdd,">")+1);$dteAdd = substr($dteAdd,0,strpos($dteAdd,"<"));}$output .= "</table>";$pages = '';if(array_key_exists("LATEST",$_REQUEST)){if (array_key_exists("mode",$_REQUEST)){if (! $_REQUEST["mode"] == "yesterday"){$pages .= "<br><a href=\"".$this->searchURL()."&LATEST=1&mode=yesterday&dteAdded=".$dteAdd."\" title=\"Yesterday's Latest\">Yesterday's Latest</a>";}}else{$pages .= "<br><a href=\"".$this->searchURL()."&LATEST=1&mode=yesterday&dteAdded=".$dteAdd."\" title=\"Yesterday's Latest\">Yesterday's Latest</a>";}$output .= "<br><div align=center>".$pages."</div><br>";}return $output;}function at2TableRows($tmpList){$output = '';$bg = $this->cfg["bgLight"];while (is_integer(strpos($tmpList,"at2_header"))){$tmpList = substr($tmpList,strpos($tmpList,"at2_header(")+strlen("at2_header('"));$curCat = substr($tmpList,0,strpos($tmpList,"'"));$tmpList = substr($tmpList,strpos($tmpList,"at2("));if (is_int(array_search($curCat,$this->catFilter))){// Skip this category.}else{// We have something to-do.if (is_integer(strpos($tmpList,"at2_header("))){$tmpList2 = substr($tmpList,0,strpos($tmpList,"at2_header("));}elseif (is_integer(strpos($tmpList,"str.push"))){$tmpList2 = substr($tmpList,0,strpos($tmpList,"str.push"));}//prepare line$tmpList2 = str_replace("at2(","",$tmpList2);// ok so now we have the listing.$tmpListArr = split(");",$tmpList2);$output .= $this->buildTableRows($tmpListArr, $bg);}// set tmpList to end of this category.if (is_integer(strpos($tmpList,"at2_header("))){$tmpList = substr($tmpList,strpos($tmpList,"at2_header("));}elseif (is_integer(strpos($tmpList,"str.push"))){$tmpList = substr($tmpList,strpos($tmpList,"str.push"));}// ok switch colors.if ($bg == $this->cfg["bgLight"]){$bg = $this->cfg["bgDark"];}else{$bg = $this->cfg["bgLight"];}}return $output;}function nwsTableRows($tmpList){$output = '';$bg = $this->cfg["bgLight"];while (is_integer(strpos($tmpList,"at2_nws_hdr"))){$tmpList = substr($tmpList,strpos($tmpList,"at2_nws_hdr(")+strlen("at2_nws_hdr('"));$curCat = substr($tmpList,0,strpos($tmpList,"'"));$tmpList = substr($tmpList,strpos($tmpList,"at2("));if (is_int(array_search($curCat,$this->catFilter))){// Skip this category.}else{// We have something to-do.if (is_integer(strpos($tmpList,"at2_nws_hdr("))){$tmpList2 = substr($tmpList,0,strpos($tmpList,"at2_nws_hdr("));}elseif (is_integer(strpos($tmpList,"str.push"))){$tmpList2 = substr($tmpList,0,strpos($tmpList,"str.push"));}//prepare line$tmpList2 = str_replace("at2(","",$tmpList2);// ok so now we have the listing.$tmpListArr = split(");",$tmpList2);$output .= $this->buildTableRows($tmpListArr, $bg);}// set tmpList to end of this category.if (is_integer(strpos($tmpList,"at2_nws_hdr("))){$tmpList = substr($tmpList,strpos($tmpList,"at2_nws_hdr("));}elseif (is_integer(strpos($tmpList,"str.push"))){$tmpList = substr($tmpList,strpos($tmpList,"str.push"));}// ok switch colors.if ($bg == $this->cfg["bgLight"]){$bg = $this->cfg["bgDark"];}else{$bg = $this->cfg["bgLight"];}}return $output;}function buildTableRows($tmpListArr, $bg){$output = "";foreach($tmpListArr as $key =>$value){$buildLine = true;$ts = new tNova($value);// Determine if we should build this outputif (is_int(array_search($ts->MainCategory,$this->catFilter))){$buildLine = false;}if ($this->hideSeedless == "yes"){if($ts->Seeds == "N/A" || $ts->Seeds == "0"){$buildLine = false;}}if (!empty($ts->torrentFile) && $buildLine) {$output .= trim($ts->BuildOutput($bg, $this->searchURL()));// ok switch colors.if ($bg == $this->cfg["bgLight"]){$bg = $this->cfg["bgDark"];}else{$bg = $this->cfg["bgLight"];}}}return $output;}}// This is a worker class that takes in a row in a table and parses it.class tNova{var $torrentName = "";var $torrentDisplayName = "";var $torrentFile = "";var $torrentSize = "";var $torrentStatus = "";var $MainId = "";var $MainCategory = "";var $SubCategory = "";var $fileCount = "";var $torrentAdded = "";var $Seeds = "";var $Peers = "";var $Data = "";/*function at2 (0 torrent_id,1 torrent_additiondate_day,2 torrent_server_id,3 torrent_viewserver_id,4 torrent_view_link,5 torrent_link_desc,6 torrent_name,7 torrent_link,8 torrent_filesize_mb,9 torrent_lastnrseeds,10 torrent_lastnrleeches,11 torrent_quality,12 torrent_submitter_id,13 torrent_submitter_nickname,14 torrent_submitter_status,15 torrent_infolink,16 torrent_type_id,17 torrent_tracker_has_nostats,18 torrent_tracker_has_unknownstats,19 torrent_lastcheck_nr_invalid,20 torrent_is_moderated,21 torrent_is_deleted,22 torrent_is_softdeleted,23 torrent_has_rights,24 torrent_tracker_registered)*/function tNova( $htmlLine , $dteAdded = ""){if (strlen($htmlLine) > 0){$this->Data = $htmlLine;// Chunck up the row into columns.$tmpListArr = split(",",str_replace(array("'"),"",$htmlLine));if(count($tmpListArr) >= 24){$this->torrentAdded = " | Added" . $dteAdded . " " . $tmpListArr[1];if(strlen($tmpListArr[13])>0){$this->torrentAdded .= " By ". $tmpListArr[13];}if( $tmpListArr[2]){$this->torrentFile = "http://www.newnova.org/site/torrents/" . trim($tmpListArr[7]);}else{$this->torrentFile = "http://www.newnova.org/get/" . trim($tmpListArr[7]);}$tmpArr = split(" - ",$tmpListArr[5]);if(count($tmpArr) == 2){$this->MainCategory = trim($tmpArr[0]);$this->SubCategory = trim($tmpArr[1]);}else{$this->MainCategory = trim($tmpListArr[5]);}$this->torrentName = $tmpListArr[6];$this->torrentSize = $tmpListArr[8];$this->Seeds = $tmpListArr[9];$this->Peers = $tmpListArr[10];$this->torrentStatus = $tmpListArr[11];if ($this->Peers == ''){$this->Peers = "N/A";if (empty($this->Seeds)) $this->Seeds = "N/A";}if ($this->Seeds == '') $this->Seeds = "N/A";$this->torrentDisplayName = $this->torrentName;if(strlen($this->torrentDisplayName) > 50){$this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."...";}}}}//----------------------------------------------------------------// Function to build output for the table.function BuildOutput($bg, $searchURL = ''){$output = "<tr>\n";$output .= " <td width=16 bgcolor=\"".$bg."\"><a href=\"index.php?url_upload=".$this->torrentFile."\"><img src=\"images/download_owner.gif\" width=\"16\" height=\"16\" title=\"".$this->torrentName." ".$this->torrentAdded."\" border=0></a></td>\n";$output .= " <td bgcolor=\"".$bg."\"><a href=\"index.php?url_upload=".$this->torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."</a></td>\n";if (strlen($this->SubCategory) > 1){$genre = $this->MainCategory . " - " . $this->SubCategory;}else{$genre = $this->MainCategory;}$output .= " <td bgcolor=\"".$bg."\">". $genre ."</td>\n";$output .= " <td bgcolor=\"".$bg."\" align=right>".$this->torrentSize."</td>\n";$output .= " <td bgcolor=\"".$bg."\" align=center>".$this->Seeds."</td>\n";$output .= " <td bgcolor=\"".$bg."\" align=center>".$this->Peers."</td>\n";$output .= " <td bgcolor=\"".$bg."\" align=center>".$this->torrentStatus."</td>\n";$output .= "</tr>\n";return $output;}}?>