rfushimi.hatenablog.jp
import datetime
import os
import time
import requests
from bs4 import BeautifulSoup
def say(text):
print(text)
os.system(
rf'powershell -NoProfile -ExecutionPolicy Unrestricted .\speech.ps1 -Arg1 "{text}"'
)
url = "http://www1.jr.cyberstation.ne.jp/csws/Vacancy.do"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
"Referer": "http://www1.jr.cyberstation.ne.jp/csws/VacancyReinput.do",
}
dt = datetime.date(2020, 1, 7)
time_range = range(6, 15)
payload = {
"script": 1,
"month": dt.month,
"day": dt.day,
"hour": "06",
"minute": "00",
"train": 1,
"dep_stn": "福山",
"arr_stn": "東京",
"dep_stnpb": 6220,
"arr_stnpb": 4000,
}
for i in time_range:
payload["hour"] = f"{i:02}"
try:
r = requests.post(url, headers=headers, data=payload)
except:
time.sleep(10)
continue
soup = BeautifulSoup(r.content, "html.parser")
table = soup.find(
"table",
attrs={"width": "550", "cellspacing": "1", "border": "3", "bgcolor": "#ffffff"},
)
for tr in table.find_all("tr", recursive=False)[2:-1]:
tds = [td.get_text(strip=True) for td in tr.find_all("td")]
if tds[3] != "×":
say(f"普通車に空席があります: {tds[1]}, {tds[0]}")
if tds[5] != "×":
say(f"グリーン車に空席があります: {tds[1]}, {tds[0]}")
time.sleep(5)
speech.ps1
Param(
[String]$Arg1= "テキストがありません"
)
Add-Type -AssemblyName System.speech
$s = New-Object System.Speech.Synthesis.SpeechSynthesizer
$s.Speak($Arg1)