ようへい
ラベル Chrome拡張 の投稿を表示しています。 すべての投稿を表示
ラベル Chrome拡張 の投稿を表示しています。 すべての投稿を表示

2020年1月7日火曜日

twit で Error: incorrect header check が発生する場合の対処法

Chrome Extension で twit を使い Twitter からデータを取得していたのだが、11月くらいから Error: incorrect header check が発生していた。 パケットを見るとデータの取得は出来ているようだったが、スタックトレースを見ると、以下のようなログが出ていた。
11:59:05.119 background.ts:298 Error: incorrect header check
    at Zlib._handle.onerror (index.js:352)
    at Zlib._error (binding.js:283)
    at Zlib._checkError (binding.js:254)
    at Zlib._after (binding.js:262)
    at eval (binding.js:126)
    at eval (process.js:5)
GitHub 側にも報告有り。
Error: data error: incorrect header check · Issue #520 · ttezel/twit · GitHub
https://github.com/ttezel/twit/issues/520 想像だが、11月から Twitter APIが乗っているサーバが変わったとかで、gzip 圧縮の仕様が変わり、 Accept-Encoding: gzip を付けてAPIをリクエストした場合、返された gzip データを解凍できなくなり発生しているんだと思う。
gzip 圧縮を許可させなければいいので、twit のソースを変更することで、対処できそう。
本当は pull request 出せればいいんですが、issue 見ても動きが無いし、プロジェクトはもう動いて無い感じ・・・。
そして twit よりよさげな Twitter API クライアントも無い。
なので、twit にモンキーパッチを当てて回避する。
モンキーパッチで対処するため、パラメタで On/Off とかも考えず、とりあえず gzip 圧縮を無効にする。 まず、twit にパッチを当てたいので、patch-package を入れることにする。
$ yarn add -D patch-package
package.json の scripts に "postinstall": "patch-package" を追加
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:report": "vue-cli-service build --report",
    "build:dev": "vue-cli-service build --mode development",
    "build-watch": "vue-cli-service build-watch",
    "build-watch:dev": "vue-cli-service build-watch --mode development",
    "postinstall": "patch-package"
  },
twit の twitter.js の L208 をコメントアウト
twit/twitter.js at master · ttezel/twit · GitHub
https://github.com/ttezel/twit/blob/master/lib/twitter.js#L208
diff --git a/node_modules/twit/lib/twitter.js b/node_modules/twit/lib/twitter.js
index 9540857..c6baae3 100644
--- a/node_modules/twit/lib/twitter.js
+++ b/node_modules/twit/lib/twitter.js
@@ -205,7 +205,7 @@ Twitter.prototype._buildReqOpts = function (method, path, params, isStreaming, c
       'Accept': '*/*',
       'User-Agent': 'twit-client'
     },
-    gzip: true,
+    // gzip: true,
     encoding: null,
   }
パッチ作成
$ npx patch-package twit
パッチが効いているか試すため twit を入れなおす。
$ yarn remove twit
$ yarn add -D twit
これで twitter.js の L208 がコメントアウトされていればOK。
あとは build して、Error: incorrect header check が発生しないことを確認する。
関連記事

2019年10月31日木曜日

[11/13 更新] LINE: #ガンダムウォーズ のスタミナ回復、BP回復、メンテナンス通知 Chrome 拡張 作りました

LINE: #ガンダムウォーズ のスタミナ回復、BP回復、メンテナンス通知 Chrome 拡張 作りました
LINE: #ガンダムウォーズ のスタミナ回復、BP回復、メンテナンス通知 Chrome 拡張 作りました
LINE: ガンダム ウォーズ のスタミナ回復、BP回復、メンテナンスなどを通知します。 人に見られても怪しまれないようにカモフラージュする機能も搭載。 スタミナ・BP溢れを気にせず、安心して仕事に専念できます。

機能一覧

スタミナが指定値まで回復した際の通知
初期値: 最大値から-5した値になったら通知
スタミナ値のリアルタイム確認
スタミナ値のバッジ表示
BPが指定値まで回復した際の通知
初期値: 最大値から-1した値になったら通知
BP値のリアルタイム確認
BP値のバッジ表示
Twitter からメンテナンス時間の自動取得
オプション画面から手動設定も可能
メンテナンス開始前通知(任意時間複数設定可能)
初期値: 60・30・15分前に通知
メンテナンス終了前通知(任意時間複数設定可能)
初期値: 60・30・15分前に通知
ボスが来た機能
画面上に表示される「スタミナ」「BP」「回復」「メンテナンス」などのゲーム用語と取れる単語を任意の文字列に置き換えることができます。 また、通知へのアイコン表示を隠すことができます。
なお、メンテナンス時間を Twitter から自動取得する場合は Twitter API key が必要です。
Twitter API key の取得方法は結構めんどくさいのでググってください。

ダウンロード

興味ある方は以下からインストールして評価&意見をお願いします。
LGW Notifier - Chrome ウェブストア
https://chrome.google.com/webstore/detail/lgw-notifyer/dbnddnhininlcohjbffdjkohgckoaplm

更新履歴

バージョン 日付 更新内容
0.0.5 2019/10/23
  • アラームの作成頻度を下げました
  • メンテナンス時間を手動設定できるようにしました
  • メンテナンス中の通知に関して、通知が設定以上に行われていたバグを修正しました
0.0.8 2019/10/23
  • 通知・ツールバーアイコンのバリエーションを増やしました
  • 設定画面のデザインを変更しました
0.0.9 2019/10/29
  • スタミナのみ、BPのみ通知するようにした場合の動きを改善しました
0.1.1 2019/10/30
  • 設定や現在値を変更した際に、表示されている通知をクリアするようにしました
1.0.0 2019/11/13
  • 安定してきたので公開
要望は以下の Twitter アカウントにどうぞ
@logroid
https://twitter.com/logroid
関連記事