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*/class SearchEngine extends SearchEngineBase{function SearchEngine($cfg){$this->mainURL = "isohunt.com";$this->altURL = "isohunt.com";$this->mainTitle = "isoHunt";$this->engineName = "isoHunt";$this->author = "kboy";$this->version = "1.00";$this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,878.0.html";$this->Initialize($cfg);}//----------------------------------------------------------------// Function to Make the Request (overriding base)function makeRequest($request){return parent::makeRequest($request, true);}//----------------------------------------------------------------// Function to get Latest..function getLatest(){$request = "/latest.php?mode=bt";if (!empty($this->pg)){$request .= "&pg=" . $this->pg;}if ($this->makeRequest($request)){return $this->parseResponse(true);}else{return $this->msg;}}//----------------------------------------------------------------// Function to perform Search.function performSearch($searchTerm){// This is what isohunt is looking for in a request.// http://isohunt.com/torrents.php?ihq=test&ext=&op=and// create the request string.$searchTerm = str_replace(" ", "+", $searchTerm);$request = "/torrents.php?ihq=".$searchTerm;$request .= "&ext=&op=and";if (!empty($this->pg)){$request .= "&ihs1=18&iho1=d&iht=-1&ihp=" . $this->pg;}$request .= "&submit=Torrents";// make the request if successful call the parse routine.if ($this->makeRequest($request)){return $this->parseResponse(false);}else{return $this->msg;}}//----------------------------------------------------------------// Function to parse the response.function parseResponse($latest = true){$output = $this->tableHeader();$thing = $this->htmlPage;// Strip out those Nasty Iframes.$thing = eregi_replace("<table[[:space:]]width=[[:punct:]]100%[[:punct:]][[:space:]]cellspacing=[[:punct:]]0[[:punct:]][[:space:]]cellpadding=[[:punct:]]0[[:punct:]][[:space:]]border=[[:punct:]]0[[:punct:]]><tr><td[[:space:]]width=[[:punct:]]10[[:punct:]]></td><td[[:space:]]style=[[:punct:]]border[[:punct:]]3px[[:space:]]solid[[:space:]]#003366[[:punct:]]><iframe[[:space:]]frameborder=[[:punct:]]0[[:punct:]][[:space:]]width=[[:punct:]]100%[[:punct:]][[:space:]]id=[[:punct:]]([a-zA-Z0-9])*[[:punct:]]></iframe></td></tr></table>",'',$thing);// We got a response so display it.// Chop the front end off.while (is_integer(strpos($thing,"<table"))){$thing = substr($thing,strpos($thing,"<table"));$thing = substr($thing,strpos($thing,"</tr>"));$tmpList = substr($thing,0,strpos($thing,"</table>"));// ok so now we have the listing.$tmpListArr = split("</tr>",$tmpList);$bg = $this->cfg["bgLight"];foreach($tmpListArr as $key =>$value){//echo $value;$buildLine = true;if (strpos($value,"id=")){$ts = new isoHunt($value,$latest);// Determine if we should build this outputif (is_int(array_search($ts->CatName,$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));// ok switch colors.if ($bg == $this->cfg["bgLight"]){$bg = $this->cfg["bgDark"];}else{$bg = $this->cfg["bgLight"];}}}}// set thing to end of this table.$thing = substr($thing,strpos($thing,"</table>"));}$output .= "</table>";// is there paging at the bottom?if (strpos($this->htmlPage, "<table class='pager'>") != false){// Yes, then lets grab it and display it! ;)$thing = substr($this->htmlPage,strpos($this->htmlPage,"<table class='pager'>")+strlen("<table class='pager'>"));$pages = substr($thing,0,strpos($thing,"</table>"));$pages = str_replace(" ",'',strip_tags($pages,"<a><b>"));$tmpPageArr = split("</a>",$pages);array_pop($tmpPageArr);$pagesout = '';foreach($tmpPageArr as $key => $value){$value .= "</a> ";$tmpVal = substr($value,strpos($value,"/torrents.php"),strpos($value,"\>")-1);$pgNum = substr($tmpVal,strpos($tmpVal,"ihp=")+strlen("ihp="));$pagesout .= str_replace($tmpVal,"XXXURLXXX".$pgNum,$value);}if(strpos($this->curRequest,"LATEST")){$pages = str_replace("XXXURLXXX",$this->searchURL()."&LATEST=1&pg=",$pagesout);}else{$pages = str_replace("XXXURLXXX",$this->searchURL()."&searchterm=".$_REQUEST["searchterm"]."&pg=",$pagesout);}$pages = strip_tags($pages,"<a><b>");$output .= "<div align=center>".$pages."</div>";}return $output;}}// This is a worker class that takes in a row in a table and parses it.class isoHunt{var $torrentName = "";var $torrentDisplayName = "";var $torrentFile = "";var $torrentSize = "";var $torrentStatus = "";var $CatId = "";var $CatName = "";var $fileCount = "";var $Seeds = "";var $Peers = "";var $Data = "";var $dateAdded = "";var $dwnldCount = "";function isoHunt( $htmlLine , $latest = true){if (strlen($htmlLine) > 0){$this->Data = $htmlLine;// Fix messed up end td's once in a while.$htmlLine = eregi_replace("<(.)*1ff8(.)*/td>",'</td>',$htmlLine);// Chunck up the row into columns.$tmpListArr = split("</td>",$htmlLine);array_pop($tmpListArr);//Age Type Torrent Names MB F S L Dif(count($tmpListArr) > 6){if ($latest){// Latest Request //if(strpos($tmpListArr["3"],"[DL]")){//$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age$this->CatName = $this->cleanLine($tmpListArr["2"]); // Type$tmpStr = $tmpListArr["3"]; // TorrentName and Download Link// move to the [DL] area. and remove [REL] line$tmpStr = substr($tmpStr,strpos($tmpStr,"[DL]")+strlen("[DL]"), strpos($tmpStr,"[REL]"));$tmpStr = substr($tmpStr,strpos($tmpStr,"href=\"")+strlen("href=\"")); // Download Link$this->torrentFile = "http://isohunt.com".substr($tmpStr,0,strpos($tmpStr,"\""));$tmpStr = substr($tmpStr,strpos($tmpStr,"title=\"")+strlen("title=\""));$tmpStr = substr($tmpStr,0,strpos($tmpStr,"\""));$tmpStr = substr($tmpStr,strpos($tmpStr,'\''));$this->torrentName = str_replace("'",'',$tmpStr);$this->torrentSize = $this->cleanLine($tmpListArr["4"]); // MB$this->fileCount = $this->cleanLine($tmpListArr["5"]); // Files$this->Seeds = $this->cleanLine($tmpListArr["6"]); // Seeds$this->Peers = $this->cleanLine($tmpListArr["7"]); // Peers / Leechers$this->dwnldCount = $this->cleanLine($tmpListArr["8"]); // Download Count}else{$this->CatName = $this->cleanLine($tmpListArr["1"]); // Type$tmpStr = $tmpListArr["0"]; // TorrentName and Download Link$tmpStr = substr($tmpStr,strpos($tmpStr,"id="));$this->torrentFile = "http://isohunt.com/download.php?mode=bt&".substr($tmpStr,0,strpos($tmpStr,"'"));$this->torrentName = $this->cleanLine($tmpListArr["2"]);$this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB$this->fileCount = $this->cleanLine($tmpListArr["4"]); // Files$this->Seeds = $this->cleanLine($tmpListArr["5"]); // Seeds$this->Peers = $this->cleanLine($tmpListArr["6"]); // Peers / Leechers$this->dwnldCount = $this->cleanLine($tmpListArr["7"]); // Download Count}}else{// Search Request //if(strpos($tmpListArr["2"],"[DL]")){$this->CatName = $this->cleanLine($tmpListArr["0"]); // Type//$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age$tmpStr = $tmpListArr["2"]; // TorrentName and Download Link// move to the [DL] area. and remove [REL] line$tmpStr = substr($tmpStr,strpos($tmpStr,"[DL]")+strlen("[DL]"), strpos($tmpStr,"[REL]"));$tmpStr = substr($tmpStr,strpos($tmpStr,"href=\"")+strlen("href=\"")); // Download Link$this->torrentFile = "http://isohunt.com".substr($tmpStr,0,strpos($tmpStr,"\""));$tmpStr = substr($tmpStr,strpos($tmpStr,"title=\"")+strlen("title=\""));$tmpStr = substr($tmpStr,0,strpos($tmpStr,"\""));$tmpStr = substr($tmpStr,strpos($tmpStr,'\''));$this->torrentName = str_replace(array("'","Download .torrent here: "),'',$tmpStr);}else{$tmpStr = $tmpListArr["0"]; // Download ID and Type$this->CatName = $this->cleanLine($tmpStr); // Download ID and Type$tmpStr = substr($tmpStr,strpos($tmpStr,"&id=")+strlen("&id="));$this->torrentFile = "http://isohunt.com/download.php?mode=bt&id=".substr($tmpStr,0,strpos($tmpStr,",")-1);//$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age$this->torrentName = $this->cleanLine($tmpListArr["2"]);}$this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB$this->fileCount = $this->cleanLine($tmpListArr["4"]); // Files$this->Seeds = $this->cleanLine($tmpListArr["5"]); // Seeds$this->Peers = $this->cleanLine($tmpListArr["6"]); // Peers / Leechers$this->dwnldCount = $this->cleanLine($tmpListArr["7"]); // Download Count$this->torrentDisplayName = $this->torrentName;}if ($this->Peers == ''){$this->Peers = "N/A";if (empty($this->Seeds)) $this->Seeds = "N/A";}if ($this->Seeds == '') $this->Seeds = "N/A";$this->torrentDisplayName = str_replace(".torrent",'',$this->torrentName);if(strlen($this->torrentDisplayName) > 50){$this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."...";}}}}function cleanLine($stringIn,$tags=''){if(empty($tags))return trim(str_replace(array(" "," ")," ",strip_tags($stringIn)));elsereturn trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags)));}function dumpArray($arrIn){foreach($arrIn as $key => $value){echo "\nkey(".$key.")"."value(".$value.")";}}//----------------------------------------------------------------// Function to build output for the table.function BuildOutput($bg){$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."\" 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";$output .= " <td bgcolor=\"".$bg."\">". $this->CatName ."</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 .= "</tr>\n";return $output;}}?>