最初知道Pidgin是开始使用Ubuntu,很喜欢这种IM集成的软件,可以同时登陆GTalk,MSN等主流的即时通讯。今天碰巧在网上看到Pidgin可以支持Twitter,于是搜到了这款Pidgin插件,Microblog-Purple。
Microblog-Purple是针对LibPurple开发的软件(如Pidgin,Finch)开发的插件,使用Google Code提供的SVN服务进行版本控制。
我使用的是Pidgin Portable的版本,也就是PortableApp.com开发的版本,绿色版本。这款插件也提供了针对Pidgin Portable的安装包,在Microblog-Purple主页的右方,可以找到下载链接,我所下载到的是microblog_.0.2.2_for_pidgin_portable_2.5.x-1.exe。
运行后选择Pidgin的安装目录即可。
运行Pidgin就可以在新建的窗口找到Twitter选项了,同时,插件也提供了很多设置选项,最好将Use HTTPS的勾选上。
现在Twitter被墙掉了,所以要连接上Twitter,需要简单的修改一下Host文件。
在Host文件中添加如下内容
128.121.146.228 twitter.com
128.121.146.228 www.twitter.com
128.121.146.101 assets0.twitter.com
128.121.146.101 assets1.twitter.com
128.121.146.101 static.twitter.com
128.121.146.229 assets2.twitter.com
128.121.146.229 assets3.twitter.com
65.74.185.41 twitter.zendesk.com
65.74.185.41 help.twitter.com
Twitter账户设置好后,每隔60s(默认设置),就会抓取一次Twitter消息,如果有新消息,将自动弹出。
Pidgin真的是款很好的软件,市面上已经有很多类似软件了,但我感觉,Pidgin还是最好的一款。
5月35日前夕,Twitter终于未能幸免,诸位同学只能扒着墙头去看twitter了。一些垃圾话我就不重复了,说出来也是没有用的。
http://dabr.co.uk/ 现在这个开源的twitter web客户端还能够使用,有国外php空间的也可以自己搭建一个来使用,强烈推荐。
What is Twitter4J?
Twitter4J是TwitterAPI的一个Java库。使用Twitter4J,你可以方便的将你的应用程序与Twitter服务结合。
How to use Twitter4J?
首先,从Twitter4J的网站上下载最新的Twitter4J的jar包。点这里可以进入下载界面。
下载完成后,让我们打开Eclipse,新建一个Java工程,不要忘记将Twitter4J的jar包加入Library中,见下图。

接下来我们可以创建一个net.kylewu.twitter.TwitterMain类,用来程序主流程。代码如下(代码比较多,折叠起来了,点箭头就可以看到完整的了)。
import java.util.List;
import java.util.Scanner;
import twitter4j.DirectMessage;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Status;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterException;
/**
* The main class of twitter client
*
* @author Kyle Wu
*
*/
public class TwitterMain {
public static void print(String string) {
System.out.println(string);
}
public static void main(String[] args) {
if (args.length < 2) {
print("Usage: java net.kylewu.twitter.TwitterMain ID Password");
System.exit(-1);
}
String strTip = "=========================\n"
+ "Please select what you want to do:\n"
+ "1. Updating status\n" + "2. Getting Timeline\n"
+ "3. Sending Direct Messages\n"
+ "4. Receiving Direct Messages\n" + "5. Search for Tweets\n"
+ "6. Asynchronous API\n"
+ "0. Exit\n" +
"=========================";
// Twitter class is the one you may want to look first
Twitter twitter = new Twitter(args[0], args[1]);
Scanner scanner = new Scanner(System.in);
while (true) {
print(strTip);
String select = scanner.nextLine();
if (select.compareTo(TwitterAction.UPDATE.toString()) == 0) {
// get message
print("Please input message you want to update:");
String message = scanner.nextLine();
try {
// update here
Status status = twitter.update(message);
print("Successfully updated the status to ["
+ status.getText() + "].");
} catch (TwitterException e) {
print("Error occured when updating");
e.printStackTrace();
}
} else if (select.compareTo(TwitterAction.GETTIMELINE.toString()) == 0) {
try {
// get friend time line here
List statuses = twitter.getFriendsTimeline();
print("Showing friends timeline.");
for (Status status : statuses) {
print(status.getUser().getName() + ":"
+ status.getText());
}
} catch (TwitterException e) {
print("Error occured when getting friends timeline");
e.printStackTrace();
}
} else if (select.compareTo(TwitterAction.SENDDIRECTMSG.toString()) == 0) {
print("Please input id you want to send to :");
String id = scanner.nextLine();
print("Please input message you want to send to :");
String message = scanner.nextLine();
try {
// send direct message here
twitter.sendDirectMessage(id, message);
print("Successfully send message to " + id + ".");
} catch (Exception e) {
print("Error occured when sending direct message");
e.printStackTrace();
}
} else if (select.compareTo(TwitterAction.RECVDIRECTMSG.toString()) == 0) {
try {
// receive direct message here
List list = twitter.getDirectMessages();
print("There are " + list.size() + " messages");
for (DirectMessage dm : list) {
print("Sender:" + dm.getSenderScreenName());
print("Text:" + dm.getText() + "\n");
}
} catch (Exception e) {
print("Error occured when receiving direct message");
e.printStackTrace();
}
} else if (select.compareTo(TwitterAction.SEARCHFORTWEETS
.toString()) == 0) {
try {
// search for tweets
Query query = new Query("wenwu");
QueryResult result = twitter.search(query);
print("hits:" + result.getTotal());
for (Tweet tweet : result.getTweets()) {
print(tweet.getFromUser() + ":" + tweet.getText());
}
} catch (Exception e) {
print("Error occured when searching for tweets");
e.printStackTrace();
}
} else {
// exit
System.exit(0);
}
}
}
}
接下来创建一个net.kylewu.twitter.TwitterAction的Enum,主要是对各种消息进行枚举。代码如下。
/**
*
* @author Kyle Wu
*
*/
public enum TwitterAction {
UPDATE(1),
GETTIMELINE(2),
SENDDIRECTMSG(3),
RECVDIRECTMSG(4),
SEARCHFORTWEETS(5);
final private int type;
private TwitterAction(int type) {
this.type = type;
}
@Override
public String toString() {
return String.valueOf(this.type);
}
public int getType() {
return this.type;
}
}
好了,我们运行一下,功能很简单是吧,当然代码也很简单。Twitter4J已经为我们做了很多事情,我们所要做的仅仅是调用Twitter类提供的一些方法。后面我还会发布一篇Twitter4J探秘,让我们从内部看看Twitter4J是如何帮助我们的:-)
哪位朋友用Twitter4J做了好的应用,别忘记告诉我一声哦。
What is Twitpic?
Twitpic是一个利用Twitter网络的图片分享网站。
How to use Twitpic?
使用你的Twitter账号登陆Twitpic。界面很清爽,不是么?点击页面上方的Upload photo就可以上传图片了,同时也可以随同图片发布一下信息。
Twitpic支持在线上传,同时也支持手机上传(点击页面上方Settings便可以看到使用方法),并提供API供用户使用。作为开发者,只需要关注API页面,Twitpic提供的功能非常简单,但很实用。
Twitpic作为一个依托于Twitter的具有优秀创意的应用,具有很好的前景,喜欢同好友分享图片的同学不要忘记Twitpic。





