温故知新 linux実践講座

温故知新 linux実践講座

温故知新。linuxを使いこなしてみよう。

ホーム » PHP入門 » 「Webサービスのつくり方」 おっぱい画像をPHPで

— 広告 —


— 広告 —

「Webサービスのつくり方」 おっぱい画像をPHPで

所要時間 約 1分

ゆーすけべーさんが出版した「Webサービスのつくり方」を読んで
面白そうな記事があったので挑戦してみました。

「いかにして効率よく大量のおっぱい画像をダウンロードするか」という記事が第1章 22ページと第4章 開発 114ページに書いてあります。
perlでかかれたソースがゆーすけべーさんのブログに掲載されています。

googleで検索するとruby や PHP で書き直されたソースも見つける事ができました。

* いかにしておっぱい画像をダウンロードするか〜2012
* ゆーすけべーさんのおっぱいスクリプトをPHPで書き直してみた
* いかにしておっぱい画像をダウンロードするか〜2012 for Ruby

 
<?php
require_once("HTTP/Request.php");
$accountKey = 'ほげほげ';
 
$dir = './data'; //先にdataディレクトリを作っておくこと
$page_count = 0;
$oppai_count = 0;
 
$req = new HTTP_Request("https://api.datamarket.azure.com/Bing/Search/Image");
 
while (1) {
    $offset = $page_count * 50;
    $url = "https://api.datamarket.azure.com/Bing/Search/Image?"
     . "Query='" . urlencode('おっぱい') . "'"
     . "&Market='ja-JP'"
     . "&Adult='off'"
     . "&\$format=json"
     . "&\$top=50&\$skip=" . $offset;
 
    $context = stream_context_create(array('http' => array(
                'request_fulluri' => true,
                'header' => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
                )
            ));
 
    $res = file_get_contents($url, 0, $context);
    $ref = json_decode($res);
    $arr = $ref -> d -> results;
    if (!isset($arr)) { // Resultsが定義されていない場合
        break;
    } 
    foreach ($arr as $entry) {
        $img_url = $entry -> MediaUrl;
        if (!preg_match('/\.jpg$/', $img_url)) { // 拡張子が.jpgでない場合
            continue;
        } 
        $oppai_count++;
        $filename = md5(utf8_encode($img_url)) . '.jpg';
        $filepath = $dir . '/' . basename($img_url);
        if (file_exists($filepath)) { // 既に同名のファイルが存在する場合
            continue;
        } 
        echo utf8_encode($oppai_count . ' : Download...' . $img_url . "\n");
        $img = file_get_contents($img_url); //画像ダウンロード
        file_put_contents($filepath, $img);
        if (!preg_match('/image/m', $http_response_header[2])) { // 画像で無い場合
            unlink($filepath);
        } 
    } 
    $page_count++;
} 
?>

Bing Search API が http://datamarket.azure.com/ に移動したため、「ゆーすけべーさんのおっぱいスクリプトをPHPで書き直して」のソースをそのまま実効してみたら上手く動作しなかったので、一部ソースを変更してみました。

[PHP] Windows AzureのBing Search APIを利用する にプライマリアカウントキーの取得の仕方が書かれており参考になりました。

参考資料:
Migration Guide
Bing APIの変更に関するお知らせ
Bing Search API が Windows Azure Marketplaceで利用可能に
Bing API Schema Guide

 
[0]=> object(stdClass)#211 (11) 
{ 
["__metadata"]=> object(stdClass)#212 (2) { 
["uri"]=> string(124) "https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query='おっぱい'&Market='ja-JP'&Adult='off'&$skip=51&$top=1" 
["type"]=> string(11) "ImageResult" }
 
["ID"]=> string(36) "4f5cded5-86c3-4700-ba49-f5ec82efdf31" 
["Title"]=> string(46) "おっぱいを愛する者はおっぱい ..." 
["MediaUrl"]=> string(61) "http://25.media.tumblr.com/tumblr_m50kjqfZuH1qz4fjqo1_500.jpg" 
["SourceUrl"]=> string(55) "http://highlanderz.tumblr.com/post/24763403403/wayayaya" 
["DisplayUrl"]=> string(48) "highlanderz.tumblr.com/post/24763403403/wayayaya" 
["Width"]=> string(3) "450" 
["Height"]=> string(3) "645" 
["FileSize"]=> string(5) "33781" 
["ContentType"]=> string(10) "image/jpeg" 
["Thumbnail"]=> object(stdClass)#213 (6) 

{ ["__metadata"]=> object(stdClass)#214 (1) { 
["type"]=> string(14) "Bing.Thumbnail" } 
["MediaUrl"]=> string(68) "http://ts2.mm.bing.net/th?id=I.4651536306537397&pid=15.1&W=111&H=160" 
["ContentType"]=> string(9) "image/jpg" 
["Width"]=> string(3) "111" 
["Height"]=> string(3) "160" 
["FileSize"]=> string(4) "8230" } 
}
-- 広告 -- -- 広告 --

 

この記事に関連する記事一覧

アフィリエイトで稼ぐ
プロフィール

ぴよふぁくとりぃです。

職業は自宅でサーバ管理、資格は薬剤師です。
趣味も職業もパソコンラブです。
よろしくね。
連絡先: admin@arakanoj.com
URL: http://piyofactory.com

検索
人気ページ
東京電力予想最大電力(万kW)
twitter
使い方を知れば知るほど楽しく使える Linux。
Linux の基本を覚えてもっともっと楽しいコンピュータの使い方を身につけましょう。