<?php              
 
 //////////////////////////////////////////////////
 
 //         IMDBSearch : find on IMDB.COM some titles like an input title
 
 //         INPUT :
 
 //              a title ($_GET['t']) 
 
 //              a country ($_GET['c']) : in order to filter all the titles of the 'movies'
 
 //              a MoviesTypes ($_GET['g'] & see langages.php : $Types) : to filter only on some 'MoviesTypes'
 
 //         OUTPUT : array of {
 
 //                     imdb_id   : something like tt0456201 <- Id IMDB of the movie
 
 //                     title     : principal title (depend on country),
 
 //                     year      : IMDB year of the movie,
 
 //                     genres    : (string) IMDB genre(s),
 
 //                     directors : (string) IMDB director(s),
 
 //                     poster    : (string / URL) the biggest IMAGE if exists,
 
 //                     AKAs      : (string) IMDB also_known_as (depend too on INPUT country),
 
 //                     video     : (string / URL) IMDB trailer if exists,
 
 //                     type      : IMDB MoviesTypes,
 
 //                     pere      : IMDB_id for the serie if type=episode,
 
 //                 } 
 
 //                    OR '0' if no movie match on IMDb.com
 
 //          ATTENTION : strings in output have '~~' in place of "'"
 
 //          nota : with imdb.class.php / langages.php (internationalisation)
 
 //          adapted from https://github.com/abhinayrathore/PHP-IMDb-Scraper
 
 ////////////////////////////////////////////////////                                
 
set_time_limit(0);
 
error_reporting(E_ERROR | E_WARNING | E_PARSE);  
 
ini_set("memory_limit" , -1); 
 
 
require('langages.php');
 
include("imdb.class.php");
 
 
////////////////////////////////////////////////////
 
//   for debugging only
 
////////////////////////////////////////////////////
 
function file_ecrit($filename,$data)
 
  {
 
    if($fp = fopen($filename,'a'))   // mode ajout !!
 
    {
 
      $ok = fwrite($fp,$data);
 
      fclose($fp);
 
      return $ok;
 
    }
 
    else return false;
 
  }        
 
 
function get_ip()
 
  { 
 
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
 
      { 
 
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
 
      } 
 
    elseif (isset($_SERVER['HTTP_CLIENT_IP']))
 
      { 
 
        $ip = $_SERVER['HTTP_CLIENT_IP'];
 
      } 
 
    else
 
      { 
 
        $ip = $_SERVER['REMOTE_ADDR'];
 
      } 
 
    return $ip;
 
  }
 
  
 
    $myip=get_ip();
 
    file_ecrit('ips.txt',$myip."\n");
 
    $N=200;                  
 
    if (isset($_GET['n'])) {
 
        $N=$_GET['n'];
 
    }  
 
    
 
    $Country="";                
 
    if (isset($_GET['c'])) {
 
        $Country=$_GET['c'];
 
    }  
 
    if ($Country == 'none') $Country = 'France';
 
    if ($Country == '') $Country = 'France';
 
    
 
    $MoviesTypes="";       
 
    if (isset($_GET['g'])) {
 
        $MoviesTypes=$_GET['g'];
 
    }
 
 
    $ch = curl_init();
 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1");   
 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);                        
 
    curl_setopt($ch, CURLOPT_REFERER, $myip);     
 
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
 
    $headers = array();
 
    $headers[] = 'Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3';    // français
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
 
        /*   DEBBUGGING
 
        curl_setopt($ch, CURLOPT_VERBOSE, true);
 
        $verbose = fopen('php://temp', 'w+');
 
        curl_setopt($ch, CURLOPT_STDERR, $verbose);
 
        */
 
        
 
    $param='';    
 
    if (isset($_GET['t'])){     
 
        $param=str_replace(' ','+',$_GET['t']);
 
        $url="http://www.imdb.com/find?q=".urlencode($param)."&s=tt"; 
 
        curl_setopt($ch, CURLOPT_URL, $url); 
 
        $body = curl_exec($ch);
 
        /*   DEBBUGGING
 
        rewind($verbose);
 
        $verboseLog = stream_get_contents($verbose);
 
        echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
 
        */
 
 
        $pattern='#<td class="result_text"> <a href="\/title\/tt((\d){7})\/\?ref_=fn_tt_tt_((\d)*a?)" >(.*?)<\/a>(.*?)<\/td>#';
 
        $patt2='#.*?\((\d{4})\).*?\((.*?)\).*?#';
 
        $patt3='#<a href="\/title\/tt((\d){7})\/\?ref_=fn_tt_tt_#';
 
 
        $match=array();    
 
        $RES=[]; 
 
        if (preg_match_all($pattern,$body,$match)){
 
            for ($i=0; $i<count($match[0]); $i++){
 
                array_push($RES,array($match[1][$i],$match[5][$i]));
 
                $match1=array(); 
 
                if (preg_match($patt2,$match[6][$i],$match1)){ 
 
                    if (in_array($match1[2],$Types[0])){
 
                        $RES[count($RES)-1][2] = $ITypes[$match1[2]];
 
                    } else {
 
                        $RES[count($RES)-1][2] = 9;
 
                    }    
 
                } else {
 
                       $RES[count($RES)-1][2] = 0; 
 
                }
 
                $match1=array();
 
                if (preg_match($patt3,$match[6][$i],$match1)){ 
 
                    $RES[count($RES)-1][3]=$match1[1];
 
                } else {
 
                    $RES[count($RES)-1][3]=''; 
 
                }
 
            }
 
        }
 
 
        if (count($RES) > 0){
 
            $List=array();
 
            for ($c=0; $c<count($RES); $c++){
 
                if ((pow(2,$RES[$c][2]) & $MoviesTypes) > 0){
 
                    $i = new Imdb();
 
                    $imdbUrl = "http://imdb.com/title/tt".$RES[$c][0].'/';
 
                    $arr=$i->scrapeMovieInfo($imdbUrl, true, $myip, $Country);
 
                    // internationalization : return french types ! use 0 for english spoken
 
                    $arr['type']=$Types[1][$RES[$c][2]];
 
                    $arr['pere']=$RES[$c][3];
 
                    array_push($List,$arr);   
 
                }
 
            }
 
            if ($List != []){
 
                $return_val=json_encode($List);
 
                // filter the apostrophe because Javascript does not appreciate this character ^^
 
                $List=str_replace("'", "~~", $return_val);
 
                echo $List;
 
            }    
 
        } else {
 
            // There is a title but no movie found on IMDb
 
            echo '0';
 
        }
 
    } else {          
 
        echo "00";  
 
    } 
 
?>
 
 |