yheld2007/06/26 23:27どうやら、もう直ったようです。
import twitter; // Console Hi-jackなんていう古めかしいのがある可能性があるので、ここに書く。 // lolcat風に const char[] from_user = "YOU THE NAME"; const char[] from_pass = "YOU THE BUZZWORD"; const char[] to_user = "YOU THE NAME"; const char[] to_pass = "YOU THE BUZZWORD" void main() { auto twitter = Twitter(from_user, from_pass); // => this.login() twitter.getFriendStatuses(Type.XML); twitter.logout(); twitter.logoin(to_user, to_pass); // 冗長なコード・・・ twitter.add(delegate loop(Friend twitter.friend){ if (twitter.friend is null) return false; twitter.add(twitter.friend); return true; }); //twitter.addLoop();とか twitter.close(); }
追記:いや、connectとか、closeはストリームに対してので、sessionはloginとかlogoutとかの方がいいな。
import std.stdio; import std.string, std.regexp; import std.stream, std.conv; import std.socket, std.socketstream; import std.base64; int main(char[][] args) { // you need change this XML file. Stream file = new BufferedFile("yheld.xml"); // you need change user name and password char[] user_name = "twitter_ni_ban_saremasuta"; char[] password = "hogehoge"; // encoded user name and password to base auth char[] basic_auth = std.base64.encode(user_name ~ ":" ~ password); foreach (char[] line; file) { // get frined ID if (std.regexp.find(line, "<id>.*</id>", "i") >= 0) { writefln("HIT! ID!"); char[] id = line[std.string.find(line, ">") + 1..line.length]; id = id[0..std.string.find(id, "<")]; auto Socket sock = new TcpSocket(new InternetAddress("twitter.com", 80)); Stream ss = new SocketStream(sock); ss.writeString("GET /friendships/create/"~ id ~" HTTP/1.1\r\n" "Host: twitter.com\r\n" "Authorization: Basic "~ basic_auth ~"\r\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\r\n" "Referer: http://twitter.com/\r\n" "\r\n"); writefln("OK!\n"); ss.close(); } } file.close(); return 0; }
やっつけコード如きに何時間もかけるなんて、さすがオレだぜwwwwwwwwwwwwwwwwwwwwwwうぇうぇwwwwwwwww
追記:多分、こうの方が良いと思うんだぜ。
import std.stdio; import std.string, std.regexp; import std.stream, std.conv; import std.socket, std.socketstream; import std.base64; int main(char[][] args) { // you need change this XML file. Stream file = new BufferedFile("yheld.xml"); // you need change user name and password char[] user_name = "hogehoge"; char[] password = "hogehoge"; // encoded user name and password to base auth char[] basic_auth = std.base64.encode(user_name ~ ":" ~ password); auto Socket sock = new TcpSocket(new InternetAddress("twitter.com", 80)); Stream ss = new SocketStream(sock);Stream ss = new SocketStream(sock); foreach (char[] line; file) { // get frined ID if (std.regexp.find(line, "<id>.*</id>", "i") >= 0) { writefln("HIT! ID!"); char[] id = line[std.string.find(line, ">") + 1..line.length]; id = id[0..std.string.find(id, "<")]; ss.writeString("GET /friendships/create/"~ id ~" HTTP/1.1\r\n" "Host: twitter.com\r\n" "Authorization: Basic "~ basic_auth ~"\r\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\r\n" "Referer: http://twitter.com/\r\n" "\r\n"); writefln("OK!\n"); } } ss.close(); socket.close(); file.close(); return 0; }
あーダメだ。ちゃんと増えてない。Keep-Aliveとかも設定するのかな?
つーか、既にFriendなのに、friendshipした場合どんなのが返るんだろうか?