読者です 読者をやめる 読者になる 読者になる

Skypeをキーボードショートカットでラクしたかった(Skype4Pyでがんばろうとしてダルくなった話)

Skypeは優れたグループチャットツールだが、キーバインド変えるとかないし、キーボード派にとっては拷問だ!!!!

こんな腐ったプロダクトおれが正してやる!!!!ってSkype4Pyを漁ってたのだけど、デフォルトのキーバインドも悪くないことに今再気づいて結局なにもしないことになりそう

デフォルトのキーバインド

Macです

  • Alt Cmd →←で会話を切り替える
    • これで多数のグループチャットの切り替えもラクラクですね!!!!
  • 会話欄にフォーカスが当たっている状態でSpaceや矢印でページめくり
    • 基本的ですね!!!!
    • なんかうまくフォーカスがあたらないようなときがあった気がしたんよ……

まあこれからはデフォルトのキーバインドを駆使することにする。
以下は「こんな腐ったキーバインド、修正してやるっ!」と思い立って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でもターミナルでもキーボードショートカットが快適なクライアントつくってくれないかなー(棒)