Flickr API を使って画像を検索して取得する高性能な PHP のライブラリ書いておいたよ

Flickr の API を利用して画像を取得することができます。Flickr の API について学習しなくてもこのライブラリを使えば API キー当て込むだけで画像を検索して取得できますので試してみてください。参考サイトは以下です。

使い方

第一引数は検索キーワード、第二引数は取り出す件数、第三引数は取得する画像のサイズ、第四引数は取り出す img 要素に付ける属性を配列で格納します。おそらく、ライブラリを直接貼り付けるなり、別ファイルで保存して include するなりして、以下のコードをそのまま貼りつけて API キーだけ変更すれば動きます。

1
2
3
$flickr = new Flickr();
$flickr->setFlickrApikey('1234567890abcdefg');
echo $flickr->getFlickrImage('キーワード', 10);

ライブラリ

以下のコードを保存してお使いください。詳しい使い方はコードを読めばきっと分かると思いますが、質問して頂ければ答えます。初歩的な質問についてはお答えできませんのでご了承ください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
class Flickr
{
	const FLICKR_API_URL = 'http://api.flickr.com/services/rest/?';
 
	/**
	* Flicker から写真を検索して IMG タグを返す関数
	* 
	* @param array  $keyword   画像検索に用いるキーワード
	* @param number $limit     画像取得件数
	* @return string 画像を表示する IMG タグをテキストで返します
	*/
 
	public function setFlickrApikey($key)
	{
		$this->Apikey = $key;
	}
 
	public function getFlickrImage($keyword, $limit = 10, $sizeName = 'small', $attributes = null)
	{
		$query = http_build_query(
		  Array(
			 'method' => 'flickr.photos.search',
			 'api_key' => $this->Apikey,
			 'text' => $keyword,
			 'sort' => 'interestingness-desc',
			 'per_page' => $limit
		  )
		);
		$data = simplexml_load_file(self::FLICKR_API_URL . $query) or die("XML パースエラー");
		$result = "";
		foreach($data->photos as $photos) {
			foreach($photos->photo as $photo){
				$result .= $this->getFlickrElement($photo, $sizeName, $attributes);
			}
		}
		return $result;
	}
	private function getFlickrElement($photo, $sizeName, $attributes)
	{
		$element = '<a href="http://www.flickr.com/photos/'.$photo['owner'].'/'.$photo['id'].'/">';
		$element .= $this->getFlickrImageElement($photo, $sizeName, $attributes);
		$element .= '</a>';
		return $element;
	}
 
	private function getFlickrImageElement($photo, $sizeName, $attributes)
	{
		$element = '<img src="' . $this->getFlickrImageUrl($photo, $sizeName) . '"';
		if(!isset($attributes['alt'])) {
 			$attributes['alt'] = (string) $photo['title'];
		}
		if(!isset($attributes['title'])) {
			$attributes['tltle'] = (string) $photo['title'];
		}
		if(is_array($attributes)) {
			foreach($attributes as $attr => $value) {
				$element .= " {$attr}=\"{$value}\"";
			}
		}
		$element .= '>';
		return $element;
	}
 
	private function getFlickrImageUrl($photo, $sizeName)
	{
		/*
		 * s	small square 75x75
		 * t	thumbnail, 100 on longest side
		 * m	small, 240 on longest side
		 * -	medium, 500 on longest side
		 * z	medium 640, 640 on longest side
		 * b	large, 1024 on longest side*
		 * o	original image, either a jpg, gif or png, depending on source format
		 */
 
		$size = Array(
			'small_square' => '_s',
			'thumbnail' => '_t',
			'small' => '_m',
			'medium' => '',
			'medium2' => '_z',
			'large' => '_b',
			'original' => '_o'
		);
 
		$url = 'http://farm'.$photo['farm'].'.static.flickr.com/'.$photo['server'].'/'.$photo['id'].'_'.$photo['secret']. $size[$sizeName] . '.jpg';
		return $url;
	}
}

コメント

コメントは受け付けていません。