見出し画像

Vinyl Collections (レコード情報管理アプリを作る 2.5/5)

前回から時間が経ってしまいましたが、取得したデータを元に、収録曲の取得について説明したいと思います。今回は名盤「A Long Vacation」で説明を。

vinyl_取得前の画面

で、久しぶりにスクリプトの中身をみたところ、とても丁寧にコメントを記載されていてとても「びっくり!」な状態です。まずは処理の流れを確認してみましょう。

処理の流れ
1. discogsのidを変数
2. 曲のデータが保存済みかどうかの確認
3-1. 有る場合:何もしない
3-2. 無い場合:リリース情報から収録曲の情報を取得。
3-3. 取得したJSONデータから収録曲を1曲づつレコードとして保存

ここでのポイントは収録曲を探すためのキーとなるidを保存させておくこと。このidによって、保存されたアルバム等の曲を取得することが可能になっています。

そして、下記が「A Logn Vacation」の収録曲を取得した場合の結果になります。表示用に整形された状態で記述しています。

処理の記述例:
JSONGetElement ( $$JSON;"tracklist")
/*        A面の収録曲が表示        */
[
	{
		"duration" : "5:02",
		"position" : "A1",
		"title" : "君は天然色",
		"type_" : "track"
	},
	{
		"duration" : "3:42",
		"position" : "A2",
		"title" : "Velvet Motel",
		"type_" : "track"
	},
	                ・
                    ・
                    ・
    /*        B面の収録曲が表示        */
	{
		"duration" : "4:24",
		"position" : "B1",
		"title" : "雨のウェンズデイ",
		"type_" : "track"
	},
	{
		"duration" : "3:55",
		"position" : "B2",
		"title" : "スピーチ・バルーン",
		"type_" : "track"
	},
                    ・
                    ・
                    ・
   
]

実際のスクリプトを見てみましょう。

① リリース情報の取得。その際にdiscogsのidで検索を実行。
② 取得した収録曲のデータの取得と、件数の確認
③ FileMaker特有のレイアウト外にポータルを配置して追記する処理

Vinyl_スクリプトの説明

③の処理は、レイアウトでいうとここになります。関連レコードへ移動して書き込みでも良いのですが、レイアウトを遷移させずに書き込みができるので、とても便利です。

あと、このポータルがあることで、収録曲の有無も確認もできるので、重宝される処理方法です。

Vinry_欄外のポータルへの記述

スクリプトだと下記が該当箇所になります。DiscogsのJSONデータは、要素の指定がシンプルなので、とても楽です。

スクリーンショット 2022-01-29 17.46.47

リレーションシップグラフの処理も確認すると、こうなっています。リレーションを成立させるための外部キーの処理も忘れずに。

vinryl_リレーション越しの追記

収録曲を下記の記述でLoopさせながら保存していきます。

処理の記述例:
 JSONGetElement ( $JSON_tracklist;"[" & $i & "]position" )
 JSONGetElement ( $JSON_tracklist;"[" & $i & "]type_" )
 JSONGetElement ( $JSON_tracklist;"[" & $i & "]title" )
 JSONGetElement ( $JSON_tracklist;"[" & $i & "]duration" )
/*        処理方法と記述例        */
[
	{
		"duration" : "5:02",  → JSONGetElement ( $JSON_tracklist;"[" & $i & "]duration" )
		"position" : "A1",    → JSONGetElement ( $JSON_tracklist;"[" & $i & "]duration" )
		"title" : "君は天然色", → JSONGetElement ( $JSON_tracklist;"[" & $i & "]title" )
		"type_" : "track"    → JSONGetElement ( $JSON_tracklist;"[" & $i & "]track" )
	},

レイアウトの外にあるポータルに書き込みしてから、カードで新規のウィンドウを表示させて、取得した収録曲を表示。

Vinrl_収録曲の取得後

APIって便利。そして、情報を書き込んでいる方々に感謝!!

で、記載を忘れてましたが、このアプリは無料でダウンロードできます。気になった方は下記のレビューを確認していただき、是非使ってみてください。

次は、お気に入り機能の解説をしようかと思っています。作って満足でも良いのですが、その中身の処理を説明するのも大切なことなので、続けて行こうと思っています。

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