辞書のリストがあり、JSON URL を検索しながら入力しています。問題は、JSON (Google Books API によって提供される) が常に完全であるとは限らないことです。これは書籍の検索であり、私が見たところ、すべての書籍に ID、タイトル、および著者が含まれていますが、すべての書籍に imageLinks が含まれているわけではありません。例として JSON リンクを次に示します: Search for Harry Potter。
常に10 件の結果が返されることに注意してください。この例では、ID は 10 件、タイトルは 10 件、作成者は 10 件ですが、imageLink は 4 件しかありません。
@app.route('/search', methods=["GET", "POST"])
@login_required
def search():
if request.method == "POST":
while True:
try:
seek = request.form.get("seek")
url = f'https://www.googleapis.com/books/v1/volumes?q={seek}'
response = requests.get(url)
response.raise_for_status()
search = response.json()
seek = search['items']
infobooks = []
for i in range(len(seek)):
infobooks.append({
"book_id": seek[i]['id'],
"thumbnail": seek[i]['volumeInfo']['imageLinks']['thumbnail'],
"title": seek[i]['volumeInfo']['title'],
"authors": seek[i]['volumeInfo']['authors']
})
return render_template("index.html", infobooks=infobooks)
except (requests.RequestException, KeyError, TypeError, ValueError):
continue
else:
return render_template("index.html")
私が使用した方法と上記で示した方法では、10 個の imageLinks (サムネイル) を見つけることができますが、時間がかかります。このリクエストにそれほど時間がかからないための提案はありますか? または、imageLink が見つからないときに「表紙のない本」の画像を挿入する方法はありますか? (私が望むものではありませんが、結果を待たなければならないよりはましです)