
Vinyl Collections (レコード情報管理アプリを作る 2.2/5)
認証方法の確認
今回は、作成したAPIのKeyとSecretで検索結果を取得してみようと思います。まず、APIのドキュメントの「Authentication」を確認します。
認証方法は2種類でアクセストークンを取得し、取得したトークンを使って情報を得る方法と、KeyとSecretを設定する方法です。
KeyキーとSecretキーの場合:
curl "https://api.discogs.com/database/search?q=Nirvana&key=foo123&secret=bar456"
アプリでKeyとSecretによる認証でデータを取得しています。
アクセストークンの場合:
curl "https://api.discogs.com/database/search?q=Nirvana&token=abcxyz123456"
上記はcURLによる記述例なので、FileMakerに置き換えてから実行します。DiscogsAPIはシンプルに記述して通るので、スクリプトを作成し、「URLから挿入」のURLを下記のように指定します。
そして、APIから返ってきたデータを変数として保存するために「ターゲット」として変数を「$$JSON」として保存できるようにします。
データビューワーで$$JSONの中身を確認します。JSON形式の中身を確認する際には、JSONFormatElementsでインデントされた形式にすると読みやすくなります。
画像では見にくいので、要素としては、paginationとresultが処理の対象となります。実際のJSONは下記になります。result以降はbarcodeの中身が各レコードの情報となります。
実際の検索結果
ちなみ、検索キーは”Beatles”で試すに検索すると、アイテム数が46518件、50ページづつにして200ページという素敵なボリューム(笑)
{
"pagination" :
{
"items" : 46518,
"page" : 1,
"pages" : 200,
"per_page" : 50,
"urls" :
{
"last" : "https://api.discogs.com/database/search?q=Beatles&key=xVBjyiRfanZjANLuqsPZ&secret=PiNreEhRafFUaTLQUQlzzenYbMaOcqYx&page=200&per_page=50",
"next" : "https://api.discogs.com/database/search?q=Beatles&key=xVBjyiRfanZjANLuqsPZ&secret=PiNreEhRafFUaTLQUQlzzenYbMaOcqYx&page=2&per_page=50"
}
},
"results" :
[
{
"cover_image" : "https://img.discogs.com/T3McbvJdMo10tReKFTdglFNm9us=/600x600/smart/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/A-82730-1419714988-9675.jpeg.jpg",
"id" : 82730,
"master_id" : null,
"master_url" : null,
"resource_url" : "https://api.discogs.com/artists/82730",
"thumb" : "https://img.discogs.com/GfklysRe_lQTIg5YlA6FOsXKJhc=/150x150/smart/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/A-82730-1419714988-9675.jpeg.jpg",
"title" : "The Beatles",
"type" : "artist",
"uri" : "/artist/82730-The-Beatles"
},
{
"barcode" :
[
"XEX 709-1",
"XEX 710-1",
"XEX 711-1",
"XEX 712-1",
"XEX 709-1",
"XEX 710-2",
"XEX 711-1",
"XEX 712-1",
"XEX 709-1",
"XEX 710-1",
"XEX 711-1",
"XEX 712-2"
],
"catno" : "PMC 7067/8",
"community" :
{
"have" : 195865,
"want" : 258955
},
"country" : "UK",
"cover_image" : "https://img.discogs.com/buemDQeLTIhhS_2YWo5jHOItUtg=/fit-in/600x597/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-456663-1361306314-9486.jpeg.jpg",
"format" : [ "Vinyl", "LP", "Album", "Misprint", "Numbered", "Mono" ],
"genre" : [ "Rock" ],
"id" : 46402,
"label" :
[
"Apple Records",
"Garrod & Lofthouse International Ltd.",
"The Gramophone Co. Ltd.",
"EMI Records",
"Northern Songs Ltd.",
"Apple Records"
],
"master_id" : 46402,
"master_url" : "https://api.discogs.com/masters/46402",
"resource_url" : "https://api.discogs.com/masters/46402",
"style" : [ "Pop Rock", "Experimental" ],
"thumb" : "https://img.discogs.com/imSLZLPxL--Jt6wO8oR5BwFQmgw=/fit-in/150x150/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/R-456663-1361306314-9486.jpeg.jpg",
"title" : "The Beatles - The Beatles",
"type" : "master",
"uri" : "/The-Beatles-The-Beatles/master/46402",
"year" : "1968"
},
{
"barcode" :
・
・
・
・
*繰り返し※
この取得したデータを各要素にバラして、表示すると画面のようか結果となります。右上にページ数が「1/200」となっているのがわかると思います。
検索結果は、結果を表示するためのテーブルを内部にあり、検索の都度、全データを削除し、取得したデータを表示させるようにしています。
GWにかなり勢いで作ったので、ちゃんとJSONの中身や構造を見てなかったのですが、DiscogsのJSONはシンプルで、処理がしやすいと思います。なので、検索した際の結果もオプションは使っていません。
検索のオプションは色々あるのですが、使わなくても検索キーにスペースのみで、かなりうまく絞り込まれるので、検索の精度はとても高いと思います。画面は「Beatles リボルバー」で、ページ数が「1/1」といい感じになりました。
次回は、取得したデータの処理方法を説明しようと思っています。スクリプトのコメントもちゃんと書いたので、処理の流れがわかりやすく、メモの書くことはとても大事と改めて思いました。
いいなと思ったら応援しよう!
