MoE公式からお知らせを取ってくるスクリプト(Linux)
Ubuntu 22.04だと最初からpython3なのでvenvすれば環境汚さずに作れる
クソスクリプト
どこかに作業ディレクトリを作って以下を実行
code:前提.sh
python3 -m venv venv
source venv/bin/activate
pip install requests
pip install BeautifulSoup4
deactivate
あとはこれ実行する
gachaとlinkで分けているのはたまにどちらかのみが更新されるため
code:link.sh
python3 -m venv venv
source venv/bin/activate
python3 link.py
code:gacha.sh
python3 -m venv venv
source venv/bin/activate
python3 gacha.py
本体
pythonコードは数年前の使いまわし
gacha.pyはガチャ内容によってコメントアウトを外す
特殊ガチャはガチャページのリンク先文字みて判断する
httpsリクエストが早いと鯖に蹴られるので注意
link.pyはお知らせ取ってくる
code:gacha.py
import copy
import re
import requests
from bs4 import BeautifulSoup
import time
def moe_gacha():
url_list = list()
print(">> list length:" + len(url_list).__str__())
for li in url_list:
time.sleep(5)
moe_gacha_inner(base_url.format(li0), li1) def moe_gacha_inner(url, output_filename):
print(">> " + output_filename)
# 通常ガチャ
url1 = url
output_file1 = output_filename
soup = BeautifulSoup(requests.get(url1).text, 'html.parser')
row = []
elem = soup.find_all("div")
# divは3箇所っぽい
# 通常確率
for li in list(div.stripped_strings):
'''
if li == "等級":
elif li == "アイテム名":
elif li == "個数":
elif li == "確率":
'''
if li == "特賞":
elif li == "一等":
elif li == "二等":
elif li == "三等":
elif li == "四等":
elif li == "五等":
else:
match = re.match(r"0-9+\.0-9+%", li) if match:
# 確率はパーセントだけじゃなくて前後の数字で判断
# print(col)
row.append(copy.copy(col))
elif li.isdigit():
# 数字だけなら多分個数
elif li == "NEW":
# NEWがあったら前につける
else:
# それ以外は多分アイテム名
# あとから一致させるのでここでは加工しない
# 10連最後の確率
row10 = []
for li in list(div.stripped_strings):
match = re.match(r"0-9+\.0-9+%", li) if match:
row10.append(copy.copy(col10))
elif li.isdigit():
pass
elif li == "NEW":
pass
elif li == "一等" or li == "二等" or li == "三等":
pass
elif li == "四等" or li == "五等":
pass
else:
# 10連確率書き込み
for r10 in row10:
for t in row:
if (r100 == t1) and (r101 == t2): # アイテム名を加工する
for t in row:
pass
elif -1 == t1.find('[ '): else:
dst1 = t1.replace("[ ", "[ [") dst2 = dst1.replace(" ]", "] ]")
# 1行まとめ
out = []
for r in row:
out.append('\t'.join(r))
# 最終書き込み
with open(output_file1, mode='w') as f:
f.write("table:もえガチャ\t\t\t\t\n")
f.write('\n'.join(out))
f.close()
if __name__ == '__main__':
moe_gacha()
code:link.py
import re
import requests
from bs4 import BeautifulSoup
def moe_link():
output_file = r'moe_link.txt'
out = []
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
elements = soup.find_all("a", class_="topnews_imp")
for e in elements:
result = re.search(r'0-9a-f{96,98}', e.get('href')) code = result.group()
line = '+ e.getText() + ' ' + link + code + '\n'
# print(line)
out.append(line)
with open(output_file, encoding='utf-8', mode='w') as f:
f.write(''.join(out))
f.close()
if __name__ == '__main__':
moe_link()