Skypeをキーボードショートカットでラクしたかった(Skype4Pyでがんばろうとしてダルくなった話)
Skypeは優れたグループチャットツールだが、キーバインド変えるとかないし、キーボード派にとっては拷問だ!!!!
こんな腐ったプロダクトおれが正してやる!!!!ってSkype4Pyを漁ってたのだけど、デフォルトのキーバインドも悪くないことに今再気づいて結局なにもしないことになりそう
Skype4Pyの導入
Ubuntuはaptでパッケージがあるらしいけど、まあ普通にpipでいれる
pip install Skype4Py
これでつかえる……のはいいが、そのままだとSkypeが32bitアプリで動いているため落ちる。回避策はググればいろいろでてくるけど、自分はこれが一番参考になった。
MacでSkype4PyのAttachでSegmentation faultが発生(Pythonを32bitで動かす) - F13
export VERSIONER_PYTHON_PREFER_32_BIT=yes
これを.bashrcや.zshrcにでもかいてsourceすればいいだけ。かんたん。戻したければnoにすればいいだけ。らくちん
ただハマったのは、tmuxつかってると動作しない!!!!仕方ないのでターミナルのタブをわけて作業しました。
各種メソッドやプロパティ雑感
なんかbotにする記事はたくさんあるけど、メソッド自体の解説ってないんだよね。本家のドキュメントはアホみたいに読みづらいし……。なので bpython と see つかってゴリゴリシェルで動かして確認しました。便利だよ。詳しくはググれ。pipではいる。
初期化
あらかじめSkypeを起動しておく。
import Skype4Py
skype = Skype4Py.Skype()
skype.Attach()
これで認証がSkypeに出るので許可する。botで常駐させたい人は仮想でX立ち上げたりDaemonにしたりVNCしたりしてたいへんですが、Macのそのままつかうならそこらへんはもちろんいらんです
各種メソッド
#チャット一覧がとれるのでforでまわす for room in skype.Chats: #Topicはグループチャットのタイトル。個人チャットだと空です print room.Topic #個人チャットだったらNameをつかうくらいしかなさそうだった print room.Name #時刻はDatetime print room.datetime #screen_nameとHNはそれぞれFromなんちゃらってメソッドでとれる。名前は間違ってると思う print room.FromHundle, room.FromHandleName #本文はBody print room.Body #ちなみにStatusは送信ステータス。SendとかReciveとか print room.Status #ブックマークでもとれる。名前は間違ってるかもしれないが、だいたいこんな感じ for bookmark in skype.Bookmarks: #で、中身はChatsと同じように取り出せる print bookmark.datatime, bookmark.FromHudle, bookmark.Body #個人にチャット送るのはSendMessage。これはかんたん skype.SendMessage(user, text) #チャットに送る場合はチャットオブジェクトをもってこなくちゃいけない。 #シェルで確かめないで書いているのでてきとうだけど、だいたいこんな感じ #この場合グループチャットを拾うときはTopicのあるやつを拾わないといけない rooms = [room for room in skype.Chats if room.Topic] #あとは普通に送信 rooms[0].SendMessage(text)
もちろんAddやKickやBanやRole変更とかもろもろもできます
Skype4Pyかなりなんでもそなえてるしライブラリなので本格的に使えばかなりやれる。けど、だるいので僕はデフォルトのキーバインドを覚えることにしました。まる。あーーーー、だれかWinでもMacでもターミナルでもキーボードショートカットが快適なクライアントつくってくれないかなー(棒)