[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