楽天ブックスCD検索APIを利用したアプリ

入力例:babymetal

タイトル リンク
import js import urllib.parse import json from pyodide.http import pyfetch from pyodide.ffi import create_proxy # イベントハンドラ用 async def searchCD(event=None): input_test_element = js.document.getElementById("input_test") input_word = input_test_element.value.strip() input_test_element.value = "" if not input_word: js.document.getElementById("mes").innerText = "アーティスト名を入力してください。" return APP_ID = '1021810494159056409' url = f'https://app.rakuten.co.jp/services/api/BooksCD/Search/20170404?artistName={urllib.parse.quote(input_word)}&sort=-releaseDate&applicationId={APP_ID}' try: response = await pyfetch(url) # open_url の代わりに pyfetch を使用 data = await response.json() # ここで JSON に変換 items = data.get("Items", []) if not items: js.document.getElementById("mes").innerText = "該当するアーティストがいません。" return for i in range(min(5, len(items))): item = items[i]["Item"] image_url = item.get("smallImageUrl", "") title = item.get("title", "") link = item.get("itemUrl", "") if image_url and title and link: js.document.getElementById(f"image{i}").src = image_url link_element = js.document.getElementById(f"link{i}") link_element.href = link link_element.innerText = title js.document.getElementById("restable").style.display = "block" js.document.getElementById("mes").innerText = "検索完了!" except Exception as e: js.document.getElementById("mes").innerText = f"エラー: {str(e)}" # ボタンのクリックイベントに対応 searchCD_proxy = create_proxy(searchCD) js.document.getElementById("btn").addEventListener("click", searchCD_proxy)