Firestoreに画像を含んだデータを格納する方法(2/3)

【手順2】画像のパスを含んだデータをJSON形式で作成し、
Firestoreに一括登録する。

●Point
・この手順の中では、画像ファイルは”gs://〜”形式となっている。
・手順1で利用したサービスアカウントキーのJSONファイルは、この処理でも利用する。

●例:一括登録するJSONファイル

[
  {
    "No": 90001,
    "Name": "Andy",
    "addres": "USA",
    "sex": "Male",
    "photos": "gs://test-app.appspot.com/sample/90001.jpg",
  },
  {
    "No": 90002,
    "Name": "Bob",
    "addres": "France",
    "sex": "Male",
    "photos": "gs://test-app.appspot.com/sample/90002.jpg",
  },
  {
    "No": 90003,
    "Name": "Caroline",
    "addres": "Canada",
    "sex": "Female",
    "photos": "gs://test-app.appspot.com/sample/90003.jpg",
  },
]

●Firestoreへのデータ登録プログラム(結果はfirebaseコンソールにて確認)

import firebase_admin
from firebase_admin import credentials, firestore
import json
# ##################################################################
#  FIreStore Storage Image Upload
# ##################################################################
# FirebaseのサービスアカウントキーのJSONファイルのパス
cred = credentials.Certificate('test-app-firebase.json')

# Firebaseアプリの初期化
firebase_admin.initialize_app(cred)
# Firestoreクライアントの取得
db = firestore.client()
# Firestoreクライアントの取得
db = firestore.client()
# JSONファイルを読み込む
try:
    with open('sampleJson.json', 'r', encoding='utf-8') as f:
        # ファイルの内容を文字列として読み込む
        file_content = f.read()
        # 不正な改行コードを正しいものに置換する
        file_content = file_content.replace('¥n', '\n')
        # JSONとしてデコードする
        data = json.loads(file_content)
except json.JSONDecodeError as e:
    print(f'JSONDecodeError: {e}')
    raise
except Exception as e:
    print(f'Unexpected error: {e}')
    raise

# Firestoreにデータを追加する関数
def upload_data_to_firestore(collection_name, data):
    collection_ref = db.collection(collection_name)
    for item in data:
        doc_ref = collection_ref.document()  # 自動生成されたIDを使用
        doc_ref.set(item)
    print('Data successfully uploaded to Firestore!')

# コレクション名とデータを指定してアップロード
if __name__ == '__main__':
    upload_data_to_firestore('samplePersons', data)