たゆたふ。

定まる所なく揺れ動き、いろいろやってみたメモ。など

Alfred の AlfredTweet をなんとか動かした

Mac を使っていると Alfred はとても便利。というか個人的には必須ツールと思っている。

www.alfredapp.com

無料で使っていても十分便利なのだけど、Powerpack に課金すると更に便利になる。
というのも Powerpack では Workflows がアンロックされるからだ。

www.alfredapp.com

Workflows はスクリプトにより Alfred を機能拡張できる仕組みで、自分で新しい Workflow を作成できるし、他のユーザが作成して公開しているものを利用できる。

例えば、Alfredtweet をインストールすると Alfred の UI から直接ツイートできる。

www.packal.org

しかし、Alfredtweet は PHP で実装されているため、Monterey で PHP が OS に含まれないようになって動かなくなって残念に思っていた。
Alfred 4.6 で Alfred 自体が homebrew でインストールした PHP のパスも検知するようになった。
それによって多くの PHP を使った workflow は何にもしなくても動くようになったが、Alfredtweet はダメだった。
最初に Twitter アカウントの認証設定があるのだけどそれが動かないのでどうしようもない。

どうも作者もメンテを放棄している様子だし、別の代替を探してみた1のだけど見つけられなかった。

諦めていたのだけど、少し変更して動かせたのでメモしておく。

Alfredtweet のインストール

インストール自体は普通に AlfredTweet | Packal からダウンロードした alfredtweet.alfredworkflow を Alfred で開くだけ。

Twitterのアカウント認証設定

ツイートするためには Twitter アカウント認証を通す必要がある。
Alfred で AlfredTweet コマンドを実行するとできるはずなのだけど、動かない。
ログを見ると php コマンドが見つからないとエラーが出ている。

Workflows 管理画面で AlfredTweet を開いて、次のワークフローブロックをダブルクリックで開く。

alfredrweet

次のダイアログが開く。動かない原因は、ここに直書きされている php コマンドらしい。

書き換え前

これを次の様に Homebrew でインストールしたフルパスに書き換えてやる。

書き換え後

書き換えたら「save」ボタンで閉じる。

Alfredtweet のアカウント設定

上記の作業後、Alfred を開いて AlfredTweet とコマンドする。

セットアップコマンド

すると以前の様にブラウザで次の認証ページが開いて Twitter アカウントとの連携ができるようになる。

認証ページ

Twitter で権限認可したら遷移するページにトークンが表示される。再び Alfred を開いて AlfredTweet の引数にトークンを渡して実行すると AlfredTweet にアカウント設定できる。

はずなのだが、ここでも動かない。 ログを見るとディレクトリが見つからないというエラーが出ているので、該当のディレクトリを次の様に作ってやる。

mkdir -p "~/Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data"

ふう、これでなんとか動いたようだ。 なにやら次のようなメッセージが通知されたのだけど、これは無視しても OK だった。

エラーメッセージ

tweet コマンドの修正

さてと、試しにツイートしてみるかと Alfred を開いて tweet コマンドを使ってみるとまだエラーで動かない。

ログを確認すると次の箇所が悪いらしい。

Tweet

開いてみると案の定、php コマンドを使おうとしている。

変更前

それを次の様に書き換えるとツイートできるようになった。

変更後

他のコマンドも動かない

Alfredtweet には他にも follow/unfollowblock/unblock などの操作もできる。
これらを開いてみると、書かれている Script は PHP なのに Language には /bin/bash が設定されているので、/opt/homebrew/bin/php に変更すると動くようになる。

Language が bash になっている

他にタイムラインやメンション、リストなどを Alfred 上で確認するコマンドもあるのだけど、それらはデータは取ってこれているようだけど、レスポンスを正しくパースできなくなて目的通りには動かない。

まあ、ツイート以外は Twitter アプリ上で操作するほうが便利だと思うのでこれらのコマンドの不具合は放置することした。

なんとか動いたが、そのうち動かなくなるのだろうな。 まあ、ツイート自体もそんなに頻繁にする方ではないのだけど。


  1. alfred-twitter-toolkitというのを見つけたのだけど、つぶやくことはできないっぽい。作者自ら'AlfredTweet is far more powerful' って書いてるし。