Tag: plugin’

ついっとゅう更新 Ver4.6

 - by Don

YAYA(yaya.dll)から灯(akari.dll)への移行

ついっとゅうを更新しました。

しばらく放置したせいでTwitterの仕様変更に追随できていなかった点がいくつかあったのでその修正をしました。

また、DLLをYAYAからに差し替えました。この影響でセーブデータの引き継ぎがされないため、お手数ですが設定画面からついっとゅうの認証画面へ飛んで以下のパラメータを再入力してください。

  • oauth_token
  • oauth_token_secret
  • API Proxy URL

必要に応じて新着通知間隔も設定してください。

うかてんにイベント通知とゴーストから利用できる関数を追加

 - by Don

天気予報プラグイン「うかてん」を更新しました。

  • ゴーストへのイベント通知追加
  • ゴーストから利用できる関数追加

ゴーストへのイベント通知追加

プラグイン実行時にGhost側に通知されるイベントは以下の通りです。

ID: OnPluginExec
Reference0: バージョン (例:"Version=ukaten/0.3")
Reference1: 送信元     (例:"From=うかてん")
Reference2: Script     (例:"Script=\0\s[0]Hello, world!\e")
Reference3: イベント名 (例:"Event=OnChoiceSelectEx")
Reference*: Reference3のイベントに対応するReference。
            Reference3とそれ以降を、SHIORIイベントそのもののように使う。

選択肢などPlugin内部で定義したReferenceもそのまま通知されています。拙作の「ついっとゅう」と互換仕様で、内部の情報をただ垂れ流しているだけです。

ゴーストから利用できる関数追加

こっちが本題。今回は3つの関数を追加しました。

OnGetPluginVersion

プラグインのバージョンを取得
[戻り値]
Reference0: プラグインのバージョン("ukaten/0.3"等)

使用例

*うかてんのバージョン確認
:\![raiseplugin,うかてん,OnGetPluginVersion]

*OnGetPluginVersion
:(R0)

OnGetSavedArea

ユーザが設定した地域のIDと表示名を取得
[戻り値]
Reference0: 地域ID(東京都の場合は"130000")
Reference1: 地域名("東京都"等)

使用例

*ストーキング開始
:\![raiseplugin,うかてん,OnGetSavedArea]

*OnGetSavedArea
$ユーザの住むところ【タブ】(R1)
:(ユーザ名)さん…。
私、来月(ユーザの住むところ)に引っ越すんだ…。
これからは毎日会えるね…。フフフ…。

OnGetWeatherInfo

気象庁から天気予報を取得(※利用時は出典が気象庁である旨を明示してください。)
[引数]
Reference0: 取得情報の種類("forecast","overview_forecast","overview_week")
            省略時は"overview_forecast"
Reference1: 地域ID(東京都の場合は"130000")
            省略時は保存しているユーザ設定値を使用
Reference2: 取得情報のキー("publishingOffice","reportDatetime","targetArea","headlineText","text"等)
            省略時は"text"
[戻り値]
Reference0: 取得情報

使用例

*天気予報開始
:\![raiseplugin,うかてん,OnGetWeatherInfo]

*OnGetWeatherInfo
:(ユーザ名)、天気予報だよっ!

『(R0)』

って気象庁ホームページに書いてあったよ!

\![raiseplugin,うかてん,OnGetWeatherInfo,overview_week]とすると週間天気予報になったり、\![raiseplugin,うかてん,OnGetWeatherInfo,,,headlineText]とすると短く要約したテキストになったりします。(気象庁側で準備されていなかったりする地域もあり、その場合は空文字になります)

GAEで動かしていたアプリの移転

 - by Don

Google App Engineに依存して動作させていたゴーストやプラグインの移転作業を行いました。

びーふれんず
Twitterへの投稿機能を復活させました。ついでに画像投稿機能も復活させました。(@beefriends)
ついっとゅう
スターサーバーへ移転しました。今のところtweetの取得はできますがDMの取得や投稿は正常に動いておりません。昔の古い仕様のままなので折を見て改修したいところです。
【きょうの伺か】+
スターサーバーへ移転しました。(@osusume_ukagaka)

新しいサーバがどの程度使えるかまだ様子見の段階ですが、とりあえず動いたので一安心です。

WordPressでトラックバックスパム対策 in 2012

 - by Don

昨年末あたりから英文のトラックバックスパムが来るようになってしまいました。その対策のために導入したWordPressプラグインをご紹介します。

Simple Trackback Validation

検索でヒット率が高いので導入してみたトラックバックスパム対策専用プラグイン。仕組みは、トラックバック元のサイトに自サイトへのリンクが張られていない場合はSPAMとみなす、という単純なものです。これだけでもかなりの割合のSPAMを弾けるのですが、律儀に自サイトへのリンクを張ってくれているSPAMは弾けません。実際にそういうSPAMも来ています。

また、最終更新日が2007年というのも不安要素です。一応、WordPress/3.3でも動いているようですが。

Throws SPAM Away

日本語を含まないコメントを弾く、コメント専用SPAM対策プラグイン。…でしたが、バージョン1.5からはトラックバックに対しても同様の規制が可能となりました。さらに、Simple Trackback Validationと同様に、自サイトへのリンクによる言及がないかチェックする機能もついています。というわけで、Simple Trackback Validationは無効化してThrows SPAM Awayに移行してみました。

実は、トラックバックスパムへの対応は私がThrows SPAM Awayの作者様に検討をお願いしていたものなのです。お忙しい中、要望に応えて頂きました製作者のさとう様に、この場を借りて御礼申し上げます。ありがとうございました。

ninix-aya用のプラグインを作ってみた

 - by Don

ninix-ayaのプラグインを作ってみようと思ったのですが、何を作ったらいいかわからないので、とりあえずSSPのプラグインを移植してみようと思い立ちました。

nikolat/HitThunder – GitHub

使ってみて気が付きましたが、ninix-ayaはNOTIFY SSTP/1.1に対応していないのですねver 4.3.2で対応されました。プラグイン自体はSSTPを送信するだけのシロモノなので、先にSSPを起動しておいた後にninix-ayaを起動し、実体化プラグインを実行するとSSPのゴーストに通知されるので正常に実行されていることが確認できます。

SSPの場合はPLUGIN/2.0の仕様に従ってプラグインに対してイベントが通知される形式なので、色々と情報が取得できる上、ベースウェアが起動している間ずっと常駐できます。しかしninix-ayaの場合はPythonスクリプトを実行するだけのシンプルな構成なのであまり凝ったことはしない方が賢明のようです。プラグイン実行ゴーストなどもSSPであればSenderなどで取得できますが、ninix-ayaでは判別するのも難しいかも。

ninix-ayaでpluginを使用する

 - by Don

ninix-aya 4.3.1がリリースされましたのでユーザーレビュー的な記事を書いてみようと思います。

ver4.3ではWindows用インストーラが配布開始されたことと、プラグインに関してのサポート強化が特徴のようです。

Windows用インストーラ

ダウンロード – ninix-aya – SourceForge.JP

こちらからninix-aya-4.x.x.win32.exe をダウンロードして実行します(ninix-ayaの起動に必要な環境が揃っているものとします)。

ninix-aya-installer-error

ninix-aya-installer-error

(´・ω・`)

NOBさんのところではインストールできたらしいので、きれいな心とクリーンなPC環境を備えた人であればインストールできることでしょう。

私はCygwinでmake installしました。

プラグイン

Windows用インストーラには含まれているのかな?ダウンロードページにotenkiyanというのがありますが、多分これですね。

DLしたZIPを展開すると、plugin.txtという定義ファイルと思しきテキストファイルとotenkiyan.pyというPythonスクリプトファイルが入っていました。どうすんだこれ。

多分 ~/.ninix/plugin/ とかいうディレクトリを掘ってそこにフォルダごと突っ込んでおけばいいのだろう。

ninix-aya-plugin-menu

ninix-aya-plugin-menu

(`・ω・´)Bingo!

でもクリックしても無反応(´・ω・`)

何かやり方が間違ってるのかな?プラグインに関するドキュメントっぽいものが書かれる予定があるらしいのでそれまで待つことにします。タイトルは釣りでした。

Windowsでは(多分PyGTKのバグで)Drag and Dropが効かないですが、LinuxではコンソールへのDnDでnarをインストールできるらしいので(試してない)、pluginのzipもDnDでインストールできるのかもしれない(試してない)。仮にそうだとしたら、定義ファイルはplugin.txtとかじゃなくてinstall.txtとdescript.txtで定義したほうが…とか思ったけどninix-ayaの独自規格なら統一する必要もないのかなーとか、うーん。

追記

pluginもConsoleのInstallボタンからインストールできるようです。

動作にはpywapiが必要ということで、インストールしておきます。

設定から"IfGhostに一致するゴーストがいない場合に他のゴーストで再生(SEND/1.4)"(Allowembryo)をONにします。

ninix-plugin-boot-1

ninix-plugin-boot-1


ninix-plugin-boot-2

ninix-plugin-boot-2

これでSEND SSTP/1.4が有効になってplugin実行ゴーストでスクリプトが再生されます。

WordPressで英文スパム対策 in 2011

 - by Don

一昨日あたりから急に英語のSPAMコメントがわんさかやってくるようになりました。開設当時にSI CAPTCHA Anti-Spamで画像認証付けていたので大丈夫だろうと思っていたら見事に破られました。最近のSPAMは賢いですね。

何か他のSPAM対策プラグインを併用しようと探していて見つけたのが以下の2つ。選定基準は日本語リソースでかつ2011年に更新があったもの、です。

SPAM-BYEBYEはコメントの内容を総合的に判断する得点方式みたいです。

  1. メッセージに日本語が含まれていない場合
  2. メッセージにURLが複数含まれている場合
  3. メッセージ(又はURL欄)に含まれるURLがURLブラックリストデータベースに登録されている場合
  4. 投稿したクライアントのホストがDNSブラックリストデータベースに登録されている場合
  5. 名前欄にURLが含まれている場合

Throws SPAM Awayは単純に日本語が含まれているかどうかを検査する方式のようです。

今回は、公式の方にアップされてるということでベータ版のSPAM-BYEBYEより信頼できそうな気がしたのでThrows SPAM Awayを導入してみました。設定も単純明快で今の状況には十分効果がありそうです。

YAYAからPLUGINを呼び出す

 - by Don

SAORIみたいに呼ぶ

YAYAからSAORIを呼び出す関数(FUNCTIONEX)は大抵システム辞書(yaya_shiori3.dic)に書いてあります。

そこでPLUGINを呼び出す関数も書いてみました。

https://gist.github.com/1048890

はろーYAYAわーるど」のシステム辞書に追加する形で利用できます。

PLUGINは通常ユーザが実行する、もしくは![raiseplugin]などを使ってSSP経由でゴーストが呼び出すものですが、何らかの事情でゴーストに同梱してSHIORIから直接呼び出したい場合もあるかもしれません。usage.txtの例にある通り、SwissArmyKnifeなど多機能なPLUGINもありますし、ユーザがPLUGINを無効化していた場合などでもゴーストに同梱しておけばいつでも使えて安心です。(メジャーな機能を持つSAORIは各ゴーストに積むよりもPLUGINにしてみんなで利用しよう、という精神に反しますが。)

里々からPLUGINを呼び出したい場合は、satori.dll =(SAORI)=> yaya.dll =(PLUGIN)=> SAKNIFE.DLL といった具合にYAYA as SAORI経由で二段重ねで呼び出せます。

もちろん、SAORIのように単一機能を呼び出すだけの単純な構成のPLUGINに限られます。PLUGINはGHOSTと一緒で、常にSSPからイベントを受信しているので、通常は複雑な機能を実現する場合が多いです。

何故こんなものを

gomi.dllがバグってると聞いたので、SAORIでないとダメなのかなと思って書いてみました。でもやはりPLUGINは![raiseplugin]で利用した方がいいですね。

iPhone用の表示とAutoPagerize対応

 - by Don

WPtouch

WordPressをiPhone用に表示するplugin。Free版を入れてみましたが、なかなかきれいに表示してくれます。pluginを有効にするだけという手軽さで、大変気に入りました。

wptouch

wptouch


AutoPagerize対応

他のサイトでもさんざんやってきたので今更ですが、WordPress特有の関数とかもあるので軽くメモ。

single.phpはhead内に既にrel="prev"とrel="next"が入ってるのでclass="autopagerize_page_element"を適当なところに入れるだけで大丈夫。

index.phpに古いページへのリンクがprevious_posts_linkとかいう関数で挿入されていて、簡単にclassを付加できない。そこでfunctions.php内でこんな処理を走らせると良いらしい。

function my_auto_pagerize_rel_filter($content) {
    return "{$content} rel="next"";
}
add_filter('next_posts_link_attributes', 'my_auto_pagerize_rel_filter');

あとはautopagerize_page_elementやらautopagerize_insert_beforeやらを好きなところに入れて終わり。