IT 관련/Html5

JSon을 이용한 플리커 이미지 가져오기

과정에서 오는 행복 2011. 10. 28. 20:06
[플리커의 오픈 API]
http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?tags=soccer&tagname=any&format=json

tags = 에 검색하고자 하는 값을 넣음 (soccer - 축구)

[검색결과]

({
		"title": "Uploads from everyone",
		"link": "http://www.flickr.com/photos/",
		"description": "",
		"modified": "2011-10-28T11:01:18Z",
		"generator": "http://www.flickr.com/",
		"items": [
	   {
			"title": "DSCN0286",
			"link": "http://www.flickr.com/photos/mglb/6288155449/",
			"media": {"m":"http://farm7.static.flickr.com/6216/6288155449_36917da1a3_m.jpg"},
			"date_taken": "2009-06-28T13:57:27-08:00",
			"description": " <p><a href=\"http://www.flickr.com/people/mglb/\">goretti crochet<\/a> posted a photo:<\/p> <p><a href=\"http://www.flickr.com/photos/mglb/6288155449/\" title=\"DSCN0286\"><img src=\"http://farm7.static.flickr.com/6216/6288155449_36917da1a3_m.jpg\" width=\"240\" height=\"180\" alt=\"DSCN0286\" /><\/a><\/p> ",
			"published": "2011-10-28T11:01:18Z",
			"author": "nobody@flickr.com (goretti crochet)",
			"author_id": "50489611@N06",
			"tags": ""
	   },
	   {
			"title": "IMG_2546",
			"link": "http://www.flickr.com/photos/victor_ng/6288155577/",
			"media": {"m":"http://farm7.static.flickr.com/6101/6288155577_3ca491836c_m.jpg"},
			"date_taken": "2011-10-21T15:23:53-08:00",
			"description": " <p><a href=\"http://www.flickr.com/people/victor_ng/\">Victor_Ng<\/a> posted a photo:<\/p> <p><a href=\"http://www.flickr.com/photos/victor_ng/6288155577/\" title=\"IMG_2546\"><img src=\"http://farm7.static.flickr.com/6101/6288155577_3ca491836c_m.jpg\" width=\"240\" height=\"160\" alt=\"IMG_2546\" /><\/a><\/p> ",
			"published": "2011-10-28T11:01:23Z",
			"author": "nobody@flickr.com (Victor_Ng)",
			"author_id": "36008609@N07",
			"tags": ""
	   },
.... 계속 


 위와 같이 복잡한 결과가 나온다. 
이 나온 결과 값을 이용하여 플리처에 등록된 이미지가 자동으로 보여지는 걸 만들어 보자 


<script src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">


// 플리커에 등록된 이미지를 자동으로 가져옴 

function downloadImg() {

$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?'

{

tags:'soccer',

tagmode:'any',

format:'json'

},

//JSON에서 나온 데이터(data - 구조체 타입으로 리턴된)를 인자로 사용 

function(data) {

// 첫번째 자료의 media의 m의 값을 가져옴 - 이걸 img태그에 넣음 

$('img').attr('src', data.items[1].media.m);

$('#one').attr('src', data.items[2].media.m);

$('#two').attr('src', data.items[3].media.m);

$('#three').attr('src', data.items[4].media.m);

}

);

}


$(document).ready(function() {

$('button').click(function() {

downloadImg();

});

});

</script>

</head>

<body>

<button>download</button>


<div id='images'></div>

<img src='' alt=''/>

<img src='' alt='' id='one'/>

<img src='' alt='' id='two'/>

<img src='' alt='' id='three'/>



getJSon에는 맨위에 적힌 플리처 API중 callback=?까지만 작성하고 이후는 적어주지 않는다.
그리고 {   }  내에 관련 tags, tagmode, format을 작성한다. 

이렇게해서 나온 결과는 data의 구조체로 저장이 되고 이 결과 값을 가지고 활용한다. 

data.item[불러올 데이터].media.m
플리처 API의 결과 값에 media의 m에 이미지 경로값이 있으니 이 값을 가져다가
html태그에 접목시켜서 활용한다. 

[결과]

 


[향상된 스크립트]


function(data) {

$.each(data.items, function(i, item) { 

// 아이디 images 자식으로 들어감 .attr에 .attr을 주어서 2가지 속성 부여 가능  

$('<img/>').attr('src', item.media.m).attr('alt', item.author).appendTo('#images');

$('<p></p>').text(item.author).appendTo('#images');

if(i==2) {

return false

}

});




아이디가 images인 객체에 <img>와 <p>태그를 붙여줌
특정 갯수 만큼 반복 시키기 위해 each함수 사용 (3개만 가져오기)

[결과]


 








 
반응형

'IT 관련 > Html5' 카테고리의 다른 글

JQuery Canvas를 이용한 무지개 만들기  (0) 2011.11.03
웹사이트 소스 가져오기 (JSON, Ajax)  (0) 2011.10.28
JQTouch 활용2  (0) 2011.10.15
JQTouch 활용  (0) 2011.10.14
JQuery 활용  (0) 2011.10.13