龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 用来获取豆瓣网上电影信息的简介

时间:2015-04-09 11:00来源:网络整理 作者:网络 点击:
分享到:
用来获取豆瓣网上电影信息的简介 **[PHP]代码**[代码片段(213行)]

[PHP]代码

<?php
//搜索链接
function search_link($moviename)
{

        //构造url,其中max-results可根据需要更改
        $urlString = 'http://api.douban.com/movie/subjects?q='.$moviename.'&start-index=1&max-results=1&alt=json';
        //print_r($urlString);
        $urlString=mb_convert_encoding($urlString, "UTF-8", "GBK");//将Url转换为utf-8编码
        $r = new HttpRequest($urlString,HttpRequest::METH_GET);//请求
        $response = $r->send();
        $result = $r->getResponseBody();
        $obj = json_decode($result);//解析成json格式

        if($entry = @$obj->{'entry'}){
                //搜索链接并存在数组中返回
                for($i = 0;$i<sizeof($entry);$i++){
                        $link=$entry[$i]->{'link'}; 
                        for($j = 0;$j<sizeof($link);$j++){
                              $arr = (array)$link[$j];
                              $key = array_search("self",$arr);
                              if($key){                                 //判断key是否存在
                                  $str = $arr["@href"].'?alt=json'; //构造返回链接的格式
                                  break;
                              } 
                        }
                        $link_array[] = $str;
                }
                return $link_array;//返回链接
        } else
                echo"Not Found!";

}

//查询链接并将各变量放入$GLOBAL 数组
function get_info($urlString)
{
        $r = new HttpRequest($urlString,HttpRequest::METH_GET);
        $response = $r->send();
        $result = $r->getResponseBody();

        //if..else.. 判断打开链接是否为空
        if ($obj = json_decode($result)){
            //将影片的信息放在全局数组中
            $title = $obj->{'title'};
            $author = $obj->{'author'};
            $summary = $obj->{'summary'};
            $ID=$obj->{'id'};
            $link = $obj->{'link'};  
            $gd = (array)$obj->{'gd:rating'};   
            $db_array = array();

            $db = $obj->{'db:attribute'};
            //将db:atribute中的值放进数组
            foreach ($db as $value){
                $value_array = (array)($value);
                $v = $value_array["@name"];
                $k = $value_array["\$t"];
                if (array_key_exists("@lang",$value_array)){
                    $lang=$value_array["@lang"];
                    $k=$k.'['.$lang.']';
                }       
                $db_array[$v][]=$k; 
            }
            //设定对应数组的键值
            @$db_array_key = array('【影片原名】','【别    名】','【导    演】','【编    剧】','【官方网站】','【IMDB链接】','【出品年代】',
                               '【国    家】','【电影类型】','【上映日期】','【放映长度】','【集    数】','【语    言】','【演    员】');
            @$db_array_value = array($db_array["title"],$db_array["aka"],$db_array["director"],$db_array["writer"],$db_array["website"],
                                 $db_array["imdb"],$db_array["year"],$db_array["country"],$db_array["movie_type"],$db_array["pubdate"],
                                 $db_array["movie_duration"],$db_array["episodes"],$db_array["language"],$db_array["cast"]);
            @$db_array = array_combine($db_array_key,$db_array_value);
        }   else{
                echo "Empty link!";
        }
        $info=array("title"=>$title,"author"=>$author,"summary"=>$summary,"ID"=>$ID,"link"=>$link,"gd"=>$gd,"db_array"=>$db_array);
        return $info;
}
//将影片信息写入文件     
function write_info($fi,$info)          
{  
            //fwrite($fi, "******");写入文件
            fwrite($fi, "【影片原名】");
            foreach ($info["title"] as $k=>$v)
                    fwrite($fi,"$v\r\n");
            fwrite($fi,"\r\n");     

            fwrite($fi,"【出 品 人】");
              foreach ($info["author"] as $value)
                  foreach ($value as $key)
                    foreach ($key as $v) {
                      fwrite($fi,"$v\r\n");
                    }
            fwrite($fi,"\r\n");         

            //db:attribute
            foreach ($info["db_array"] as $key=>$value){
                if(count($value)){
                        fwrite($fi,$key);
                        if($value==$info["db_array"]['【演    员】']){
                            foreach($value as $k=>$v)
                                fwrite($fi,"$v\r\n            ");
                        }   else{
                                foreach($value as $k=>$v)
                                    fwrite($fi,"$v  ");
                                fwrite($fi,"\r\n");
                        }
                }
            }
            fwrite($fi,"\r\n"); 

            //影片简介
            fwrite($fi, "【简    介】\r\n");
            foreach ($info["summary"] as $k=>$v){
                fwrite($fi,"   $v \r\n");
            } 
            fwrite($fi,"\r\n");             

            //ID  
            fwrite($fi,"【I      D】");
            foreach ($info["ID"] as $k=>$v){
                fwrite($fi,$v);
            }
            fwrite($fi,"\r\n"); 

            //链接              
            fwrite($fi,"【链    接】\r\n"); 
            foreach ($info["link"] as $value){   
                foreach ($value as $k=>$v){ 
                    fwrite($fi, "  $v  ");
                }
                fwrite($fi,"\r\n");
            }
            fwrite($fi,"\r\n"); 

            //评论  
            fwrite($fi,'【评    论】'); 
            fwrite($fi,$info["gd"]["@numRaters"]);
            fwrite($fi,"\r\n"); 
            fwrite($fi,'【最高】');  fwrite($fi,$info["gd"]["@max"]);
            fwrite($fi,"  【最低】");fwrite($fi,$info["gd"]["@min"]);
            fwrite($fi,'  【平均】');fwrite($fi, $info["gd"]["@average"]);
            fwrite($fi,"\r\n"); 
}
//在指定的文件夹中寻找电影并返回电影名
function find_dir($dir)
{
    if(is_dir($dir)){                           //判断所给路径名是否为目录
        if($fdir=opendir($dir)){                //打开目录
            while(false!==($file=readdir($fdir))){              //遍历目录中的文件
                if ($file != "." && $file != "..") 
                    $files[]=$file;                 //将寻找到的文件放入数组并返回
            }
            closedir($fdir);
            print_r($file);
            return $files;
        }   
    }
}
//将生成的txt文件放在指定的目录下
function write_to_dir($dir,$moviename)
{    
    if (is_dir($dir)){                                                      //判断所给路径名是否为目录
        if($fdir=opendir($dir)){                                            //打开目录
            while(false!==($file=readdir($fdir))){                          //遍历目录中的文件  
                if ($file != '.' && $file != '..') {  
                    $dirname=$dir.'\\'.$file;
                    if (is_dir($dirname)&&$file==$moviename) {                  //寻找指定的文件夹
                        $filename=$dirname.'\\'.$moviename.'.txt'; 
                        //if(!file_exists($filename)){                      
                            if($fi=fopen($filename,'w+')){                       //打开指定文件,若不存在,建立文件并返回
                                closedir($fdir);
                                return $fi;   
                            }else
                                echo"Fail to Open file!";   
                        /
      
收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接