2014/07/19

[Ruby, Mikutter] Mikutter プラグインを作ってみる。

はじめに

プラグインの書き方解説ページの「5 STOT 形式でコピー」を写経。

参考資料

Writing mikutter plugin : http://toshia.github.io/writing-mikutter-plugin/#sec-5

$ cd ~/.mikutter/plugin
$ mikutter.rb generate stot
$ mikutter.rb spec stot/
$ cd stot
$ vim stot.rb

...で、こんな感じ。

$ cat .mikutter.yml
---
slug: :stot
depends:
  mikutter: 3.0.3
  plugin: []
version: '1.0'
author: 
name: stot
description: Copy to clipboard with STOT format.
$ cat stot.rb
# -*- coding: utf-8 -*-

Plugin.create(:stot) do
  command(:copy_as_stot,
    name: 'STOT形式でコピー',
    condition: Plugin::Command[:HasOneMessage],
    visible: true,
    role: :timeline) do |opt|
      message = opt.messages.first
      screen_name = message.user[:idname]
      Gtk::Clipboard.copy("#{screen_name}: #{message.to_s} [https://twitter.com/#{screen_name}/status/#{message.id}]")
  end
end

つぎに

ツイートの本文を外部プログラムに渡すプラグインを作ってみる。

探せば有りそうと考えてはいけない。

参考資料

Rubyから外部プログラムを起動 - None is None is None : http://doloopwhile.hatenablog.com/entry/2014/02/04/213641

$ cd ~/.mikutter/plugin
$ mikutter.rb generate runWith
$ mikutter.rb spec runWith/
$ cd runWith
$ vim runWith.rb

...で、こうなる。

$ cat .mikutter.yml 
---
slug: :runWith
depends:
  mikutter: 3.0.3
  plugin: []
version: '1.0'
author: 
name: runWith
description: ツイートの内容を外部プログラムに、実行する。
$ cat runWith.rb 
# -*- coding: utf-8 -*-

require "open3"

Plugin.create(:runWith) do
  command(:run_with,
    name: 'echo to ~/tmp/echo.txt',
    condition: Plugin::Command[:HasOneMessage],
    visible: true,
    role: :timeline) do |opt|
      message = opt.messages.first
      Open3.capture3("echo '#{message.to_s}' > ~/tmp/echo.txt")
    end
end

とりあえず echo で試した。 あとはコマンドと引数を変更すればよいだけ。 外部プログラムが呼べてしまえば、もう何でも出来ますね!

0 件のコメント: