見出し画像

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を下記のように指定します。

スクリーンショット 2021-07-15 19.55.28

そして、APIから返ってきたデータを変数として保存するために「ターゲット」として変数を「$$JSON」として保存できるようにします。

スクリーンショット 2021-07-15 19.59.15

データビューワーで$$JSONの中身を確認します。JSON形式の中身を確認する際には、JSONFormatElementsでインデントされた形式にすると読みやすくなります。

スクリーンショット 2021-07-15 20.09.28

画像では見にくいので、要素としては、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」となっているのがわかると思います。

検索結果は、結果を表示するためのテーブルを内部にあり、検索の都度、全データを削除し、取得したデータを表示させるようにしています。

スクリーンショット 2021-07-15 20.23.42

GWにかなり勢いで作ったので、ちゃんとJSONの中身や構造を見てなかったのですが、DiscogsのJSONはシンプルで、処理がしやすいと思います。なので、検索した際の結果もオプションは使っていません。

検索のオプションは色々あるのですが、使わなくても検索キーにスペースのみで、かなりうまく絞り込まれるので、検索の精度はとても高いと思います。画面は「Beatles リボルバー」で、ページ数が「1/1」といい感じになりました。

スクリーンショット 2021-07-15 20.33.33

次回は、取得したデータの処理方法を説明しようと思っています。スクリプトのコメントもちゃんと書いたので、処理の流れがわかりやすく、メモの書くことはとても大事と改めて思いました。








いいなと思ったら応援しよう!

セキグチマサハル
よろしければサポートをお願いします。頂いたサポートはAPIの周り調査や実験に使わせて頂きます。スピーカーの作成や、ホロスコープの依頼もあれば、メッセージをください。