wassr-post.pl

wassr-post.pl #

Wassr に、terminal からワサワサする
wassr2growl.pl は WebService::Simple 使ったので、今日はNet::Wassr 使ってみた

  • 初めて実行した時に ID と PW を入力し ~/.wassr-post.yaml を生成
  • #higemaru で始まる時はチャンネル higemaru に投稿
  • @higemaru で始まる時は最近の友達の発言を取得して
    • 最近の higemaru の発言を取得できたらその発言にレス
    • 取得できなかったら普通に発言
  • それ以外は全部普通に発言

Terminal が UTF-8 の時しか考慮してません。あしからず

 #!/usr/bin/perl
 
 use strict;
 use warnings;
 
 use Net::Wassr;
 
 use YAML;
 use File::HomeDir qw(home);
 use File::Spec;
 use IO::Prompt;
 use Encode;
 
 my $VERSION = '0.1';
 
 my $conf_file = File::Spec->catfile(home, '.wassr-post.yaml');
 
 my $conf = {};
 unless ( -e $conf_file ) {
     $conf->{user} = prompt('user: ').'';
     $conf->{passwd} = prompt('passwd: ',-echo => '*').'';
     YAML::DumpFile($conf_file, $conf);
     chmod 0600, $conf_file;
 }
 $conf = YAML::LoadFile($conf_file);
 
 my $wassr = Net::Wassr->new(
                             user => $conf->{user},
                             passwd => $conf->{passwd}
                            );
 
 my $status = prompt('mes: ').'';
 
 if ( $status ) {
     if ( utf8::is_utf8($status) ) {
         $status = encode('utf8', $status);
     }
     $status =~ s/[\\x00-\\x1f]//g;
 
     if ( index($status,'#') == 0 ) {
         my @tmps = split /\\s+/, $status, 2;
         if ( scalar(@tmps) == 2 ) {
             my $mes = {
                        body => $tmps[1],
                        name_en => $tmps[0],
                       };
             $mes->{name_en} =~ s/^#//;
 
             my $s = $wassr->channel_update($mes);
             warn Dump $s;
         }
     }
     else {
         my $mes = {
                    source => 'Net::Wassr',
                    status => $status,
                   };
         if ( index($status,'@') == 0 ) {
             my @tmps = split /\\s+/, $status, 2;
             if ( scalar(@tmps) == 2 ) {
                 $mes->{status} = $tmps[1];
                 $tmps[0] =~ s/^@//;
 
                 my $f_timeline = $wassr->friends_timeline();
                 for (@$f_timeline) {
                     if ( $_->{user_login_id} eq $tmps[0] ) {
                         $mes->{reply_status_rid} = $_->{rid};
                         last;
                     }
                 }
             }
         }
         my $s = $wassr->update($mes);
         warn Dump $s;
     }
 }

See Also

Copyright © 髭。/ Hugo + hugo-book