🐲
【ドラゴンクエストXオンライン】つよさ予報からアストルティア防衛軍の全兵団襲撃を抽出する
ゲーム内や冒険者のおでかけ超便利ツールで見ることができる情報ですが
テキスト情報になっているといろいろ便利ですよね
実行例
$ dqxraid
本日のアストルティア防衛軍 全兵団は 7:00 11:00 16:00 20:00 1:00 5:00 です
書いてみた
# -*- coding: utf-8 -*-
#
# つよさ予報からアストルティア防衛軍の全兵団襲撃を抽出
import sys
import datetime as dt
import requests
from bs4 import BeautifulSoup
base_url = 'https://hiroba.dqx.jp/sc/tokoyami/'
r = requests.get(base_url, timeout=10)
if r and r.status_code == 200:
soup = BeautifulSoup(r.content, 'html.parser')
# 同じクラスでメタルーキーもあるので先頭だけ
tables = soup.find_all('table', class_='tokoyami-raid')[0]
trs = tables.find_all('tr')
attacks = []
for tr in trs:
tds = tr.find_all('td')
# th のときは td がないのでスキップ
if len(tds) == 0:
continue
_time = tds[0].contents[0].strip().split('\xa0')[0]
_ico = tds[1].contents[1]
# 全兵団アイコン
if '/raid/ico/19.png' in str(_ico) and _time:
attacks.append(_time)
if len(sys.argv) == 1:
print('本日のアストルティア防衛軍 全兵団は', ' '.join(attacks), 'です')
else:
now = dt.datetime.now(dt.timezone(dt.timedelta(hours=9))).strftime('%H:%M')
if now[0:2] != '05':
for attack in attacks:
if attack == '0:00' and now[0:2] == '23':
diff = dt.datetime.strptime('01:00', '%H:%M') - dt.datetime.strptime('00:' + now[3:5], '%H:%M')
else:
diff = dt.datetime.strptime(attack, '%H:%M') - dt.datetime.strptime(now, '%H:%M')
if diff > dt.timedelta(hours=0) and diff < dt.timedelta(hours=1):
Discussion