授業で作ったWebアプリケーション②

こんにちは、今回は前回の続きとして、私が作ったWebアプリケーションの簡単な解説を続けようと思います。

前回からの続きになるので、まだ見ていない方は下のリンクから見てみてください!↓↓

前回までは、GooglebooksAPIについて初学者ながら解説を行いました今回はAPIを使う上で必然的に出てしまうエラーに対処する方法について考えてみたいと思います。

まず、今回作りたいプログラムのおさらいをしたいと思います。

今回作りたいアプリケーションの条件

言語:python3.8.8

やりたいこと:GoogleBooksAPIを活用して、検索ツールの作成

ほしい検索結果:本の題名・本の著者・発売日・ページ数・紹介文・購入まで飛ぶことができるURL・検索結果の本の画像

前回は、GoogleBooksAPIの使い方について扱いました。今回は、APIを経由して検索をかけた際に、エラーが出てしまうときがあるのでそれの対処について扱いたいと思います。

考えられるエラー

検索をかけた時、GoogleBooksにない書籍を検索をかけた場合、KeyErrorと出てきます。これをそのままにしておくのは利用者の立場からすると、使いにくいと思われます。

それに対処するために、try~exceptを使いたいと思います。(Python公式の解説はこちら

この関数はわかりやすくすると、「エラーが起きた時にする動作を決める」ことができます。

使い方は、「tryの中に、errorが起きなかった時の動作」「exceptの中に、errorが起きた時の動作」を書くだけです。難しい定義も必要ないので、簡単に実装することができます。

for i in range(0,1) :
   url = 'https://www.googleapis.com/books/v1/volumes?q='+tool+want  #GooglBooksAPI
   response = requests.get(url).json() #情報の取得,json変換
   totalitems = response['totalItems'] #件数1
   try :
       items_list = response['items'] #items リストデータ
       items = items_list[i] #items
       info = items['volumeInfo']
       print(response)
       title = info['title']
       pagelink = info['canonicalVolumeLink']
       description = info['description']
       print('紹介文が見当たりません')
       print('タイトル:', title)
       print('URL',pagelink)
       print('~~~~~~~~~~紹介文~~~~~~~~~~~~~')
       print(description)
       print('')
       print('')
       pic=info['imageLinks']['thumbnail']
       print(pic)
   except KeyError:
       print('検索結果がみつかりませんでした')
       print('もう一度試してください')
       sys.exit()
       pass

こんな感じで、検索結果が見つからない場合には「KryError」が出た場合の動作を決めることができました。

これでほとんどの難しい箇所が終わったと思います。

では次のWebアプリケーション③に続きます

ありがとうございました。

Webアプリケーションを作りました

こんにちは。
信州大学 教育学部 小倉研2年の peace です。

大学の情報の授業で、Webアプリケーションを作成しました。
是非、下のURLからアプリケーションを利用していただければと思います。
URL:https://share.streamlit.io/i-yuki1218/peace_2346/main/streamlitworks1.py

中身が気になる方は、以下のコードをご覧下さい
(参考になるかは分かりませんが,、主要部分のみ載せておきます,,,)

ソウルナンバー診断の一部を公開!参考になれば幸いです(*^o^*)

あっ、作品の説明がまだでしたね、、、
今回のWebアプリケーションでは「ソウルナンバー診断」ができます!
生年月日を打ち込むだけで正確や相性が診断ができるので、
家族や友達と楽しんでいただけたらと思います!(年末年始の集まりで盛り上がるかも?)

授業で教材?を作りました!!

こんにちは!magnetです。

最近寒くなりましたね。外気温が低くて研究室がなかなか温まりません。

そんなご時世ですが頑張っていきましょう!

 

それでは本題に……

最近の授業で「streamlitを使ったサイトを作ろう」という課題が出ました。

私は迷ったあげく以下のサイトを作りました。

一回訪問してみて下さい。決して怪しいサイトではないので!!

https://share.streamlit.io/maglill/saisyonoyatu/main/sagi.py

下のコードは、是非参考にして下さい!

import time
import streamlit as st
from PIL import Image

st.title("おめでとうございます。")
st.write("あなたは2021年間ビジターアンケートの参加者に選ばれました!")
st.write("Chrome「ありがとう」を込めてApple iPhone 13 Pro が当たる")
st.write("チャンスを差し上げます!")

#iPhineの画像入れる。
img=Image.open('sumaho.png')
st.image(img, caption='iPhone13Pro',use_column_width=True)

st.write('iPhone13Pro')
st.write('定価:¥146800')
st.write('期間限定:¥500')

st.write("")
st.write("")
st.write("以下の質問に答えて下さい。")
st.write("")

option=st.selectbox("1日に約何時間ネットを見ますか?",list(['1','2','3','4','5','それ以上']))
option=st.selectbox("普段何時間SNSを見ますか?",list(['1','2','3','4','5','それ以上']))
option=st.selectbox("普段何時間動画を見ますか?",list(['1','2','3','4','5','それ以上']))

st.write("")#改行のためにおいた。
st.write("")

status_area = st.empty()

# カウントダウン
count_down_sec = 10
for i in range(count_down_sec):
    # プレースホルダーに残り秒数を書き込む
    status_area.write( f'あと {count_down_sec - i}   秒で自動的に申請されます。')
    # スリープ処理を入れる
    time.sleep(1)

status_area.write('回答を送信しております。しばらくお待ち下さい。')

latest_iteration = st.empty() #空コンテンツと⼀緒に変数を作成
bar = st.progress(0)#プログレスを作る 値は0
for i in range(100):
    latest_iteration.text(f'Iteration{i+1}')#空のIterationにテキストを⼊れていく
    bar.progress(i +1)#barの中⾝をぐいぐい増やしていく
    time.sleep(0.01)
    
st.write("申請が完了しました。")

st.write("")
st.write("")
st.write("")
st.write("")
st.write("")
st.write("")

st.text("以下にあなたの情報を入力して下さい。")
st.text_input("お名前")
st.text_input("住所")
st.text_input("電話番号")
st.text_input("連絡の取れるメールアドレス")
st.write("")
st.text_input("何か要望があればお書き下さい。")

st.write("")
st.write("")
st.write("")
st.write("")
st.write("")
st.write("")

#回答送信ボタン
st.text('※回答送信には時間がかかります。')
if st.button('送信'):
    st.balloons()
    st.write("")
    st.write("")
    st.write("")
    st.write("")
    st.write('本部への送信が完了致しました。')
    st.write('お届け予定日は4月1日以降です。')
    st.balloons()
else:
    st.write('')

 

 

ね?怪しくなかったでしょ?

これ、情報モラルとかそういうとこで教材として使えると思うんです。(まだ不完全ですが)

無断使用全然OKなので困ったら是非使ってみて下さいね!

 

と、言うことでmagnetがお伝えしました~!

授業で作ったwebアプリケーション①

こんにちは、今回は授業で作ったWebアプリケーションの紹介・解説を行いたいと思います。

言語:python3.8.8

やりたいこと:GoogleBooksAPIを活用して、検索ツールの作成

ほしい検索結果:本の題名・本の著者・発売日・ページ数・紹介文・購入まで飛ぶことができるURL・検索結果の本の画像

GoogleBooksAPIについて

このAPIをつかうことで、GoogleBooksに検索を行い、レスポンスとして、リスト形式のレスポンスが返答される。もともとはJavaScriptで使われるAPIであるためpythonで使うときにはひと工夫が必要となる。

url = 'https://www.googleapis.com/books/v1/volumes?q='+tool+want  #GooglBooksAP
response = requests.get(url).json() #情報の取得,json変換

この2行でGoogleBooksにアクセスして、解答を得ることができます。そして、responseにリストとして、入っています。jsonというのは、GoogleBooksAPI自体がJavaScriptで使用することを前提に作られているので、それをpythonで使えるようにするためにjson変換を行い使えるようにしています。

toolの中には代表的なものですが、以下のような検索方法があります

intittleタイトル
inauthor著者
isbnISBN(10桁または13桁両方とも可能)
記入なしフリーワードで調べることが可能
toolの中身

ほかにもありますが、このくらいが代表的であると思います。wantの中身は検索したい方法に基づいたキーワードを入力すると検索できます。responseで返ってくるリストはとても複雑そうに見えますが、簡単にすると「リスト・辞書」の連続になります。

私はプログラミング初学者であり、まだまだ未熟ものですが、コードを書いてみたので、参考になるかわかりませんが、もしよかったら参考にしてください。

url = 'https://www.googleapis.com/books/v1/volumes?q='+str(tool)+str(want)  #GooglBooksAPI
response = requests.get(url).json() #情報の取得,json変換
totalitems = response['totalItems'] #件数1
print('検索結果は',str(totalitems),'件です')
for i in range(0,5) :
    items_list = response['items'] #items リストデータ
    items = items_list[i] #items
    info = items['volumeInfo']
    title = info['title']
    pagelink = info['canonicalVolumeLink']
    description = info['description']
    pagecount=info['pageCount']
    authors=info['authors'][0]
    publishdate=info['publishedDate']
    pic=info['imageLinks']['thumbnail']

詳しいことは、Googleから公式に詳細が記載されているので、下のリンクからご覧ください。

https://developers.google.com/books/docs/v1/using

次回に続きます。

ロゴを作成しました!

こんにちは。
信州大学 教育学部 小倉研2年の peace です。

作品紹介ページの記念すべき第1回目の投稿は、、、

「ロゴ」

です🎉

今後、小倉研究室の “顔” となる大切なものを、研究室メンバーがプレゼンしました。


今後も、様々な作品を紹介していくので、よろしくお願いします。

寒い季節がやってきた

愉快な大学生

とうとう長野県にも冬がやってきました。愛知県出身の私にとっては地獄のような日々の始まりです。

無頓着な大学生

具体的にはどのくらい寒いの?

愉快な大学生

なんかね、とうとうヒートテックを着ないといけない感じになってきたよ。まだ着ずに堪えているけどそろそろ寒いな。

体感的には愛知県の一番寒い時くらい寒いかな。

無頓着な大学生

それは結構寒いな。大学生だし高校生の期に比べて代謝も落ちているだろうし、体感温度とかも風強そうで低そう。ほかに対策あるの?

愉快な大学生

あーほかの信州大学生は結構の人が「コタツ」持ってるらしいよ。あとコートとダウンを着ているをかなり見るから持っていた方がいいかも。雪も降ったら自転車も乗れなくなって大変になるね。

無頓着な大学生

車とかやばくね?

愉快な大学生

スタットレス必須だよ。

他にもいろいろ費用がかかるから、車を持っている人は冬は特にお金がかかるね。

悪いことだけじゃなくてウィンタースポーツが盛ん。スノボやスキーはすぐ行ける。これがメリットだね。

長野県では毎年かなりの雪が降ることが予想されています。そのため、対策は必須です!!しっかりと対策を行って、雪山を楽しみましょう。

写真は先輩からいただきました。ありがとうございます。

紅葉は目にいいですね。

初めての投稿は1日遅れです。magです。

さて、今日はゼミの活動がありました。

Googleについて熱く語ってくれましたね。いろんな機能が裏で繋がっているんだなと思いました。

最後にはゴミを捨てに行きましたが、やっと賞味期限切れの調味料が無くなりましたね。

私はそれだけでとても満足です。やはりすっきりした部屋が良いですね。切に思います。

最後に、最近撮った夜景の画像を投下しておしまいにします。

タイトル、内容、画像どれも関連性が無いですね。マネしないようにしましょう。

作品ページもよろしくお願いします

はじめまして!

信州大学 教育学部 小倉研2年の peace です。

これから、主に作品ページを担当していきます。

今後、研究室の活動が増えていくにつれ、
研究室メンバーの個性あふれる作品を紹介していくので、
見ていただけるとうれしいです。

よろしくお願いします。

野尻湖 とても綺麗でした。

ぼくだいがくせい

地方大学生

こんにちは、

この研究室で活動をこれからなんとなくつづっていこうと思います。

また、地方大学生ならではのことや、教育学部の実態、技術科とは何をするかを書いていけたらなと思います。

無頓着な高校生

自己紹介からお願いします。

地方大学生

自己紹介をしたいと思います。

教育学部所属、2年生、です。

主に情報系を扱っていて、これからワードプレスの使い方や、Pythonについて扱えたらいいななんて思っています。

すべて独学で行っているものなので、情報に誤りがあるかもしれませんが、その際はご了承ください。勉強します。

無頓着な高校生

ありがとうございました。

これから、ゆっくりと進めていこうと思うので教育学部志望の方、大学生活に興味がある方はたまに読んでいただけたら嬉しいです。

筆者ゆう