dsegの日記: /.-J→hatena 日記コピースクリプト v0.0.0.1試作 12
日記 by
dseg
週末、Perl関連の資料を読んでいたのだけど、その勢いでついでに何か書こうと思って、作ってみた。
URLは失念したけど、yh さんが、欲しいと言ってたような気がするし、誰かの役に立つかもしれないので。
「殴り書き」です。なので、バージョンはv0.0.0.1。
使い方:
文字コードはEUCで保存。
ソースコードをちょっとだけ編集してください。
23行目にある変数の値を、あなたの /.-J の ユーザID番号に変えます。 (ユーザID == nick)でない事に気をつけて
24行目にある変数の値を、あなたの hatena のユーザidに変えます。
25行目にある変数の値を、あなたの hatena のパスワードに変えます。
制限:
一括転載のみしか考慮してない。
実行するたび、毎回
/.-J の日記を引っこ抜き
hatena へ連続ポスト
を実行するので。
かなり行儀悪いし、本来やるべき、変更(追加)したエントリだけ、追加転載する処理は、まだ。
動作確認:
Perl 5.8.0 / Linux
ActivePerl 5.8.0 build 806 / Windows2000
# テスト用に作っただけの、はてなの私の日記 (本スクリプトにて転載してみた)
マーヴェラス! (スコア:1)
自作しようとも思いましたけれど、タグの処理その他面倒なところが多過ぎて。いやそれ以前に技術的に追いつかないのが問題でありますけれど。
需要はあると思いますよ。みんなの役に立つと思います。
Re:マーヴェラス! (スコア:1)
つまり、他人の日記を丸写しすることも可能ですよね?
Re:マーヴェラス! (スコア:1)
…yh さん、どう思われます?
Re:マーヴェラス! (スコア:1)
「他人の日記を丸写しする」可能性については、/.-Jerの日記者の大部分は良識的なひとだと思うので、その使い方は利用者を信頼するということに尽きるのではないでしょうか。
機能面で私が何か提案できるとすれば、できるだけ出典を明確にする形でアウトプットが吐けないかという点があります。たとえば、最初の行にはカテゴリー機能を使って:
とを示す。(同じ日に複数エントリある場合の1番遅いエントリ分についても、タイトル欄ではなく、この形でタイトルを設ける。) また、最後の行には: と、コメント・スレッドへのリンクを入れる。コメント機能はSlashcodeの方が秀逸ですし、何よりもらったコメントは財産ですからね。…と、以上、提案してみます。
Re:マーヴェラス! (スコア:1)
まだかなり粗いですが、yh さんの役に立つよう、もうちょっとなんとかしたいと思ってます。
気軽にコメント頂けたらと思います。
Re:マーヴェラス! (スコア:1)
このスクリプト、「殴り書き」と仰いますけれど、大変スマートな美しいコードです。もうほぼ完成品ですね。初回からこのようなものが出てくるとはびっくりでした。
こんなふうに感想を言うと恥ずかしい限りなのですけれど、私など同じようなことをしようとしてtimelocalなんて関数を探すのに3日もかかってましたし、何より繰り返し処理などこんなにきれいには書けなかっただろうと思います。
さて、大変有望なスクリプトだと思うので、畏れながらも、いくつか要望を書かせていただきます。
まず、(スラド側の)日記のテーマはあらかじめ「greypage」にしておくことを、マニュアルに書いておくと良いと思います。「generic」ではエラーが出て止まってしまいました。
それから、pタグの扱いですが、はてな日記でpタグをそのまま入れると、表示されるときにpタグがもうひとつ入ってしまうので、注意が必要かと思います。(他のタグもそういうのがあったと思います。)
とりあえず、2点だけ、失礼ながら申し上げてみます。
Re:マーヴェラス! (スコア:1)
>「greypage」
うわ。ちっとも気づきませんでした。
今晩にでも、ちょっと直そうかと。
スクリプトの方は…恐縮です。
あまり考えずに余計なグローバル変数など使っておりまして、
必要な機能を付けてから、なんとかしようとは思っていたところでした :p
ファンタスティック! (スコア:1)
日記コピースクリプト素晴らしいです。
僕も欲しくてPHPで作ってますが、やっと「はてな」へのテスト投稿に成功したところです。先は長い…
完成したら使わせて下さい~と言いつつ自分のも勉強がてら完成させてみるつもりです。
Re:ファンタスティック! (スコア:1)
いやー、すみません、
fslashtさんもつくってらっしゃるとは、知りませんでした。
# 日記に検索機能があれば、判ったのになー…
hatena の応答関連(フォームにどういう値をいれたら、どうなる、といった)のとこが一番手間がかかったので、
日記に情報を参考にしていれば、もっとスムーズに出来たかなあ、と思ってます。
# 私のは、x-www-urlencoded で強引にフォームの値を投げてます。
# 冷や汗です…
fslashtさんのスクリプトも、出来たら使わせて下さいね。
あと、php をシェル環境で使ってらっしゃるんですね。
やった事がないので、興味深々..
Re:ファンタスティック! (スコア:1)
しかもperlの練習がてらとおっしゃられているし。
perlよくわからないのですが、なんかコードがとても簡潔で無駄なくエレガントな気がします。
日記ページを取得するコードは、ひょっとしてRSSか何かから取得しているますか? 僕はそのあたり疎いのでHTMLを取得してゴリゴリやってます。解析はパケットモニタでダンプしてやってます。泥臭いですね。
それにしても、同じもの作っている方がいるというとこで刺激になりました。
こちらもがんばって完成させようと思います。
PHPをシェル環境で使う(CLI版PHP)と、PHPのWeb系のライブラリが全部使えるので、シェル上からいろいろ出来て便利です。
もっともperlもCPANがあるので似たようなものだとは思いますが、僕はperlわからないもので・・・
Re:ファンタスティック! (スコア:1)
最近仕事で書いていなかったものでして...いえ、HTMLを正規表現で引っこ抜いています。
なので、「grey」テーマでないと、今のスクリプトでは日記の取得の際にエラーで止まってしまうという、情けない事になってしまいました。
# 今直してます
日記の内容をXMLで返してくれれば確実なパースができて楽なんですけどねえ。
PHPも便利ですよね。
正規表現もpcre経由でPerl互換の書式が使えるそうですし。
Perlは好みは分かれると思いますが、強力さと奥の深さは間違いないと思います。
DBを叩くのにも、DBIという共通APIがありますし、CPANは豊富ですし、
やっつけ用に覚えても損はないのでは…と思います。
Re:ファンタスティック! (スコア:1)
どうりでソースが洗練されているわけです。
日記の解析はHTMLからやるしかないのですね。
テーマやテンプレートの違いで解析のしかた変えないといけないのが大変ですね。
正規表現遅いかなあと思って、こちらは単純な検索でやってますがかえって遅くなっているかもしれません。
PHPは便利ではあるのですが、何処にでもあるという訳ではないのが悩みの種です。
Pearは何処にでもあるというのと、CPANが魅力ですね。
ちょっとかじってみましたが、変数や配列の扱い方の自由度の高さに驚きました。でも、おかげでどういう方針で組んだらいいか迷いますね(で、読みづらいソースになる)。
でも綺麗に書けば綺麗という当然の話もありますので、perlも勉強してみます。