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
#!/bin/bash
python3 -m venv venv
source venv/bin/activate
python3 link.py
code:gacha.sh
#!/bin/bash
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():
base_url = 'https://moepic.com/minigame/item_list.php?code={}'
url_list = list()
url_list.append('mg', '01_もえガチャ.csv')
# url_list.append('gold', '2023-02-28_ハイスクールDD_04DX.csv')
# url_list.append('md', '03_動物ガチャ.csv')
# url_list.append('mrg', '04_テクガチャ.csv')
# url_list.append('mgg', '05_ラブペガチャ.csv')
# url_list.append('mr', '2023-02-21_ハイスクールDD_03週末.csv')
# url_list.append('mb', '22_メダロット2nd_02.csv')
# url_list.append('mbg', '2023-02-21_猫ガチャ週末.csv')
# url_list.append('silv', '20221111_お試しガチャ100sp.csv') #
# url_list.append('mfg', '20221220_大入り福袋.csv')
# url_list.append('mf', '20230502_17thアニバーサリーガチャ.csv')
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')
col = "等級", "アイテム名", "個数", "週明け確率", " "
row = []
elem = soup.find_all("div")
# divは3箇所っぽい
# 0 最初のは通常確率
# 1 は10連最後の確率
# 通常確率
div = elem0
for li in list(div.stripped_strings):
'''
if li == "等級":
elif li == "アイテム名":
elif li == "個数":
elif li == "確率":
'''
if li == "特賞":
row.append("\t特賞", "", "", "通常", "10連")
elif li == "一等":
row.append("\t一等", "", "", "", "")
elif li == "二等":
row.append("\t二等", "", "", "", "")
elif li == "三等":
row.append("\t三等", "", "", "", "")
elif li == "四等":
row.append("\t四等", "", "", "", "")
elif li == "五等":
row.append("\t五等", "", "", "", "")
else:
# col = "等級", "アイテム名", "個数", "確率"
match = re.match(r"0-9+\.0-9+%", li)
if match:
# 確率はパーセントだけじゃなくて前後の数字で判断
col3 = match.group(0)
# print(col)
row.append(copy.copy(col))
elif li.isdigit():
# 数字だけなら多分個数
col2 = li
elif li == "NEW":
# NEWがあったら前につける
col0 = "\tNew!"
else:
# それ以外は多分アイテム名
# あとから一致させるのでここでは加工しない
col0 = "\t"
col1 = li
# 10連最後の確率
div = elem1
col10 = "アイテム名", "数", "確率"
row10 = []
for li in list(div.stripped_strings):
match = re.match(r"0-9+\.0-9+%", li)
if match:
col102 = match.group(0)
row10.append(copy.copy(col10))
elif li.isdigit():
col101 = li
pass
elif li == "NEW":
pass
elif li == "一等" or li == "二等" or li == "三等":
pass
elif li == "四等" or li == "五等":
pass
else:
col100 = li
# 10連確率書き込み
for r10 in row10:
for t in row:
if (r100 == t1) and (r101 == t2):
t4 = r102
# アイテム名を加工する
for t in row:
if "" == t1:
pass
elif -1 == t1.find('[ '):
t1 = "+ t1 + ""
else:
dst1 = t1.replace("[ ", "[ [")
dst2 = dst1.replace(" ]", "] ]")
t1 = dst2
# 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():
url = r'https://moepic.com/top.php?mid=_'
link = r'https://moepic.com/top/news_detail.php?hidden_key='
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()