[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 $link=$entry[$i]->{'link'};
- for($j = 0;$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!";
- //}
- } else
- echo "Dir Not Exists!";
- }
- }
- } else {
- echo 'Fail to Open!';
- return;
- }
- } else {
- echo 'Directory Not Exists!';
- return;
- }
- }
- $dir = 'E:\film';
- if($movienames = @find_dir($dir)){ //在指定目錄中獲得電影名,進行搜尋
- foreach ($movienames as $key=>$moviename){
- if($link_info = search_link($moviename)){
- //搜尋影片名
- if ($fi=write_to_dir($dir,$moviename)){ //寫入指定檔案夾
- fwrite($fi,"\r\n");
- fwrite($fi,'');
- fwrite($fi,"\r\n\r\n\r\n".'※※※※※※※※※※※※※※※※※※※※※ 影片資訊 ※※※※※※※※※※※※※※※※※※※※※'."\r\n");
- foreach ($link_info as $k){
- $info=get_info($k); //擷取連結資訊
- write_info($fi,$info); //在txt檔案中寫入資訊
- fwrite($fi,"*************************************************************************************************\r\n");
- }
- fclose($fi);//寫入完成,關閉檔案
- }
- } else
- echo "Empty!";
- }
- } else
- echo "Movies Not Exists!";
- ?>
複製代碼 |