リストを調べるAPIを使ってみた
ユーザ(作成したor入っている)のリストを取得し、リストに含まれるユーザを出力する。ある数以上の人数が含まれている場合previous_cursorやnext_cursorを使用する必要があるみたいです。slugはユーザ名と組み合わせて用いることでリストを特定するために必要。
#!/usr/perl use Net::Twitter; use warnings; use strict; binmode(STDOUT, ":utf8"); my $user = 'twitter_user'; my $password = 'twitter_password'; my $nt = Net::Twitter->new( traits => [qw/API::Lists/], username => $user, password => $password ); # list_userはscreen_nameと同じ(http://twitter.com/の後ろの部分) # list_lists : 自分が作ったリストを取得 # list_memberships : 自分が加えられているリストを取得 my $lists = $nt->list_lists({user => 'list_user'}); for my $list (@$lists) { print "list name: $list->{name}\n" . "list_members\n"; my $users = $nt->list_members({ user => $list->{user}{screen_name}, slug => $list->{slug} })->{users}; for my $user (@$users) { print $user->{screen_name} . "\n"; } }
自分のフォロワーのフォロワーを取得するサンプル
自分のfollowerを取得し、取得したfollowerのfollowerを取得するサンプル。
CPANのNet::Twitterを使用しています。
http://search.cpan.org/dist/Net-Twitter/
#!/usr/perl use Net::Twitter; use warnings; use strict; binmode(STDOUT, ":utf8"); my $user = 'twitter_username'; my $password = 'twitter_passowrd'; my $nt = Net::Twitter->new( traits => [qw/API::REST/], username => $user, password => $password ); my $followers = $nt->followers; for my $follower ( @$followers ) { my $id = $follower->{id}; my $user_id = $follower->{status}{id}; my $screen_name = $follower->{screen_name}; # cursor はフォロワーの数が一定数以上のときにページングするために必要? my $cursor = -1; # followingはfollowersをfriends(following)に変えて実行可能。 my $in_followers = $nt->followers({ id => $id, user_id => $user_id, screen_name => $screen_name, cursor => $cursor }); my $users = $in_followers->{users}; for my $in_follower ( @$users ) { print "$in_follower->{screen_name} "; } print "\n"; }
ArraysとCollectionsでソート
Arrays.sortを使ったソートとCollections.sortを使ったソート
Point.java
Main.javapackage test; import java.util.*; public class Main { public static void sort(Point p[]) { Arrays.sort(p, new test.Point.PointComparator()); } public static void print(Point p[]) { for (int i = 0;i < p.length; i++) { System.out.printf("(x:%d,y:%d)", p[i].x, p[i].y); } } public static int binary_search(Point p_array[], Point p) { return Arrays.binarySearch(p_array, p, new test.Point.PointComparator()); } public static void sort(ArrayList<Point> p) { Collections.sort(p, new test.Point.PointComparator()); } public static void print(ArrayList<Point> p) { for (int i = 0;i < p.size(); i++) { System.out.printf("(x:%d,y:%d)", p.get(i).x, p.get(i).y); } } public static int binary_search(ArrayList<Point> p_array, Point p) { return Collections.binarySearch(p_array, p, new test.Point.PointComparator()); } public static void main(String[] args) { Point[] p1 = new Point[]{ new Point(1,2), new Point(6,5), new Point(3,3), new Point(3,4) }; java.util.ArrayList<Point> p2 = new java.util.ArrayList<Point>(Arrays.asList(p1)); System.out.print("p1ソート前"); print(p1); sort(p1); System.out.print("\np1ソート後"); print(p1); System.out.println("\np1バイナリーサーチ"); System.out.println(binary_search(p1, new Point(3,3))); System.out.println(binary_search(p1, new Point(1,1))); System.out.print("p2ソート前"); print(p2); sort(p2); System.out.print("\np2ソート後"); print(p2); System.out.println("\np2バイナリーサーチ"); System.out.println(binary_search(p2, new Point(3,3))); System.out.println(binary_search(p2, new Point(1,1))); } }
実行結果package test; import java.util.Comparator; public class Point { int x, y; public Point(int x, int y) { this.x = x; this.y = y; } public static class PointComparator implements Comparator<Point> { public int compare(Point p1, Point p2) { if (p1.x != p2.x) return p1.x - p2.x; else return p2.y - p1.y; } } }
p1ソート前(x:1,y:2)(x:6,y:5)(x:3,y:3)(x:3,y:4) p1ソート後(x:1,y:2)(x:3,y:4)(x:3,y:3)(x:6,y:5) p1バイナリーサーチ 2 -2 p2ソート前(x:1,y:2)(x:6,y:5)(x:3,y:3)(x:3,y:4) p2ソート後(x:1,y:2)(x:3,y:4)(x:3,y:3)(x:6,y:5) p2バイナリーサーチ 2 -2