Skip to content

Instantly share code, notes, and snippets.

@wata727
Last active September 20, 2015 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wata727/b465a86ce1a7845e3ec2 to your computer and use it in GitHub Desktop.
Save wata727/b465a86ce1a7845e3ec2 to your computer and use it in GitHub Desktop.
kobayasitabelにTwitterからメニューを登録するスクリプト
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Net::Twitter;
use Text::MeCab;
use LWP::UserAgent;
use HTTP::Request::Common;
# main
my @tweets = get_tweet();
my @menus = get_menus(\@tweets);
foreach my $menu (@menus) {
if ($menu->{'name'} !~ /[a-zA-Z0-9!-\/:-@¥\[-`{-~\]]/) {
register_menu($menu->{'name'}, $menu->{'can_eat'});
}
}
# end
sub get_tweet {
my @tweets = ();
my %consumer_tokens = (
consumer_key => 'CONSUMER_KEY',
consumer_secret => 'CONSUMER_SECRET_KEY',
);
my $nt = Net::Twitter->new(traits => [qw/API::RESTv1_1/], %consumer_tokens);
$nt->access_token('ACCESS_TOKEN');
$nt->access_token_secret('ACCESS_TOKEN_SECRET');
my $tls = $nt->user_timeline({user_id => 'USER_ID'});
foreach my $tl (@{$tls}) {
push(@tweets, encode('utf-8',${$tl}{'text'}));
}
return @tweets;
}
sub get_menus {
my ($tweets_ref) = @_;
my @menus = ();
my @list = (
['食べたい', 1],
['食いたい', 1],
['たべたい', 1],
['くいたい', 1],
['食べたくない', 0],
['食いたくない', 0],
['たべたくない', 0],
['くいたくない', 0],
['食べられない', 0],
['たべられない', 0],
['食えない', 0],
['くえない', 0],
);
my $m = Text::MeCab->new();
foreach my $tweet (@{$tweets_ref}) {
foreach my $record (@list) {
if ($tweet =~ /$record->[0]/) {
my $n = $m->parse($tweet);
while ($n) {
my @parts = split(',',$n->feature);
if ($parts[0] eq '名詞') {
push(@menus, { 'name' => $n->surface, 'can_eat' => $record->[1] });
}
$n = $n->next;
}
}
}
}
return @menus;
}
sub register_menu {
my ($name, $can_eat) = @_;
my $url = 'https://kobayasitabel.herokuapp.com/menus.json';
my %postdata = (
"menu[name]" => $name,
"menu[can_eat]" => $can_eat,
);
my $request = POST($url, \%postdata);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request)->as_string;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment