<? 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!" ; // } } 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 ,"<Resources>\r\n" ); fwrite ( $fi ,'<MesageBody>' ); 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!" ; ?>
Fatal error: Class ‘HttpRequest’ not found
有一行代码:
$httpRequest = new HttpRequest($oauthRequest->http_url(), HttpRequest::METH_GET);
没有 HttpRequest 这个类,是 php扩展问题
wamp>php设置》php扩展》添加扩展 输入php_http.dll回车