ホームページ >バックエンド開発 >PHPチュートリアル >Douban オンライン映画情報を取得するための PHP コードの紹介

Douban オンライン映画情報を取得するための PHP コードの紹介

WBOY
WBOYオリジナル
2016-07-25 08:42:051145ブラウズ
オンライン映画、php

[PHP] コード

  1. //検索リンク
  2. function search_link($moviename)
  3. {
  4. //必要に応じて最大結果を変更できるURLを構築します
  5. $urlString = 'http://api.douban .com/movie/subjects?q='.$moviename.'&start-index=1&max-results=1&alt=json';
  6. //print_r($urlString);
  7. $urlString=mb_convert_encoding($urlString, "UTF-8 " , "GBK");//URL を utf-8 エンコードに変換します
  8. $r = new HttpRequest($urlString,HttpRequest::METH_GET);//リクエスト
  9. $response = $r->send();
  10. $ result = $r->getResponseBody();
  11. $obj = json_decode($result);// json 形式に解析します
  12. if($entry = @$obj->gt;{'entry'}){
  13. //リンクを検索し、配列で返します
  14. for($i = 0;$i $link=$entry[$i]->{'link'}; for( $j = 0;$j $arr = (array)$link[$j];
  15. $key = array_search("self",$arr);
  16. if ($ key){ //キーが存在するかどうかを判断します
  17. $str = $arr["@href"].'?alt=json'; //リターンリンクの形式を構築します
  18. Break;
  19. }
  20. }
  21. $ link_array[] = $ str;
  22. }
  23. return $link_array;//リンクに戻る
  24. } else
  25. echo "Not Found!";
  26. }
  27. //リンクをクエリし、各変数を $GLOBAL 配列に入れる
  28. function get_info($urlString)
  29. {
  30. $r = new HttpRequest($urlString,HttpRequest::METH_GET);
  31. $response = $r->send();
  32. $result = $r->getResponseBody() ;
  33. //if.. else.. 開いているリンクが空かどうかを判定します
  34. if ($obj = json_decode($result)){
  35. //ビデオ情報をグローバル配列に入れます
  36. $title = $obj-> ;{'title'};
  37. $author = $obj->{'author'};
  38. $summary = $obj->{'summary'};
  39. $ID=$obj->{'id' };
  40. $link = $obj ->{'link'};
  41. $gd = (array)$obj->{'gd:評価'};
  42. $db_array = array();
  43. $db = $obj->gt;{'db :attribute'};
  44. //db:attribute の値を配列
  45. foreach ($db as $value){
  46. $value_array = (array)($value);
  47. $ v = $value_array["@name "];
  48. $k = $value_array["$t"];
  49. if (array_key_exists("@lang",$value_array)){
  50. $lang=$value_array["@lang" ];
  51. $k=$k .'['.$lang.']';
  52. }
  53. $db_array[$v][]=$k;
  54. }
  55. //対応する配列のキー値を設定します
  56. @ $db_array_key = array('[動画の元の名前]','[別名]','[監督]','[脚本家]','[公式サイト]','[IMDBリンク]','[年] ',
  57. '[国]','[映画の種類]','[公開日]','[画面の長さ]','[話数]','[言語]','[俳優] ]');
  58. @$db_array_value = array($db_array[ "タイトル"],$db_array["別名"],$db_array["ディレクター"],$db_array["ライター"],$db_array["ウェブサイト"] ,
  59. $db_array["imdb"],$db_array[" year"],$db_array["country"],$db_array["movie_type"],$db_array["pubdate"],
  60. $db_array["movie_duration"] ,$db_array["エピソード"],$db_array["言語 "],$db_array["キャスト"]);
  61. @$db_array = array_combine($db_array_key,$db_array_value);
  62. } else{
  63. echo "空のリンクです! ";
  64. }
  65. $info=array("title"= >$title,"author"=>$author,"summary"=>$summary,"ID"=>$ID,"link"= >$link,"gd"=>$gd, "db_array"=>$db_array);
  66. return $info;
  67. }
  68. //映画情報をファイルに書き込む
  69. function write_info($fi,$info)
  70. {
  71. //fwrite($fi, "******");ファイルを書き込む
  72. fwrite($fi, "【動画の元のタイトル】");
  73. foreach ($info["title"] as $k=>$v)
  74. fwrite($fi,"$vrn");
  75. fwrite($fi,"rn") ;
  76. fwrite($fi,"[プロデューサー]");
  77. foreach ($info["author"] as $value)
  78. foreach ($value as $key)
  79. foreach ($key as $v) {
  80. fwrite ($ fi,"$vrn");
  81. }
  82. fwrite($fi,"rn");
  83. //db:attribute
  84. foreach ($info["db_array"] as $key=>$value){
  85. if (count($value)){
  86. fwrite($fi,$key);
  87. if($value==$info["db_array"]['[actor]']){
  88. foreach($value as $ k= >$v)
  89. fwrite($fi,"$vrn ");
  90. } else{
  91. foreach($value as $k=>$v)
  92. fwrite($fi,"$v ");
  93. fwrite( $fi,"rn");
  94. }
  95. }
  96. }
  97. fwrite($fi,"rn");
  98. //動画紹介
  99. fwrite($fi, "[紹介]rn");
  100. foreach ( $info ["summary"] as $k=>$v){
  101. fwrite($fi," $v rn");
  102. }
  103. fwrite($fi,"rn")
  104. //ID
  105. fwrite ($ fi,"[ID]");
  106. foreach ($info["ID"] as $k=>$v){
  107. fwrite($fi,$v);
  108. }
  109. fwrite($fi," rn" );
  110. //Link
  111. fwrite($fi,"[Link]rn");
  112. foreach ($info["link"] as $value){
  113. foreach ($value as $k=>$ v) {
  114. fwrite($fi, " $v ");
  115. }
  116. fwrite($fi,"rn");
  117. }
  118. fwrite($fi,"rn")
  119. //コメント
  120. fwrite($ fi, '[コメント]');
  121. fwrite($fi,$info["gd"]["@numRaters"]);
  122. fwrite($fi,'[最高] ]' ); fwrite($fi,$info["gd"]["@max"]);
  123. fwrite($fi," [最小]");fwrite($fi,$info["gd"][ "@ min"]);
  124. fwrite($fi,' [Average]');fwrite($fi, $info["gd"]["@average"]);
  125. fwrite($fi,"rn") ;
  126. }
  127. //指定されたフォルダー内のムービーを検索し、ムービー名を返す
  128. function find_dir($dir)
  129. {
  130. if(is_dir($dir)){ //指定されたパス名がディレクトリであるかどうかを判断する
  131. if ($fdir =opendir($dir)){ //ディレクトリを開きます
  132. while(false!==($file=readdir($fdir))){ //ディレクトリ内のファイルを走査します
  133. if ($file != "." && $ file != "..")
  134. $files[]=$file; // 見つかったファイルを配列に入れて返します
  135. }
  136. Closedir($fdir);
  137. print_r($file);
  138. return $files;
  139. }
  140. }
  141. }
  142. // 生成された txt ファイルを指定されたディレクトリに配置します
  143. function write_to_dir($dir,$moviename)
  144. {
  145. if (is_dir($dir)){ // 指定されたディレクトリかどうかを判断しますパス名はディレクトリの場合です
  146. if($fdir=opendir($dir)){ //ディレクトリを開きます
  147. while(false!==($file=readdir($fdir))){ //ディレクトリ内のファイルを走査しますディレクトリ
  148. if ($file != '.' && $file != '..') {
  149. $dirname=$dir.'\'.$file;
  150. if (is_dir($dirname)&&$file==$ moviename) { //指定されたフォルダーを検索
  151. $filename=$dirname.'\'.$moviename.'.txt'
  152. //if(!file_exists($filename)){
  153. if($fi=fopen($filename) ,'w+' )){ //指定されたファイルを開きます。存在しない場合はファイルを作成して return
  154. Closedir($fdir);
  155. return $fi;
  156. }else
  157. echo "ファイルを開くのに失敗しました!";
  158. //}
  159. }else
  160. echo "ディレクトリが存在しません!";
  161. }
  162. }
  163. } else {
  164. echo '開くのに失敗しました!';
  165. return;
  166. }
  167. } else {
  168. echo 'ディレクトリが存在しません!';
  169. return;
  170. }
  171. }
  172. $dir = 'E:film';
  173. if($movienames = @find_dir($dir)){ //指定されたディレクトリ内の映画名を取得し、
  174. foreach を検索します ($movienames as $key=> $moviename){
  175. if($link_info = search_link($moviename)){
  176. //映画名を検索
  177. if ($fi=write_to_dir($dir,$moviename)){ //指定したフォルダーに書き込み
  178. fwrite ( $fi,"<リソース>rn");
  179. fwrite($fi,'<メッセージ本文>');
  180. fwrite($fi,"rnrnrn".'************ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※
  181. $info=get_info($k); //リンク情報を取得
  182. write_info($fi,$info) //情報をtxtファイルに書き込む
  183. fwrite($fi,"********** * ************************************************* *************************************rn");
  184. }
  185. fclose($fi); //書き込み完了、ファイルを閉じます
  186. }
  187. } else
  188. echo "Empty!";
  189. }
  190. } else
  191. echo "Movies Not Exists!";
  192. ?>
コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。