Skip to content

Instantly share code, notes, and snippets.

@c18t
Created July 4, 2013 13:09
Show Gist options
  • Save c18t/5927581 to your computer and use it in GitHub Desktop.
Save c18t/5927581 to your computer and use it in GitHub Desktop.
twitter list から screen_name と user_id のリスト取ってくるやつ for twitter api v1.1
#!/usr/local/bin/perl
use 5.014;
use warnings;
use utf8;
use lib qw(lib);
use autobox;
use autobox::dump;
use autobox::Core;
use YAML;
use Config::Pit;
use Getopt::Long;
use Data::Lock qw(dlock);
dlock my $CHARSET = ($^O eq 'MSWin32' ? 'cp932' : 'utf8');
binmode STDIN => ":encoding($CHARSET)";
binmode STDOUT => ":encoding($CHARSET)";
require "twitter_agent.pl";
my ( $list, $owner_name, $owner_id, $help ) = ('') x 4;
my $result = GetOptions(
"l|list=s" => \$list,
"o|owner=s" => \$owner_name,
"oid|owner-id=s" => \$owner_id,
"h|help|?" => \$help,
);
my $prof = shift;
warn <<"_HELP_" and exit if $help or !$list or !$prof;
Usage: $0 -l [list name] [-o [list owner] -h [help]] (conf_name)
_HELP_
my $utig = pit_get('utig.pl', require => {
consumer_key => '',
consumer_secret => '',
});
my $config = pit_get("utig.pl.$prof");
my $nt = twitter_agent($utig, $config);
pit_set("utig.pl.$prof", data => $config) if $nt->{config_updated};
my $data = [];
my $params = { slug => $list, cursor => -1 };
$params->{owner_screen_name} = $owner_name if $owner_name ne '';
$params->{owner_id} = $owner_id if $owner_id ne '';
my ($res, @users);
while ($res = eval { $nt->list_members($params) }) {
last if not scalar @{$res->{users}};
$res->{users}->for(sub {
@users->push({ user_id => $_[1]{id}, screen_name => $_[1]{screen_name} });
});
$params->{cursor} = $res->{next_cursor};
}
die if $@;
print Dump(\@users);
exit;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment