| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <?php
- /* $Id: GoogleEngine.php 2506 2007-02-04 15:12:30Z b4rt $ */
- /*************************************************************
- * 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("GoogleFunctions.php");
- include_once("inc/classes/BDecode.php");
- class SearchEngine extends SearchEngineBase
- {
- function SearchEngine($cfg)
- {
- $this->mainURL = "google.com";
- $this->altURL = "www.google.com";
- $this->mainTitle = "Google";
- $this->engineName = "Google";
- $this->author = "kboy";
- $this->version = "1.00-tfb";
- $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1690.0.html";
- $this->Initialize($cfg);
- }
- //----------------------------------------------------------------
- // Function to get Latest..
- function getLatest()
- {
- $this->msg = "Get Latest Not available on this Engine";
- return $this->msg;
- }
- //----------------------------------------------------------------
- // Function to perform Search.
- function performSearch($searchTerm)
- {
- //http://www.google.com/search?as_q=test+d8&num=3&as_qdr=m3&as_filetype=torrent
- // as_q -> advanced search query term (NOTE: we must add +d8 to scrub down to just true torrent files)
- // num -> is the number of results per page.
- // lr -> language (lang_en) for english
- // as_qdr -> advanced search query days returned. (m3) is updated in the past 1 months
- // m3 ... and y (year) are valid values.
- // as_filetype -> to search for torrents :-)
- $searchTerm = str_replace(" ", "+", $searchTerm);
- $request = '/search?as_q=' . $searchTerm . '+d8&num=100&lr=lang_en&as_qdr=m3&as_filetype=torrent';
- if ($this->makeRequest($request))
- {
- return $this->parseResponse();
- }
- else
- {
- return $this->msg;
- }
- }
- //----------------------------------------------------------------
- // Function to parse the response.
- function parseResponse()
- {
- $output = $this->tableHeader();
- $output .= "\n<!-- Begin Response --> \n";
- $thing = $this->htmlPage;
- // We got a response so display it.
- // Chop the front end off.
- while (is_integer(strpos($thing,"Results")))
- {
- $thing = substr($thing,strpos($thing,"Results"));
- $thing = substr($thing,strpos($thing,"</table>")+strlen("</table>"));
- if (is_integer(strpos($thing,"Sponsored Links"))) {
- $thing = substr($thing,strpos($thing,"Sponsored Links"));
- $thing = substr($thing,strpos($thing,"</table>")+strlen("</table>"));
- }
- //$thing = substr($thing,strpos($thing,"<div>")-strlen("<div>");
- $tmpList = substr($thing,0,strpos($thing,"</div>"));
- if (is_integer(strpos($tmpList,"In order to show you the most relevant results"))) {
- $tmpList = substr($thing,0,strpos($thing,"In order to show you the most relevant results")) . "</div>";
- }
- // ok so now we have the listing.
- //$tmpListArr = explode("</p>",$tmpList);
- $allowedTags = '<a><b><i><br>';
- // ok so now we have the listing.
- $tmpListArr = explode("</a>",strip_tags($tmpList,$allowedTags));
- $langFile = $this->cfg['_FILE'];
- $bg = $this->cfg["bgLight"];
- foreach($tmpListArr as $key =>$value)
- {
- if (strpos($value,"Similar pages"))
- {
- }
- elseif (strpos($value, "ile Format:"))
- {
- }
- elseif (strpos($value, "Cached"))
- {
- }
- elseif (strpos($value, "More results from"))
- {
- }
- elseif (strpos($value, "Translate this page"))
- {
- }
- else
- {
- $goo = new gOOGLE($value);
- if (!empty($goo->torrentFile)) {
- $output .= trim($goo->BuildOutput($bg,$langFile,$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>";
- $output .= "\n<!-- End Response --> \n";
- return $output;
- }
- }
- // This is a worker class that takes in a row in a table and parses it.
- class gOOGLE
- {
- var $torrentName = "";
- var $torrentDisplayName = "";
- var $torrentFile = "";
- var $torrentStatus = "";
- var $torrentSize = "";
- var $fileCount = "";
- var $Seeds = "";
- var $Peers = "";
- var $Data = "";
- function gOOGLE( $htmlLine )
- {
- $tmpVal = substr($htmlLine,strpos($htmlLine,"<a"));
- $tmpVal = trim($tmpVal);
- if (strlen($tmpVal) > 0)
- {
- $this->Data = $htmlLine;
- $tmpVal2 = substr($tmpVal,strpos($tmpVal,"href=\"")+strlen("href=\""));
- $this->torrentFile = substr($tmpVal2,0,strpos($tmpVal2,"\""));
- $html = FetchHTMLNoWaitNoFollow( $this->torrentFile );
- // Make sure we have a torrent file
- if( strpos( $html, "d8:" ) === false )
- {
- // We don't have a Torrent File... it is something else
- $this->torrentFile = "";
- }
- else
- {
- $array = BDecode($html);
- $this->torrentSize = formatBytesTokBMBGBTB($array["info"]["piece length"] * (strlen($array["info"]["pieces"]) / 20));
- $this->torrentName = $array['info']['name'];
- $this->fileCount = count($array['info']['files']);
- $this->torrentDisplayName = $array['info']['name'];
- if(array_key_exists('comment',$array))
- {
- $this->torrentDisplayName .= " [". $array['comment']."]";
- }
- }
- /*
- $this->Seeds = $this->cleanLine($tmpListArr["4"]); // Seeds
- $this->Peers = $this->cleanLine($tmpListArr["5"]); // Peers
- */
- if ($this->Peers == '')
- {
- $this->Peers = "N/A";
- if (empty($this->Seeds)) $this->Seeds = "N/A";
- }
- if ($this->Seeds == '') $this->Seeds = "N/A";
- 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,$langFILE, $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";
- $output .= "</td>\n";
- $output .= " <td bgcolor=\"".$bg."\"> </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;
- }
- }
- ?>
|