とっても重宝! awk でコマンドラインから Twitter と Wassr に投稿 + TinyURL 付き

以前、実用! awk でコマンドラインから Twitter 投稿という記事を書きましたが非常にこのページのアクセス数が多く Twitter を簡単にコマンドラインから投稿したいというニーズは多いということが分かりました。 ここでは、LL Golf #1 - tinyurl.comを使ったURLの短縮で使ったものを Wassr でも使えるようにしてみました。

とはいえ、Twitter と Wassr の API は非常に似ているため、API を扱うためのライブラリなどと一緒に使うと違いが分かりにくいほどですが、実際には Twitter の方があまりチェックをしておらず、Wassr の方がちゃんと API とのやりとりを行う必要があることも分かっています。 このあたりの話は機会があれば gawk の TCP 通信を使って Wassr に投稿するものを紹介する機会があれば書きたいと思います。

ここでは以下のようなスクリプトを使います。

#! /usr/bin/gawk -f
# doukaku_tinyurl_3.awk

BEGIN {
    twitter_id   = "********";    # 自分の ID にしてください
    twitter_pass = "********";    # 自分のパスワードにしてください

    wassr_id     = "********";    # 自分の ID にしてください
    wassr_pass   = "********";    # 自分のパスワードにしてください
}

{
    url_start = length($0) + 1;
    tiny_url = "";

    if (match($0, /http:\/\//)) {
        url = substr($0, RSTART);
        url_start = RSTART;
        "GET 'http://tinyurl.com/api-create.php?url=" url "'" | \
             getline tiny_url;
    }
    twitter_post_cmd = "wget --user=" twitter_id " --password=" twitter_pass \
                       " --post-data=status='" substr($0, 1, url_start - 1) \
                       " " tiny_url \
                       "' http://twitter.com/statuses/update.json" \
                       " 2> /dev/null";
    wassr_post_cmd   = "wget --user=" wassr_id   " --password=" wassr_pass \
                       " --post-data=status='" substr($0, 1, url_start - 1) \
                       " " tiny_url \
                       "' http://api.wassr.jp/statuses/update.json" \
                       " 2> /dev/null";
    system(twitter_post_cmd);
    system(wassr_post_cmd);
    system("rm update.json*");
}

こんなものは shell スクリプトで充分だと言われる方も多いと思いますが、Windows などでは Unix の shell 互換のものが Cygwin 程度しかないため、awk の system() 関数で結合したり、Perl の system() 関数で結合したりということは悪い解と言い切ってしまうこともできません。

とりあず、起動して投稿してみましょう。 確かに同時に投稿できているようです。

DoukakuAWK_041_1.png DoukakuAWK_041_1.png

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png