写真の検索
FlickrオブジェクトのPhotoSearchメソッドは、Flickr上の公開写真を検索し、結果を表示するページを返します。さまざまな検索オプションを指定できます。返される写真の1ページあたりの枚数、どのページのデータを取得するか、ユーザーやタグで絞り込むかどうか、などのオプションがあります。以下のコードは、Flickrに最も新しくアップロードされ、"Hawaii"というタグが付いている公開画像を100枚返します。
// C#: Create a Flickr object Flickr flickr = new Flickr(); // Get 100 most recent pictures with the tag "Hawaii" PhotoSearchOptions options = new PhotoSearchOptions(); options.PerPage = 100; options.Tags = "Hawaii"; Photos searchResults = flickr.PhotosSearch(options); ' VB: Create a Flickr object Dim flickr As New Flickr() ' Get 100 most recent pictures with the tag "Hawaii" Dim options As New PhotoSearchOptions() options.PerPage = 100 options.Tags = "Hawaii" Dim searchResults As Photos = flickr.PhotosSearch(options)
1ページに100枚(デフォルト)、"Hawaii"というタグが付いている写真、といった条件で検索を絞り込むには、PhotoSearchOptionsオブジェクトの関連プロパティを設定します。次に、FlickrクラスのPhotoSearchメソッドを呼び出して、PhotoSearchOptionsオブジェクトを渡します。PhotoSearchメソッドは、Photosオブジェクトを返します。このオブジェクトのPhotoCollectionプロパティは、検索で一致した100枚の写真それぞれの詳細(タイトル、URL、説明など)が含まれるコレクションです。
ユーザーのスクリーンネームとユーザーID
Flickrでは、ユーザーはユーザーIDで一意に識別され、このIDは74068408@N00のような形式になっています。ユーザーはもっと分かりやすい「スクリーンネーム」を作ることもできます。スクリーンネームは、コメントを追加したユーザーを示すのにも使うことができます。スクリーンネームは、フォトストリームのURLに表示される名前と同じでなくてもかまいません。ユーザーのフォトストリームは「http://www.flickr.com/photos/nickname/」のようなURLになります。nicknameとスクリーンネームは同じものにすることが多いですが、必ずしも同じにする必要はありません。ただし、スクリーンネームは何度でも変更できますが、ニックネームは変更できません。
特定のユーザーからの写真を検索するには、ユーザーIDを使って検索します。ユーザーのユーザーIDはスクリーンネームから取得でき、これを行うには、FlickrクラスのPeopleFindByUsername(screen_name)メソッドを使ってFoundUserオブジェクトを取得します。FoundUserオブジェクトには、UserIDプロパティとUsernameプロパティがあります。このとき、スクリーンネームが見つからないと、このメソッドはFlickrApiException例外を発生させるので注意してください。また、PeopleFindByUsername(screen_name)メソッドは、パブリック検索から隠すことをアカウントに設定していないユーザーの情報しか返しません。
以下のコードは、スクリーンネームしかわかっていないユーザーのユーザーIDを取得する方法を示しています。形式的に、筆者のFlickrスクリーンネームscott_mitchellでユーザーIDを検索します。このコードはTry ... Catchブロックになっており、FlickrApiException例外を処理しています。この例外が発生するのは、指定したスクリーンネームが見つからなかったとき、または対象ユーザーがパブリック検索に情報を公開していないときです。Try ... Catchブロックでこれを処理しない場合は、無効なスクリーンネームを検索するとイエロースクリーンでエラーになります。
// C#: Look up the User ID
Flickr flickr = new Flickr();
string flickrUserId = string.Empty;
try
{
FoundUser userInfo =
flickr.PeopleFindByUsername("scott_mitchell");
flickrUserId = userInfo.UserId;
}
catch (FlickrApiException)
{
// Screen name not found...
...
}
' VB: Look up the User ID
Dim flickr As New Flickr()
Dim flickrUserId As String = String.Empty
Try
Dim userInfo As FoundUser =
flickr.PeopleFindByUsername("scott_mitchell")
flickrUserId = userInfo.UserId
Catch ex As FlickrApiException
' Screen name not found...
...
End Try
