[Python Pyppeteer(Puppeteer)] BITMEX Leader Boardのスクショを撮ってdiscordに送信
これはなに?
こんな感じでDiscordにスクショを送り付けるコードです
スクショ対象サイト
確認環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: 18A391
$ python --version
Python 3.6.2 :: Anaconda, Inc.
$ pip --version
pypip 18.0
$ pip show requests pyppeteer
Name: requests
Version: 2.18.4
Name: pyppeteer
Version: 0.0.19
コード
使う人は例外処理とか追加してください。
あと定期実行させたい場合は、cronやタスクスケジューラを使うか、Python内でsleepさせるとかで良い感じにしてください。
import asyncio
from pyppeteer import launch
import requests
from time import sleep
headless = True
left, top = 0, 380
width, height = 1450, 1570
browserWidth, browserHeight = 1450, 2000
imgFile = "mexranker.png"
discordUser = "何か適当にユーザ名"
discordUrl = "webhook url"
mention = True
class Discord:
def __init__(self, user, url, mention=False):
self.user = user
self.url = url
self.isMention = mention
def send(self, message, fileName=None):
msg = ""
if self.isMention:
msg += "@everyone\n"
msg += message
data = {"content": " " + msg + " ", "username": self.user}
file, f = {}, None
if fileName:
f = open(fileName, "rb")
file = {"imageFile": f}
try:
r = requests.post(self.url, data=data, files = file)
except Exception as e:
print(e)
r = requests.post(self.url, data=data)
if r.status_code == 204:
print("正常に送信しました")
elif r.status_code == 404:
if f: f.close()
raise RuntimeError("指定URLは存在しません")
if f: f.close()
return r
async def main(path):
browser = await launch({"headless": headless})
page = await browser.newPage()
await page.goto('https://coinfarm.online/rank/', {'waitUntil': 'networkidle2'})
await page.setViewport({'width': browserWidth, 'height': browserHeight})
sleep(3)
await page.screenshot({'path': path, 'clip': {'x': left, 'y': top, 'width': width, 'height': height}})
await browser.close()
asyncio.get_event_loop().run_until_complete(main(imgFile))
Discord(discordUser, discordUrl, mention).send("適当に何かメッセージ", imgFile)
おわりに
有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。コードは、インデントくずれが起きたりするようなので、コピペ時には注意してください。
マガジン
コメント用
干し芋
ここから先は
0字
¥ 100
サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM