cloverrose's blog

Python, Machine learning, Emacs, CI/CD, Webアプリなど

Tweepyがもうじきversion2.2に!

PythonTwitter APIライブラリTweepy(tweepy/tweepy · GitHub)のversion2.2のリリースノートが書かれ始めていました。Add release notes for 2.2 (WIP) release. · fd7cc6e · tweepy/tweepy · GitHub

ヘッダー(banner)の更新ができるようになりました

大きな変更点は、アイコンや背景の更新と同じようにヘッダー(banner)の更新もできるようになったことです。
各個人がForkしてupdate_profile_bannerを実装している感じの時代がようやく終わろうとしています。

関連Pull Request:
Add account/update_profile_banner endpoint by Aaron1011 · Pull Request #297 · tweepy/tweepy · GitHub

特に関連するCommit:
Add account/update_profile_banner endpoint · d50ce7d · tweepy/tweepy · GitHub

Added optional parameter form_field to _pack_image · 1928fe3 · tweepy/tweepy · GitHub

Twitterの変更にも対応している

Twitterがaccount/update_profile_bannerのAPIで成功した時に200番だけでなく201,202番を返すように変更しました。(POST account/update_profile_banner | Twitter DevelopersのExtended description HTTP Response Codesを参照)
今までのTweepyの実装では200番以外が来たらエラーとして扱っていたので、次のCommitで対応されました。
関連Commit:
Accept 200, 201, and 202 as non-error response codes · d01b1ab · tweepy/tweepy · GitHub

自分でForkしたTweepyは久しぶりにupdata_profile_banner叩いたら案の定エラーになってしまいました。
公式に取り入れられることでみんなが使うのでTwitterの変化に対応が早くなりそうでいいですね。

自分のForkとの差分(メモ)

公式にversion2.2がリリースされたら、以下の自分の差分を取り入れる作業をする

return/parse raw json

TweepyではレスポンスのJSONをパースしてTweepyのオブジェクトに変換してユーザーに返しています。
しかしDBにレスポンスを丸々保存したいという用途ではこのパースは邪魔なのでAPIを叩いてレスポンスを取得する部分とパースして扱いやすいデータ構造にする部分は分離して欲しいですね。
return/parse raw json for save database · 648a6ce · cloverrose/tweepy · GitHub