Skip to main content

python wrapper for ChatWork API v2

Project description

chatpywork

python wrapper for ChatWork API v2

プログラマ的にはSlackなどの方がフレンドリーですが、 事務作業の現場などではChatWorkが使われていることが多いです。 そして、そういう現場こそ、pythonが活躍する本来の場なのでは、と考えています。

ChatWorkのAPIくらいなら、requestsから叩くこともできますが、 ChatWorkの投稿の自動化をする際によくあるタスクとして、ファイルのアップロードなどがあります。 特にcsvなどが多いんですね。

csv自体にはなんの文句もないんですが、その際、 文字コードや改行コードなどの前時代的な問題が発生してイライラさせられます。

今時、UTF-8を「不正なバイナリ」などとして受け入れないプログラムの方がどうかしていますが、 pythonで事務作業を自動化したいと考える日本企業のcsvのターゲットはe飛伝だったりする場合が多く、 これは実態はcp932であるShift_JISしか受け付けないし、CRLF以外の改行コードも改行とはみなしてくれない。 近い将来に対応してくれるともあまり期待できない。

というわけで、その苦労の成果だけでも切り出しておこうとしたのが、このパッケージです。

ChatWorkのAPIは他にもたくさんありますが、事務で自動化したいと思う案件が多いのは主に作成系であると思われるので、 現状はそこに限ってます。

installation

pip install chatpywork

Usage

送信に必要なroom_idは https://www.chatwork.com/#!rid123456789 のridの後の数字を使う(ridは含まない)。

api_keyは、 ChatWorkのページの右上のアカウントの名前をクリックして出てくるアコーディオンの中にある API設定 をクリックして飛んだページで取得できる。

import chatpywork
import datetime


room_id = '123456789'
api_key = 'abcdefghi123456789'

account_id1 = 'Account Id1'
account_id2 = 'Account Id2''

room = chatpywork.Room(room_id, api_key)

room.send_message("hello", to={account_id1:"宛先ユーザー"})

room.send_message("hello everyone", toall=True)

room.send_data(binarydata, "image.jpg", "image/jpeg", message="画像です", to={account_id1:"宛先ユーザー"})

room.send_binaryfile("image.png","image/png", message="画像です", to={account_id1:"宛先ユーザー")

room.send_textfile("data.csv","text/csv", fromencode="utf-8", toencode="cp932", fromlinsep="\n", tolinesep="\r\n", message="収集したデータです", to={account_id1:"宛先ユーザー"})

room.send_csv([["ID","名前","年齢"],[1,"山田太郎","24"],[2,"鈴木二郎","30"]], "sample.csv", encode="cp932", linsep="\r\n", message="収集したデータです", to={account_id1:"宛先ユーザー"})

room.send_data_from_url("http://example.com/image.png", headers={"X-token":"some secret tpken"}, params={"q":"query"}, message="webで手に入れた画像です。", to={account_id1:"宛先ユーザー"})

room.send_task("牛乳買って", [account_id1, account_id2], limit=datetime.datetime(2020, 4, 1)) 

公式ドキュメントにはファイルのサイズの上限は5MBとありますが、 どうやらHTTPリクエストのボディ全体のサイズの上限が10MBのようで、それを超えなければ、アップロードできます。

データのダウンロード時のエラー、およびファイルの容量オーバーなどは、できる限りChatWorkに送信しますが、 それも動かなければ、全てのメソッドがrequests.postのレスポンスのオブジェクトを返すので、それを使ってデバッグしてください。

ChatWorkのAPIの使用制限は今の所5分間あたり300回です。 当たり前ですが、これを超えるとChatWorkにはエラーの通知できませんので、 メソッドの戻り値に含まれるHTTPレスポンスのヘッダーに記載されたAPI使用の残り回数や、 429 Too Many Requestsなどを検知して、他のエラー通知の方法を試みてください。

Author

淡中☆圏 <tannakaken@gmail.com>

Twitter: @tannakaken

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chatpywork-1.3.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

chatpywork-1.3.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file chatpywork-1.3.0.tar.gz.

File metadata

  • Download URL: chatpywork-1.3.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for chatpywork-1.3.0.tar.gz
Algorithm Hash digest
SHA256 eca0535ca01cbcd9958007ea893268da475dc854d084c37951112890d286b843
MD5 3618eae82c0c42fc78e8d0540a7e1895
BLAKE2b-256 81638f7b636cd59194ce968bc0307f57f1078d1cb2d1ff6c2c94cf759e42db8d

See more details on using hashes here.

File details

Details for the file chatpywork-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: chatpywork-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for chatpywork-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dff08512698be438ceff0deb2f0195f55abc86870d55e7c152505cf0c4bf8c3f
MD5 c00839014a692b58bdeb26ca06655b68
BLAKE2b-256 9043d976481fbf2aab7354029ec5f38c94b0823fb42f8a1d23196c11f6b4b931

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page