Skip to content

ツイート投稿時にコマンドとして解釈し,実行するmikutterプラグイン

Notifications You must be signed in to change notification settings

penguin2716/mikutter_shell_post

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#-*- coding: utf-8 -*-

概要

mikutterで投稿する際に,@shellや@shell_pに向けたポストを シェルコマンドとして解釈し,実行します. コマンドの実行結果がシステムメッセージとして自分のタイムラインに流れてきます.

リプライ先

@system

mikutterコンソールに入力するのと同じです. エラー等があった場合は,その旨をシステムメッセージとして表示します.

@shell

ここに向けたリプライは10秒でtimeoutします. pingとか叩いた場合でも自動で終了するので安心です.

@shell_p

pはpersistのpです.ここに向けたコマンドはtimeoutしません. シェルを立ち上げたりするときに便利です.

@shell_rb

Rubyで実行します.

@shell_py

Pythonで実行します.

@shell_pl

Perlで実行します.

@shell_c

Cのソースとして解釈し,コンパイルしてから実行します.

@shell_cpp

C++のソースとして解釈し,コンパイルしてから実行します.

@script program options…

入力されたソースをファイルに書き,指定したprogramを用いて実行します. optionsを指定することもできます.

@compile [srcfilename] [exec command] compiler options…

入力されたソースをファイルに書き,指定したcompilerを用いて実行します. optionsを指定できます. コンパイル後はexec commandを実行します.

@google

入力されたテキストをGoogleで検索します.

@maps

入力されたテキストをGoogleMapsで検索します.

@openurl

入力されたテキストにブラウザでアクセスします.

@whois <@idname>

ユーザを直接表示します.

@miku 〒 中央町

中央町の郵便番号を検索します.

@miku 〒 051-00

先頭が051-00からはじまる郵便番号を検索します.

@miku 今日の秋葉原の天気

weather_jp gem が必要です. [when]の[where]の天気[suffix] という形式で天気を検索して表示します. when は今日,明日,明後日,3日後,4日後まで指定でき、地名はある程度の表記揺れを許容します. 例えば “明日の金閣寺の天気教えて” でも京都府北区の天気を検索できます. これは weather_jp gem の実装に依存しています.

@miku IC登録

IC認証用のIDを登録します. ICカードリーダにカードを置いてリプライを飛ばしてください. 未登録の場合はICカードIDが登録されます.

式展開機能

投稿する際に#{}によってRubyの式を記述することができます.たとえば,

2 ** 10 = #{2 ** 10}

と入力してCtrl-Enterすれば,式が展開され,投稿ボックスの内容が

2 ** 10 = 1024

に変わります.内部的にはmikutter consoleの動作とほぼ同じです.

使用例

  • @shell uptime
  • @shell_p gnome_terminal
  • @shell_rb 10.times { |x| puts x }
  • @shell_py print “10 * 20 = %d” % (10 * 20)
  • @shell_pl print 3 * 9 * 3 * 9
  • @whois penguin2716
  • C++のコード例
@compile [src.cpp] [./a.out] g++
#include <iostream>
using namespace std;
int main(void)
{
  cout << "Hello, world!" << endl;
  return 0;
}
  • Javaのコード例
@compile [Hello.java] [java Hello] javac
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Hello {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Java on mikutter");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new BorderLayout());
    frame.setSize(250,100);
    JButton button = new JButton("Exit");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }
    });
    frame.add(new JLabel("Java on mikutter"), BorderLayout.NORTH);
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 20));
    panel.add(button);
    frame.add(panel, BorderLayout.CENTER);
    frame.setVisible(true);
 }
}
  • gnuplotのコード例
@script gnuplot -p
v0 = 0
g = 9.8
set yrange [0:10]
set xrange [0:2]
set xlabel "time [sec]"
set ylabel "height [m]"
set title "Free Fall"
unset key
plot v0 * x + 0.5 * (-g) * x **2 + 10 linewidth 2

ICカード認証

ICカードリーダを持っている方は,ICカードで認証することができます.

opensc-tool -a

というコマンドでカードのIDを取得しているので, 利用したい場合はここまで動作するように設定して下さい(詳細はググってください). 認証が成功すると,ツイート末尾に[IC認証済]というフッタがつきます. 登録済みのICカードIDは valid_id に保存されます.

FAQ

@shellや@shell_pに向けてリプライを飛ばしたい. => 右側の投稿ボタンを押せばリプライとして投稿できます.

About

ツイート投稿時にコマンドとして解釈し,実行するmikutterプラグイン

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages