#はじめに
この記事はアイカツ! Advent Calendar 2020の1日目の為に書き下ろしました。今年は誰もアドベントカレンダーを作成していなかったので作成しましたが既に1日目にしてSHINING LINE*が切れそうです。助けてください(切実)
前日の記事はありません。記念すべき1日目です。
##自己紹介
N高等学校所属の高校三年生です。MacをMBRで動作させる趣味があります。12
普段はPython3をメインに書いていて片手間でRustをちょこっと学習しています。でもRustの概念があいまいなのでもう少し理解を深める努力をしたいです。Go Langとは分かり合えないです。3
##今回作成したもの
アイカツカードの検索botをpythonで作りました。使用ライブラリはdiscord.pyとbeautifulsoup4、requestsです。実際の見にくいコードを引用して紹介したいと思います。
##実際のコードから引用したもの
res = requests.get('https://www.aikatsu.com/onparade/cardlist/index.php?search=true')
#アイカツのカード一覧サイトにDDoS攻撃
soup = BeautifulSoup(res.text, 'html.parser')
#lxmlパーサー動かん...
for l in soup.find_all("dd", class_="cardName"):#カード名から要素取得してる
print(l.text)
CN.append(l.text)
for l in soup.find_all("dd", class_="cardNum"):#これはカード番号取得。
print(l.text)
CU.append(l.text)
print(CU)
print(CN)
while True:#これはカード名とカード番号を連結している
a = CU.pop(0)
b = CN.pop(0)
CR.append(a+" "+b)
if CU == [] and CN == []:
break
print(CR)
クソ汚いコードです。もう少しマトモな書き方は出来ないのでしょうか。
簡潔に纏めるとbot起動時に公式カードリストからカード一覧とカード番号を取得してbotアカウントにログインしています。
##作りたくなったきっかけ
アイカツ公式のサイトが画像を多用しており読み込みが遅かったため4discord上で検索できるようにするべきだと思い作成しました。製作期間は概ね5日です。5
##実際の動作
!s エンジェリー
と打つとエンジェリーを含むカードを出力します。
複数のキーワードも可能で!s PR エンジェリー
と検索した場合PRとラブを含むカードを出力します。
原理としては完全一致検索なので複数のキーワードを含む際、それらのキーワードがすべて含まれるカードを出力します。
##今後の課題
複数キーワード検索でラブディスティ二ーコーデ
とかの真ん中のキーワード、ディスティニーで検索してみたいです。実装方法は思いつかないので後日手探りで考えてみたいと思います。
##終わりに
アドベントカレンダー用にこのネタを思いつき必死で製作するのは少し身体に来るものがありました。来年はもう少し余裕を持ちたいと思います。2日目はさんのです。