メイン

mixitool アーカイブ

2004年11月23日

mixi"足あと"保存+解析Perlスクリプト "mixi Log Loader" 公開

遊びに行くつもりが風邪をひいてしまって家でゴロゴロしているのもアレなんで、ホビープログラミング。

塚本牧生さんが作られているWWW::Mixiというモジュールを使った、簡単な「mixi"足あと"保存+解析」Perlスクリプトmixi Log Loaderです。

例によってかなりテキトーな造りになってます。自己責任で。
あと、実行間隔の幅を取ってmixiサーバに負荷を掛けないようにしてくださいね。

*環境とか

開発環境&動作確認はWindows XP + ActivePerl 5.8.4のみで行っています。

同様の環境でもJcodeとDBI関連とDBD::SQLiteは別途ppmを使ってインストールする必要があります。
もちろんWWW::Mixiもパスに放り込んでおきましょう。

ここらのやり方分からん!という向きは諦めてください。(いや、ホントに)
一応、PPMの実行例をあげておきますが…。

C:\>ppm
PPM - Programmer's Package Manager version 3.1.
Copyright (c) 2001 ActiveState Corp. All Rights Reserved.
(略)

ppm> install Jcode
ppm> install DBI
ppm> install DBD-SQLite
ppm> install DBD-SQLite2
ppm> exit

*インストール

で、準備ができたらmixilog.0.03.plをダウンロードして、mixilog.plにリネームして、適当なフォルダ(ここではC:\mixilog)に放り込んで、次のコマンドを実行してください。
エラーが出ずにヘルプが表示されればOKです。

C:\mixilog>perl mixilog.pl
mixi Log Loader Copyright (C) DonaDona(KITAO Masato) 2004
Usage: mixilog.pl -u user@mixi.jp -p password [-naHSD]
  [Required Options]
    -u: User's Mail Address
    -p: User's Password
  [Options]
    -n: NoAccess Mode
    -a: Analyse  Mode
    -H: HTML Output Mode
    -S: ShiftJIS Mode (on Analyse Mode)
    -D: Debug    Mode

*実行

mixi Log Loaderの動作は主に二段階に分かれています。

  • mixiにアクセスして"足あと"をデータベースに保存する(同日同ユーザのアクセスは最終時刻で更新します)
  • データベースに保存された"足あと"をアクセス順に表示する

前者、後者ともに動作する・しないをコマンドラインオプションで制御できるようになっています。

なお、ここではログイン時のアドレスをhogehoge@hugahuga.com、パスワードをfoobarとします。

*"足あと"更新

コマンドラインオプションで-nをつけなければ、mixiにアクセスして"足あと"を確認しデータベースに取り込む処理を行います。
案外時間がかかるので気長にお待ちください(^^;

以下の実行例

C:\mixilog>perl mixilog.pl -u hogehoge@hugahuga.com -p foobar

C:\mixilog>

これだけで、過去のログと照らし合わせて新しくなっているものを取り込んでいます(実際にはもう少し泥臭いですが・・・)。

*"足あと"解析

コマンドラインオプションに-aをつけると"足あと"解析処理を行います。
通常EUC-JPでの出力になるので、Windows上で動かしている場合は-Sオプションをつけると幸せになれると思います。

ちなみに以下の実行例は"足あと"の更新を行わずに解析処理を行い、Shift-JISでニックネームを出力したものです。

C:\mixilog>perl mixilog.pl -u hogehoge@hugahuga.com -p foobar -naS
----------------------------------------------------------------------
Count: NickName            : Graph
----------------------------------------------------------------------
00005: ********    : -----
00004: **                : ----
00002: ***              : --
00002: *****          : --
00002: *                  : --
00002: ****            : --
(略)
----------------------------------------------------------------------

なお、「-H」オプションでHTML形式での出力に対応します。同一フォルダに1.pngというファイルを置いておくと、グラフ風表示がされるようになります。

*あとがき

今回勉強がてらに初めてDBIとDBD::SQLiteとかも使っていますが、気楽なプログラミングにPerlって便利だなぁと再認識する日々だったり。
まさか家でSQL書くハメになるとは思わなかったけど(苦笑)

ともあれ、便利なモジュールを公開されている塚本さんに感謝です!

あと、このスクリプト関係でなにかあったらmixiのメッセージでご連絡頂ければと思います(^^;

続きを読む "mixi"足あと"保存+解析Perlスクリプト "mixi Log Loader" 公開" »

mixi Log Loader Ver.0.02公開

昼間にリリースしたmixi"足あと"保存+解析Perlスクリプト "mixi Log Loader"ですが、不具合対策と機能追加を盛り込んだVer.0.02に早速なってしまいます。

*更新点

  • 「-n」のときは「-u」「-p」の必須チェックをはずすようにした。
  • EUC→Shift-JIS変換を明示的に指定するようにした(文字化け対策)
  • 「-H」オプションを追加。HTML形式に標準出力で出力する。

ダウンロードはmixilog.0.02.plからどうぞ。

2004年12月01日

mixi Log Loader Ver.0.03公開

mixi"足あと"保存+解析Perlスクリプト "mixi Log Loader"ですが、不具合対策と機能追加を盛り込んだVer.0.03にバージョンアップしました。

*更新点

  • HTML出力モードのデザインを大幅変更(h1要素の閉じ忘れも修正)
  • 途中でニックネームを変更した訪問者がいたときにダブルカウントされていた点を修正。

ダウンロードはmixilog.0.03.plからどうぞ。

*おまけ

ぼくが日に一回流しているバッチファイルはこんな感じです。
あんまり参考にならないかもしれませんが。

@echo off
cd /d  C:\mixi
perl mixilog.pl -u hogehoge@hugahuga.com -p password
perl mixilog.pl -naS 
perl mixilog.pl -naHS > mixilog.html

2004年12月11日

mixi日記書き込みツール "mixi Diary Writer"

mixi日記を結城浩さんの「はてなダイアリーライター」風に書き込むツールmixi Diary Writerを作ってみました。
処理の流れなどはほとんどそのまま流用させていただいています。nScript版の時もそうでしたが、大変感謝しております。

*概要

mixi Diary Writerは、ローカルに作ったテキストファイル(new.txtや2004-12-13_123456.txt)をmixi日記のデータとして自動書き込み・編集・削除をするためのスクリプトです。

このツールを使うことで、以下のような点が実現できるようになります。

  • Webブラウザ上ではなく、自分の使い慣れたテキストエディタで日記を書く。
  • 長時間かけて書いた日記を送信中にサーバエラーでデータが消えることを回避する(マスターデータは手元にある)。
  • ネットにつながっていないときにオフラインで日記を書く。
  • 過去の日記の表現全体をまとめて直して、一気に送信する。もしくは一気に削除する。
  • 指定した時刻まで下書き状態として日記投稿を保留する。

日記データとして記述されたテキストファイルの最終更新時刻を見て、新規作成されたファイルと再編集したファイルをmixiに送信するようにしているので、mixiサーバへ掛ける負荷も極力軽減するよう心がけています。

*インストール

*動作条件

以下の条件を満たす必要があります。

  • mixiのユーザである必要があります。(尚、当サイトから会員招待はしておりません)
  • Perlの処理系がインストールされていること。
  • LWP::UserAgentモジュールが導入されていること。
  • WWW::Mixiモジュールが導入されていること。

ちなみに作者はWindows XP Professional(SP1) + Active Perl 5.8.4で作成・検証を行っています。

*ダウンロード

ダウンロードはこちら:mixidiary.1.0.0.zip

*セットアップ

  • 日記を記述していくフォルダを作ります。たとえばC:\mixi\diaryなど。
  • 上記からダウンロードしたファイルを解凍して展開されるmixidiary.plをフォルダにコピーします。

*使い方

*基本的な使い方(新規投稿)

C:\mixi\diaryにnew.txtというテキストファイルを作り、メモ帳などのテキストエディタで開きます。

new.txtの内容は、次のように書いてください。

  • 1行目が日記のタイトル(タイトルがいらないなら空行にする)
  • 2行目以降が本文。改行があると改行されます。

以下に例を示します。
「今日は食べ過ぎた」の部分がタイトルになり、「これを書いている時点で」以降が本文となります。

今日は食べ過ぎた
これを書いている時点でベルトがはちきれんばかりになっている。
朝こそ控えめだったが、昼前に・・・

日記ファイルの準備ができたら、コマンドラインから次のように入力します。

perl mixidiary.pl

そうすると、ログイン用のIDとパスワードを尋ねてきますので入力します。
パスワード認証後、問題なければ「タイトル」とともに「新規投稿成功」と表示されます。

C:\mixi\diary>perl mixidiary.pl
e-mail: hogehoge@hugahuga.com
password: foobar
[新規投稿成功] 今日は食べ過ぎた
 -> 2004-12-12_123456.txt にリネームされました。

最後の~にリネームされましたというのは、new.txtというファイルが投稿された年月日と日記ひとつひとつに振られた番号をセットにした名前のものに変わったということを指しています。
今後、この日記を編集するときは(この例では)2004-12-12_123456.txtを編集していくという形になります。

*基本的な使い方(編集)

それでは先ほどの2004-12-12_123456.txtを編集してみましょう。
テキストエディタで2004-12-12_123456.txtを開いて、適当に追記してください。

そして、再びコマンドラインからmixi Diary Writerを呼び出すと次のような表示に変わります。

C:\mixi\diary>perl mixidiary.pl
e-mail: hogehoge@hugahuga.com
password: foobar
[編集成功] 今日は食べ過ぎた

フォルダ内に複数編集しているファイルがあると、その数だけ[編集成功]などが表示されます。

*基本的な使い方(削除)

「今日は食べ過ぎた」の日記そのもの自体を削除することにします。

先ほどの2004-12-12_123456.txtを編集してみましょう。
テキストエディタで2004-12-12_123456.txtを開いて、1行目のタイトル部分「今日は食べ過ぎた」の部分を「delete」(半角小文字)に置き換えて上書き保存してください。

そして、再びコマンドラインからmixi Diary Writerを呼び出すと次のように表示され、mixi上の日記が削除されていることが確認できます。

C:\mixi\diary>perl mixidiary.pl
e-mail: hogehoge@hugahuga.com
password: foobar
[日記削除完了] 123456

*画像を添付する。

mixi日記には1つの日記投稿に対して、3つまで画像(JPEG形式のみ)を添付できます。

*新規投稿の際の画像添付

new.txtとセットでnew_1.jpg, new_2.jpg, new_3.jpgというファイルを用意しておくと、それらもアップロードされます。アップロード処理後、new.txtと同様に、リネームされます。

*編集投稿の際の画像添付

先ほどの例でいうと、2004-12-12_123456_1.jpg, 2004-12-12_123456_2.jpg, 2004-12-12_123456_3.jpgの3ファイルが対象となります。

*画像添付時の注意点

画像ファイルもテキスト同様に最終更新時刻チェックの対象となっています。
送られるはずなのに?というときにはその点をご確認ください。

*複数の新規投稿をする

旅先、仕事場、帰宅途中など書き溜めた複数の日記を一気に投稿したいということも考え、new.txt以外でも新規投稿として扱う以下のルールを設けています。

  • 拡張子は.txtである
  • ファイル名は"new"であるか、"_new"で終わるか、"_new"の後に数字の羅列が続くもので終わること
  • _newの前はなんでもかまわない

次のすべてが新規投稿の対象となります。

  • new.txt
  • _new.txt
  • hogehoge_new.txt
  • _new1234567.txt
  • 2004-12-12_new12345.txt

画像添付時は2004-12-12_new12345.txtの場合、2004-12-12_new12345_1.jpg~2004-12-12_new12345_3.jpgのファイル名が対象となります。

*下書き(草稿)扱いにする。

タイトル部分(1行目)を「draft」(半角小文字)とだけ記述していると、mixiに送信されない下書き(草稿)状態となります。
とりあえず今書きかけだけど、他を更新しないといけないとかいうシチュエーションなどを想定しています。

*指定日時までは下書き(草稿)扱いにする。

「2005年1月1日0時0分0秒」になるまでは下書き(草稿)扱いにするという場合、以下のように1行目を記述します。

schedule:20050101000000:あけましておめでとうございます
あけましておめでとうございます。旧年中は(以下略)

なお、年月日以降は足りない桁は0で埋められます。たとえば2004121314とすると「2004年12月13日14時0分0秒」と見なします。

*ログインメールアドレス・パスワードの指定方法

毎回入力するのが面倒な場合、次のいずれかの方法で自動かできます。

  • コマンドラインパラメータの指定
  • 設定ファイルの作成

*コマンドラインパラメータの指定によるログイン

次のように"-u"ならびに"-p"オプションを指定することで、ログイン処理を自動化できます。

C:\mixi\diary>perl mixidiary.pl -u hogehoge@hugahuga.com -p foobar

*設定ファイルの定義によるログイン

mixidiary.plと同じフォルダにconfig.txtというファイルを作り、次のような記述をすることで、ログイン処理を自動化できます。

id:hogehoge@hugahuga.com
password:foobar

パスワードを書くことに抵抗がある場合はIDだけを埋め込むという手もあります。

id:hogehoge@hugahuga.com

この場合には、パスワードだけをキーボードから入力することになります。

*ライセンス・免責

なお、ライセンスについてですが、PerlならびにWWW::Mixiと同様にGPLないしArtistic Licenseです。

当プログラムの利用に際し、如何なる利益・損害が発生しても、プログラム作者は一切の責任を負いませんので悪しからず。

*問い合わせ・ライセンスなど。

このツールは私どなどなが独自に作成したものです。
株式会社イー・マーキュリー・結城浩さん・塚本牧生さんへの問い合わせはご遠慮ください。

バグ報告・機能要望などについては以下のいずれかの方法でお願いします。

2004年12月14日

mixi Diary Writer 0.0.2 公開しました。

アップするところまでやったら眠たくなったので、ちょっとサボりモード。

追加機能は以下の四つです。

  • 新規投稿の複数待機
  • 草稿(draft)モードの対応
  • 指定日時まで草稿(schedule)モードの対応
  • user,passの入力プロンプト対応

機能の詳細についてはとりあえず以下を参考にしてください。

*ダウンロード

ダウンロードはこちら:mixidiary.0.0.2.zip

寝ます・・・(^^;;

2004年12月19日

mixi Diary Writer Version 1.0.0 公開しました。

サイト内のjunknewsでは既報なんですが、こちらではフォローしてなかったので先に…。
WWW::Mixiにmixi Diary Writer用に追加した機能を取り込んで頂きました。
なので基本的にmixi Diary Writerを動かす一番簡単な方法はmixidiary.plのファイルを適当なフォルダに突っ込み、同じくWWW::Mixiをそのフォルダに解凍して配置するという感じかな。

  • [適当なフォルダ]
    • mixidiary.pl
    • [WWW] (フォルダ)
      • Mixi.pm

さて、本題。
パッチ取り込みを記念してというわけではないのですが、機能的にも結構限りが見えてきたので、若干の機能追加・修正に加えて、ソースコードを整理して、Ver.1.0.0ということにさせていただくことになりました。

  • WWW::mixi Ver.0.19対応
  • "-q"モードの追加(エラー以外のメッセージを一切表示しない"quiet"なモード)
  • schedule:yyyymmdd:deleteが出来ない不具合を修正
  • create_update_entry(), delete_entry()にメソッド抽出
  • コメントの修正

予定削除をしない場合は基本的に影響はないと思うのですが、念のためバージョンアップしていただければと存じます。

*ダウンロード

ダウンロードはこちら:mixidiary.1.0.0.zip

2005年04月14日

mixi日記目次作成ツールmixi Diary TOC Maker 1.0.0を公開しました。

mixiで細々と書き綴っている食べ物日記があるのですが、そちらの記事を探しにくいという指摘を受け、さくっと作ってみたperlスクリプトです。

単純に最新から過去まで降順で日記の日時・タイトル・URLを取得し、標準出力へ吐き出すというモノ。
最初はそれだけの機能でしたが、タイトルのキーワード抽出とか、ユーザID/PWをコマンドラインで指定できるようにと形を整備してみました。

拙作mixi Diary Writerと連携すればスケジューリングによる、定期的な目次の更新なども可能になると思います。
日記自体には西暦年が付いてこないので、月別日記一覧を利用して西暦年を取得するように工夫しています(若干のオーバーヘッドを産んでしまってますが、致し方ないでしょう)。

*ダウンロード&インストール

ダウンロードはこちら:mixi_toc.1.1.2.zip (最新版=1.1.2)

WWW::Mixiも同梱したアーカイブとなっています。

動作確認はWindows 2000 Pro. + ActivePerl v5.8.4(build 810)でしておりますが、少なくともJcode.pmを追加する必要があります。一応、PPMの実行例をあげておきます。

C:\>ppm
PPM - Programmer's Package Manager version 3.1.
Copyright (c) 2001 ActiveState Corp. All Rights Reserved.
(略)

ppm> install Jcode
ppm> exit

あとは、適当なフォルダにダウンロードしたZIPファイルを展開していただき、「perl mixi_toc.pl」で実行して、以下のようなヘルプ情報が表示されることを確認できれば、環境的にOKです。

C:\mixi>perl mixi_toc.pl
mixi Diary TOC Maker Copyright 1.0.0 (C) DonaDona(KITAO Masato) 2005
Usage: perl mixi_toc.pl -m user@mixi.jp -p password [-k "Keyword"] [-F YYYYMMDD]
       [-T YYYYMMDD] [-C (euc|sjis|jis|utf8)] [-P HTTP_PROXY]
 [Required Options]
   -m: User's Mail Address
   -p: User's Password
 [Options]
   -k: (Query) Keyword       (e.g.) -k "Keyword"
   -F: (Query) From YYYYMMDD (default: 20040301)
   -T: (Query) To   YYYYMMDD (default: 20991231)
   -C: Clientside Charset (default: sjis)
   -P: HTTP PROXY (e.g.) -P http://proxy.hogehoge.co.jp:8080/

*コマンドライン引数

-m(必須) ログイン メールアドレス
-p(必須) ログイン パスワード
-k抽出キーワード(デフォルト:なし)
-F範囲絞込み開始年月日(デフォルト:20040301)
-T範囲絞込み終了年月日(デフォルト:20991231)
-C入出力文字セット(デフォルト:sjis)
-PHTTP Proxyアドレス&ポート(デフォルト:なし)

*実行例

*全件出力

C:\mixi>perl mixi_toc.pl -m youraddress@hogehoge.ne.jp -p password

*「[食]」をタイトルに含むものを出力

C:\mixi>perl mixi_toc.pl -m youraddress@hogehoge.ne.jp -p password -k "\[食\]"

*2005年3月の日記だけを出力

C:\mixi>perl mixi_toc.pl -m youraddress@hogehoge.ne.jp -p password
 -F 20050301 -T 20050331

*UNIX系で動かす場合はEUCでやりとり

C:\mixi>perl mixi_toc.pl -m youraddress@hogehoge.ne.jp -p password -k "\[食\]" -C euc

*条件を全部結合するとか。

C:\mixi>perl mixi_toc.pl -m youraddress@hogehoge.ne.jp -p password -k "\[食\]" -C euc
-F 20050301 -T 20050331

*ライセンス・免責

なお、ライセンスについてですが、PerlならびにWWW::Mixiと同様にGPLないしArtistic Licenseです。 当プログラムの利用に際し、如何なる利益・損害が発生しても、プログラム作者は一切の責任を負いませんので悪しからず。

*問い合わせ・ライセンスなど。

このツールは私"どなどな"が独自に作成したものです。 株式会社イー・マーキュリー・塚本牧生さんへの問い合わせはご遠慮ください。

バグ報告・機能要望などについてはmixiメッセージ(http://mixi.jp/show_friend.pl?id=102587)かコメントでお願いします。

2005年05月02日

mixi日記目次作成ツールmixi Diary TOC Maker 1.1.0を公開しました。

特定の日記への更新機能を搭載したVer.1.1.0を公開しました。

perl mixi_toc.pl -m メールアドレス -p パスワード -k "\[食\]" -i 14057037 -t "[食]記事目次(2004/12/19~)"

こうすることで日記IDが14057037の記事に対して[食]を含む記事への目次を更新できます。

既存の日記にしか目次を反映させることができないので、その点をご注意下さい。

ダウンロードや使い方の詳細についてはmixi Diary TOC Makerのページからお願いいたします。

2005年06月08日

WWW::Mixiのバージョンアップに伴う変更:mixi Diary Writer・mixi Diary TOC Maker

塚本さんのWWW::Mixiのバージョンアップ(お疲れ様です!)により、日記関連の(内部処理の)仕様変更が発生しています。 現バージョンではプログラム的に補助処理が施されているのですが、近い将来その補助部分がなくなるということなので、今回の仕様変更に対応したバージョンをリリースします。

2005年06月30日

mixi日記目次作成ツールmixi Diary TOC Maker 1.1.2を公開しました。

mixiのHTML出力仕様が若干変更され、目次抽出ができなくなっていたのでそれに対応したVer.1.1.2を公開します。

機能の追加などはありません。ダウンロードや使い方の詳細についてはmixi Diary TOC Makerのページからお願いいたします。

2005年10月13日

mixi 最新日記一覧更新スクリプト兼ゲートウェイ(newdiary.pl/cgi)

mixiの忌まわしい仕様変更(2005/10/11)に立ち向かうべく、思いつきで作成したスクリプトです。

一応CGIとしても動作するようにしていますので、ゲートウェイとして実行することもできます(通信の安全性については当然保証しません)

尚、仕様変更までの繋ぎとしての意味合いしかないので、その辺はテキトーにお考え下さい。

Download file: mixi_new_diary.zip

動作環境

Perl 5.xでWWW::Mixiが動作する環境であれば特に設定は不要です。

以下の環境で動作確認をしています。

  • Windows XP(SP1)+Active Perl ver.5.8.4
  • Mac OS(10.3.9)

CGIとして動かす場合はshebangの修正とかperlのパスの設定とか適当にしてください。

コマンドライン引数

-i (必須) ログイン メールアドレス

-p (必須) ログイン パスワード

ライセンス・免責

PerlならびにWWW::Mixiと同様にGPLないしArtistic Licenseです。

当プログラムの利用に際し、如何なる利益・損害が発生しても、プログラム作者は一切の責任を負いませんので悪しからず。

問い合わせ

このツールは私"どなどな"が独自に作成したものです。

株式会社イー・マーキュリー・塚本牧生さんへの問い合わせはご遠慮ください。

書き捨てスクリプトなのであんまりサポートする気はないのですが、バグ報告などについてはmixiメッセージなどでお願いします。

(http://mixi.jp/show_friend.pl?id=102587)

2006年06月07日

マイミクの誕生日をGoogle Calendar用のiCalデータにする。

ご無沙汰しています。

ちょっと思いついたので作ってみました。

続きを読む "マイミクの誕生日をGoogle Calendar用のiCalデータにする。" »

About mixitool

ブログ「ささやかなる実験場の開発室」のカテゴリ「mixitool」に投稿されたすべてのエントリーのアーカイブのページです。新しい順番に並んでいます。

前のカテゴリはhatenatoolです。

次のカテゴリはmtです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type