| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- <?php
- /* $Id: OinkMeEngine.php 2955 2007-04-30 15:21:07Z munk $ */
- /*************************************************************
- * TorrentFlux PHP Torrent Manager
- * www.torrentflux.com
- **************************************************************/
- /*
- This file is part of TorrentFlux.
- TorrentFlux is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the 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 of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with TorrentFlux; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- include_once("SearchEngineBase.php");
- class SearchEngine extends SearchEngineBase
- {
- function SearchEngine($cfg)
- {
- $this->mainURL = "oink.me.uk";
- $this->altURL = "oink.me.uk";
- $this->mainTitle = "OinkMe";
- $this->engineName = "OinkMe";
- $this->author = "JimmyTheGrunt, and Anglachel";
- $this->version = "1.11-tfb";
- $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1096.0.html";
- //$this->updateURL = "http://www.torrentflux.com/forum/index.php";
- $this->Initialize($cfg);
- }
- //----------------------------------------------------------------
- // Function to Get Main Categories
- function populateMainCategories()
- {
- $this->mainCatalog["41"] = "Audio Books (Fiction)";
- $this->mainCatalog["89"] = "Audio Books (Non-Fiction)";
- $this->mainCatalog["44"] = "Comedy";
- $this->mainCatalog["88"] = "Comics";
- $this->mainCatalog["90"] = "Components";
- $this->mainCatalog["33"] = "eBooks (Fiction)";
- $this->mainCatalog["81"] = "eBooks (Non-Fiction)";
- $this->mainCatalog["82"] = "eLearning Videos";
- $this->mainCatalog["69"] = "Mac Apps";
- $this->mainCatalog["62"] = "Music Apps";
- $this->mainCatalog["35"] = "Phone";
- $this->mainCatalog["83"] = "Sheet Music";
- $this->mainCatalog["22"] = "Win Apps";
- $this->mainCatalog["47"] = "60s";
- $this->mainCatalog["48"] = "70s";
- $this->mainCatalog["49"] = "80s";
- $this->mainCatalog["50"] = "90s";
- $this->mainCatalog["39"] = "Alternative";
- $this->mainCatalog["56"] = "Ambient";
- $this->mainCatalog["73"] = "Asian";
- $this->mainCatalog["84"] = "Bluegrass";
- $this->mainCatalog["53"] = "Blues";
- $this->mainCatalog["78"] = "Breaks";
- $this->mainCatalog["43"] = "Classical";
- $this->mainCatalog["34"] = "Country";
- $this->mainCatalog["24"] = "Dance";
- $this->mainCatalog["55"] = "Drum 'n' Bass";
- $this->mainCatalog["6"] = "Electronic";
- $this->mainCatalog["58"] = "Emo";
- $this->mainCatalog["63"] = "Experimental";
- $this->mainCatalog["59"] = "Folk";
- $this->mainCatalog["75"] = "Funk";
- $this->mainCatalog["60"] = "Garage";
- $this->mainCatalog["76"] = "Hardcore";
- $this->mainCatalog["30"] = "Hip-Hop/Rap";
- $this->mainCatalog["40"] = "House";
- $this->mainCatalog["51"] = "IDM";
- $this->mainCatalog["38"] = "Indie";
- $this->mainCatalog["57"] = "Industrial";
- $this->mainCatalog["77"] = "J-Music";
- $this->mainCatalog["37"] = "Jazz";
- $this->mainCatalog["65"] = "Kids";
- $this->mainCatalog["85"] = "Latin";
- $this->mainCatalog["31"] = "Metal";
- $this->mainCatalog["25"] = "Misc";
- $this->mainCatalog["27"] = "OST";
- $this->mainCatalog["1"] = "Pop";
- $this->mainCatalog["86"] = "Post-Rock";
- $this->mainCatalog["46"] = "Pre 60s";
- $this->mainCatalog["80"] = "Psychedelic";
- $this->mainCatalog["42"] = "Punk";
- $this->mainCatalog["28"] = "R'n'B";
- $this->mainCatalog["32"] = "Reggae";
- $this->mainCatalog["23"] = "Rock";
- $this->mainCatalog["61"] = "Ska";
- $this->mainCatalog["45"] = "Soul";
- $this->mainCatalog["71"] = "Techno";
- $this->mainCatalog["66"] = "Trance";
- $this->mainCatalog["74"] = "Trip Hop";
- $this->mainCatalog["64"] = "UK Garage";
- $this->mainCatalog["54"] = "World/Ethnic";
- $this->mainCatalog["87"] = "Xmas";
- }
- //----------------------------------------------------------------
- // 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)
- {
- // 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()
- {
- $output = "<table width=\"100%\" cellpadding=3 cellspacing=0 border=0>";
- $output .= "<br>\n";
- $output .= "<tr bgcolor=\"".$this->cfg["bgLight"]."\">";
- if ($needWait)
- {
- $output .= " <td colspan=8 align=center>";
- }
- else
- {
- $output .= " <td colspan=7 align=center>";
- }
- if (is_integer(strpos($this->htmlPage,"Welcome back, ")))
- {
- $userinfo = substr($this->htmlPage,strpos($this->htmlPage,"Welcome back, ")+strlen("Welcome back, "));
- $userinfo = substr($userinfo,strpos($userinfo,"<br />")+strlen("<br />"));
- $userinfo = substr($userinfo,0,strpos($userinfo,"<br />"));
- //$userinfo = substr($userinfo,strpos($userinfo,"<br>")+strlen("<br>"));
- //$userinfo = str_replace("<font class=\"font_10px\">","",$userinfo);
- //$userinfo = str_replace("</font>","",$userinfo);
- //$userinfo = str_replace("<br>","",$userinfo);
- //$output .= "<tr bgcolor=\"".$this->cfg["table_header_bg"]."\">";
- $output .= $userinfo;
- }
- $output .= "</td></tr>";
- $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><strong>Snatched</strong></td>";
- $output .= "</tr>\n";
- return $output;
- }
- //----------------------------------------------------------------
- // Function to parse the response.
- function parseResponse($latest = true)
- {
- $thing = $this->htmlPage;
- if(strpos($thing,"Not logged in!") > 0)
- {
- $tmpStr = substr($thing,strpos($thing,"takelogin"));
- $tmpStr = substr($tmpStr,strpos($tmpStr, ">")+1);
- $tmpStr2 = "<form method=\"post\" action=\"http://".$this->mainURL."/takelogin.php\">";
- $tmpStr = substr($tmpStr,0,strpos($tmpStr,"</form>")+strlen("</form>"));
- $output = $tmpStr2.str_replace("src=\"","src=\"http://".$this->mainURL."/",$tmpStr)."</table>";
- }
- else
- {
- $output = $this->tableHeader();
- if(strpos($thing,"Error:") > 0)
- {
- $tmpStr = substr($thing,strpos($thing,"Error:")+strlen("Error:"));
- $tmpStr = substr($tmpStr,0,strpos($tmpStr,"</p>"));
- $this->msg = strip_tags($tmpStr);
- return $output . "<center>".$this->msg."</center><br>";
- }
- // We got a response so display it.
- // Chop the front end off.
- $thing = substr($thing,strpos($thing,">Upped by<"));
- $thing = substr($thing,strpos($thing,"<tr>")+strlen("<tr>"));
- //$tmpList = substr($thing,0,strpos($thing,"</table>"));
- // ok so now we have the listing.
- $tmpListArr = explode("</tr>",$thing);
- $bg = $this->cfg["bgLight"];
- //var_export($tmpListArr);
- foreach($tmpListArr as $key =>$value)
- {
- $buildLine = true;
- if (strpos($value,"id="))
- {
- $ts = new OinkMe($value);
- // 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,"</table>"));
- $output .= "</table>";
- // is there paging at the bottom?
- if (strpos($thing, "page=") != false)
- {
- // Yes, then lets grab it and display it! ;)
- $pages = substr($thing,strpos($thing,"<p"));
- $pages = substr($pages,strpos($pages,">"));
- $pages = substr($pages,0,strpos($pages,"</p>"));
- $pages = str_replace(" ",'',$pages);
- $tmpPageArr = explode("</a>",$pages);
- array_pop($tmpPageArr);
- $pagesout = '';
- foreach($tmpPageArr as $key => $value)
- {
- $value .= "</a> ";
- $tmpVal = substr($value,strpos($value,"browse.php?"),strpos($value,">")-1);
- $pgNum = substr($tmpVal,strpos($tmpVal,"page=")+strlen("page="));
- $pagesout .= str_replace($tmpVal,"XXXURLXXX".$pgNum,$value);
- }
- $cat = tfb_getRequestVar('mainGenre');
- 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);
- }
- }
- // $pages = strip_tags($pages,"<a><b>");
- $output .= "<div align=center>".substr($pages,1)."</div>";
- }
- }
- return $output;
- }
- }
- // This is a worker class that takes in a row in a table and parses it.
- class OinkMe
- {
- 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 OinkMe( $htmlLine )
- {
- if (strlen($htmlLine) > 0)
- {
- $this->Data = $htmlLine;
- // Cleanup any bugs in the HTML
- $htmlLine = preg_replace("/</td>\n</td>/i",'</td>',$htmlLine);
- // Chunck up the row into columns.
- $tmpListArr = explode("<td ",$htmlLine);
- //if(count($tmpListArr) > 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 = substr($tmpStr,0,strpos($tmpStr,"\""));
- //$this->torrentName = $this->cleanLine("<td ".$tmpListArr["2"]."</td>"); // TorrentName
- $tmpStr = substr($tmpListArr["2"], strpos($tmpListArr["2"],"<b>")+strlen("<b>"));
- $this->torrentName = substr($tmpStr, 0, strpos($tmpStr, "</b>"));
- $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"href=\"downloadpk")+strlen("href=\""));
- $this->torrentFile = "http://oink.me.uk/".substr($tmpStr,0,strpos($tmpStr,"\""));
- //$tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"id=")+strlen("id=")); // File Id
- //$tmpStr = substr($tmpStr,0,strpos($tmpStr,"&"));
- //$this->torrentFile = "http://oink.me.uk/downloadpk/".$tmpStr."/".str_replace(" ","_",$this->torrentName).".torrent";
- $this->fileCount = $this->cleanLine("<td ".$tmpListArr["3"]."</td>"); // File Count
- $this->torrentSize = $this->cleanLine("<td ".$tmpListArr["6"]."</td>"); // Size of File
- $this->torrentStatus = $this->cleanLine(str_replace("<br>"," ","<td ".$tmpListArr["4"]."</td>")); // Snatched
- $this->Seeds = $this->cleanLine("<td ".$tmpListArr["8"]."</td>"); // Seeds
- $this->Peers = $this->cleanLine("<td ".$tmpListArr["9"]."</td>"); // 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,"\""));
- $this->torrentName = $this->cleanLine("<td ".$tmpListArr["2"]."</td>"); // TorrentName
- $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"id=")+strlen("id=")); // File Id
- $tmpStr = substr($tmpStr,0,strpos($tmpStr,"&"));
- $this->torrentFile = "http://oink.me.uk/downloadpk/".$tmpStr."/".str_replace(" ","_",$this->torrentName).".torrent";
- $this->fileCount = $this->cleanLine("<td ".$tmpListArr["4"]."</td>"); // File Count
- $this->torrentSize = $this->cleanLine("<td ".$tmpListArr["7"]."</td>"); // Size of File
- $this->torrentStatus = $this->cleanLine(str_replace("<br>"," ","<td ".$tmpListArr["8"]."</td>")); // Snatched
- $this->Seeds = $this->cleanLine("<td ".$tmpListArr["9"]."</td>"); // Seeds
- $this->Peers = $this->cleanLine("<td ".$tmpListArr["10"]."</td>"); // 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 = "<tr>\n";
- $output .= " <td width=16 bgcolor=\"".$bg."\"><a href=\"dispatcher.php?action=urlUpload&type=torrent&url=".$this->torrentFile."\"><img src=\"".getImagesPath()."download_owner.gif\" width=\"16\" height=\"16\" title=\"".$this->torrentName."\" border=0></a></td>\n";
- $output .= " <td bgcolor=\"".$bg."\"><a href=\"dispatcher.php?action=urlUpload&type=torrent&url=".$this->torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."</a></td>\n";
- if (strlen($this->MainCategory) > 1){
- $genre = "<a href=\"".$searchURL."&mainGenre=".$this->MainId."\">".$this->MainCategory."</a>";
- }else{
- $genre = "";
- }
- $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;
- }
- }
- ?>
|