現在、Web APIの勉強をしており、Flickrを使用して画像を出す方法について困っています。
同じ所に、例えば「犬」と「猫」を5枚づつ表示させるにはどうしたらいいのか分からず困っています。
「text」に['cat'&'dog']や['cat&dog']や['cat,dog']など色々試したのですがイメージのように表示されません。
例として下記のようにコードを書きましたので、分かりやすくご教授のほどよろしくお願い致します。
Flickrで画像を保存して表示ではなく、「text」を使用して表示させたいです。
よろしくお願い致します。
JavaScript
1// Flickr API key 2const apiKey = '//個人のAPIのKey'; 3 4// Flickr画像データのURLを返す 5const getFlickrImageURL = (photo, size) => { 6 let url = `https://farm${photo.farm}.staticflickr.com/${photo.server}/${photo.id}_${ 7 photo.secret 8 }`; 9 if (size) { 10 // サイズ指定ありの場合 11 url += `_${size}`; 12 } 13 url += '.jpg'; 14 return url; 15}; 16 17// Flickr画像の元ページのURLを返す 18const getFlickrPageURL = photo => `https://www.flickr.com/photos/${photo.owner}/${photo.id}`; 19 20// Flickr画像のaltテキストを返す 21const getFlickrText = (photo) => { 22 let text = `"${photo.title}" by ${photo.ownername}`; 23 if (photo.license === '4') { 24 // Creative Commons Attribution(CC BY)ライセンス 25 text += ' / CC BY'; 26 } 27 return text; 28}; 29 30// リクエストパラメータを作る 31const parameters = $.param({ 32 method: 'flickr.photos.search', 33 api_key: apiKey, 34 text: 'cat', // 検索テキスト 35 sort: 'interestingness-desc', // 興味深さ順 36 per_page: 5, // 取得件数 37 license: '4', // Creative Commons Attributionのみ 38 extras: 'owner_name,license', // 追加で取得する情報 39 format: 'json', // レスポンスをJSON形式に 40 nojsoncallback: 1, // レスポンスの先頭に関数呼び出しを含めない 41}); 42const url = `https://api.flickr.com/services/rest/?${parameters}`; 43console.log(url); 44 45// 猫の画像を検索して表示 46$.getJSON(url, (data) => { 47 console.log(data); 48 49 // データが取得できなかった場合 50 if (data.stat !== 'ok') { 51 console.error('データの取得に失敗しました。'); 52 return; 53 } 54 55 // 空の<div>を作る 56 const $div = $('<div>'); 57 58 // ヒット件数 59 $div.append(`<div>${data.photos.total} photos in total</div>`); 60 61 for (let i = 0; i < data.photos.photo.length; i++) { 62 const photo = data.photos.photo[i]; 63 const photoText = getFlickrText(photo); 64 65 // $divに <a href="..." ...><img src="..." ...></a> を追加する 66 $div.append( 67 $('<a>', { 68 href: getFlickrPageURL(photo), 69 class: 'd-inline-block', 70 target: '_blank', // リンクを新規タブで開く 71 'data-toggle': 'tooltip', 72 'data-placement': 'bottom', 73 title: photoText, 74 }).append( 75 $('<img>', { 76 src: getFlickrImageURL(photo, 'q'), 77 width: 150, 78 height: 150, 79 alt: photoText, 80 }), 81 ), 82 ); 83 } 84 // $divを#mainに追加する 85 $div.appendTo('#main'); 86 87 // BootstrapのTooltipを適用 88 $('[data-toggle="tooltip"]').tooltip(); 89});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。