mainURL = "bitsoup.org"; $this->altURL = "www.bitsoup.org"; $this->mainTitle = "BitSoup"; $this->engineName = "BitSoup"; $this->author = "kboy"; $this->version = "1.05-tfb"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1035.0.html"; $this->Initialize($cfg); } //---------------------------------------------------------------- // Function to Get Main Categories function populateMainCategories() { $this->mainCatalog["0"] = "(all types)"; $this->mainCatalog["23"] = "Anime"; $this->mainCatalog["22"] = "Appz/Misc"; $this->mainCatalog["1"] = "Appz/PC ISO"; $this->mainCatalog["24"] = "Ebooks"; $this->mainCatalog["4"] = "Games/PC ISO"; $this->mainCatalog["21"] = "Games/PC Rips"; $this->mainCatalog["17"] = "Games/PS2"; $this->mainCatalog["26"] = "Games/Xbox"; $this->mainCatalog["12"] = "GBA/Gamecube"; $this->mainCatalog["20"] = "Movies/DVD-R"; $this->mainCatalog["27"] = "Movies/Other"; $this->mainCatalog["5"] = "Movies/SVCD"; $this->mainCatalog["19"] = "Movies/XviD"; $this->mainCatalog["6"] = "Music"; $this->mainCatalog["29"] = "Music Videos"; $this->mainCatalog["28"] = "Other/MISC"; $this->mainCatalog["30"] = "PSP/Handheld"; $this->mainCatalog["7"] = "TV-Episodes"; $this->mainCatalog["9"] = "Pron"; } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $cat = tfb_getRequestVar('mainGenre'); if (empty($cat)) $cat = tfb_getRequestVar('cat'); $request = "/browse.php"; if(!empty($cat)) { if(strpos($request,"?")) { $request .= "&cat=".$cat; } else { $request .= "?cat=".$cat; } } if (!empty($this->pg)) { if(strpos($request,"?")) { $request .= "&page=" . $this->pg; } else { $request .= "?page=" . $this->pg; } } if ($this->makeRequest($request,true)) { if (strlen($this->htmlPage) > 0 ) { return $this->parseResponse(); } else { return 'Unable to Browse at this time.'; } } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { // This is what bitsoup is looking for in a request. // http://www.bitsoup.org/browse.php?search=test&cat=23&incldead=1 // create the request string. $searchTerm = str_replace(" ", "+", $searchTerm); $request = "/browse.php?search=".$searchTerm; if(!empty($cat)) { $request .= "&cat=".$cat; } $incldead = tfb_getRequestVar('incldead'); if (empty($incldead)) $incldead = "0"; $request .= "&incldead=".$incldead; if (!empty($this->pg)) { $request .= "&page=" . $this->pg; } if ($this->makeRequest($request,true)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Override the base to show custom table header. // Function to setup the table header function tableHeader() { $tmpStr = $this->htmlPage; if (strpos($tmpStr,">Wait 0) { $needWait = true; } else { $needWait = false; } $output = ""; $output .= "
\n"; $output .= "cfg["bgLight"]."\">"; if ($needWait) { $output .= " "))).""; $output .= ""; $output .= "cfg["table_header_bg"]."\">"; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; if ($needWait) { $output .= " "; } $output .= " "; $output .= "\n"; return $output; } //---------------------------------------------------------------- // Function to parse the response. function parseResponse($latest = true) { $output = $this->tableHeader(); $thing = $this->htmlPage; if(strpos($thing,"Error:") > 0) { $tmpStr = substr($thing,strpos($thing,"Error:")+strlen("Error:")); $tmpStr = substr($tmpStr,0,strpos($tmpStr,"

")); $this->msg = strip_tags($tmpStr); return $output . "
".$this->msg."

"; } // We got a response so display it. // Chop the front end off. $thing = substr($thing,strpos($thing,">Upped by<")); $thing = substr($thing,strpos($thing,"")+strlen("")); $tmpList = substr($thing,0,strpos($thing,"
"; } else { $output .= " "; } $tmpStr = substr($tmpStr,strpos($tmpStr,"\"statusbar\"")); $tmpStr = substr($tmpStr,strpos($tmpStr,"".$tmpStr,0,strpos($tmpStr,"
 Torrent Name  ("; $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 .= "Show Seedless"; } else { $output .= "Hide Seedless"; } $output .= ")Category  SizeSeedsPeersWaitSnatched
")); // ok so now we have the listing. $tmpListArr = explode("",$tmpList); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { //echo $value; $buildLine = true; if (strpos($value,"id=")) { $ts = new bitSoup($value, $this->mainURL); // Determine if we should build this output if (is_int(array_search($ts->MainId,$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"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"")); $output .= ""; // is there paging at the bottom? if (strpos($thing, "page=") != false) { // Yes, then lets grab it and display it! ;) $pages = substr($thing,strpos($thing,"")); $pages = substr($pages,0,strpos($pages,"

")); $pages = str_replace("  ",'',$pages); $tmpPageArr = explode("",$pages); array_pop($tmpPageArr); $pagesout = ''; foreach($tmpPageArr as $key => $value) { $value .= "  "; //$tmpVal = substr($value,strpos($value,"browse.php?")); $tmpVal = substr($value,strpos($value,"browse.php?"),strpos($value,"\">")-2); $pgNum = substr($tmpVal,strpos($tmpVal,"page=")+strlen("page=")); $pagesout .= str_replace($tmpVal,"XXXURLXXX".$pgNum,$value); } $pagesout = str_replace("se.php?page=","",$pagesout); $cat = tfb_getRequestVar('mainGenre'); if (empty($cat)) $cat = tfb_getRequestVar('cat'); if(strpos($this->curRequest,"LATEST")) { if (!empty($cat)) { $pages = str_replace("XXXURLXXX",$this->searchURL()."&LATEST=1&cat=".$cat."&pg=",$pagesout); } else { $pages = str_replace("XXXURLXXX",$this->searchURL()."&LATEST=1&pg=",$pagesout); } } else { if(!empty($cat)) { $pages = str_replace("XXXURLXXX",$this->searchURL()."&searchterm=".$_REQUEST["searchterm"]."&cat=".$cat."&pg=",$pagesout); } else { $pages = str_replace("XXXURLXXX",$this->searchURL()."&searchterm=".$_REQUEST["searchterm"]."&pg=",$pagesout); } } $output .= "
".substr($pages,1)."
"; } return $output; } } // This is a worker class that takes in a row in a table and parses it. class bitSoup { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $MainId = ""; var $MainCategory = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $needsWait = false; var $waitTime = ""; var $Data = ""; var $torrentRating = ""; function bitSoup( $htmlLine, $dwnURL ) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Cleanup any bugs in the HTML $htmlLine = preg_replace("/\n/i",'',$htmlLine); // Chunck up the row into columns. $tmpListArr = explode(" 12) { $tmpStr = substr($tmpListArr["1"],strpos($tmpListArr["1"],"alt=\"")+strlen("alt=\"")); // MainCategory $this->MainCategory = substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpListArr["1"],strpos($tmpListArr["1"],"cat=")+strlen("cat=")); // Main Id $this->MainId = trim(substr($tmpStr,0,strpos($tmpStr,"\""))); if (empty($this->MainId)) { if(strpos($tmpListArr["1"],"pron") > 0 ) { $this->MainId = "9"; $this->MainCategory = "Pron"; } } $this->torrentName = $this->cleanLine(""); // TorrentName $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"id=")+strlen("id=")); // File Id $tmpStr = substr($tmpStr,0,strpos($tmpStr,"&")); $this->torrentFile = "http://".$dwnURL."/download.php/".$tmpStr."/"; if($this->MainId == "9") { $this->torrentFile .= $this->torrentName.".torrent"; } else { $this->torrentFile .= str_replace(" ","_",$this->torrentName).".torrent"; } $this->needsWait = true; $this->waitTime = $this->cleanLine(""); // Wait Time $this->fileCount = $this->cleanLine(""); // File Count $this->torrentSize = $this->cleanLine(""); // Size of File $this->torrentStatus = $this->cleanLine(str_replace("
"," ","")); // Snatched $this->Seeds = $this->cleanLine(""); // Seeds $this->Peers = $this->cleanLine(""); // Leech 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)."..."; } } elseif (count($tmpListArr) > 11) { $tmpStr = substr($tmpListArr["1"],strpos($tmpListArr["1"],"alt=\"")+strlen("alt=\"")); // MainCategory $this->MainCategory = substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpListArr["1"],strpos($tmpListArr["1"],"cat=")+strlen("cat=")); // Main Id $this->MainId = substr($tmpStr,0,strpos($tmpStr,"\"")); if (empty($this->MainId)) { if(strpos($tmpListArr["1"],"pron") > 0 ) { $this->MainId = "9"; $this->MainCategory = "Pron"; } } $this->torrentName = $this->cleanLine(""); // TorrentName $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"id=")+strlen("id=")); // File Id $tmpStr = substr($tmpStr,0,strpos($tmpStr,"&")); $this->torrentFile = "http://".$dwnURL."/download.php/".$tmpStr."/"; if($this->MainId == "9") { $this->torrentFile .= $this->torrentName.".torrent"; } else { $this->torrentFile .= str_replace(" ","_",$this->torrentName).".torrent"; } $this->fileCount = $this->cleanLine(""); // File Count $this->torrentSize = $this->cleanLine(""); // Size of File $this->torrentStatus = $this->cleanLine(str_replace("
"," ","")); // Snatched $this->Seeds = $this->cleanLine(""); // Seeds $this->Peers = $this->cleanLine(""); // Leech 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 cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg, $searchURL = '') { $output = "\n"; $output .= " torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; if (strlen($this->MainCategory) > 1){ $genre = "MainId."\">".$this->MainCategory.""; }else{ $genre = ""; } $output .= " ". $genre ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; if ($this->needsWait) { $output .= " ".$this->waitTime."\n"; } $output .= " ".$this->torrentStatus."\n"; $output .= "\n"; return $output; } } ?>