5.9 Twitter命令行客户端
Twitter不仅是最火的微博平台,同时也是最新的在线社会化媒体热点。无论是在Twitter上发帖还是读帖都能让人乐在其中。如果要我们通过命令行来完成这一切呢?其实,写一个基于命令行的Twitter客户端很简单。Twitter有RSS feed,因此可以利用它来实现我们的客户端。来看看怎样做吧。
5.9.1 预备知识
用cURL进行认证,发送Twitter更新并下载RSS feed页面用于解析内容,要做到这一切只需4行代码即可。
5.9.2 实战演练
用curl
命令处理Twitter API的Bash脚本如下:
#!/bin/bash
#文件名: tweets.sh
#用途: Twitter 客户端基础版
USERNAME="PUT_USERNAME_HERE"
PASSWORD="PUT_PASSWORD_HERE"
COUNT="PUT_NO_OF_TWEETS"
if [[ "$1" != "read" ]] && [[ "$1" != "tweet" ]];
then
echo -e "Usage: $0 send status_message\n OR\n $0 read\n"
exit -1;
fi
if [[ "$1" = "read" ]];
then
curl --silent -u $USERNAME:$PASSWORD http://twitter.com/statuses/
friends_timeline.rss | \
grep title | \
tail -n +2 | \
head -n $COUNT | \
sed 's:.*<title>\([^<]*\).*:\n\1:'
elif [[ "$1" = "tweet" ]];
then
status=$( echo $@ | tr -d '"' | sed 's/.*tweet //')
curl --silent -u $USERNAME:$PASSWORD -d status="$status" http://
twitter.com/statuses/update.xml > /dev/null
echo 'Tweeted :)'
fi
运行脚本:
- $ ./tweets.sh tweet Thinking of writing a X version of wall command
- "#bash"
- Tweeted :)
- $ ./tweets.sh read
- bot: A tweet line
- t3rm1n4l: Thinking of writing a X version of wall command #bash
5.9.3 工作原理
我们将上面的脚本分为两部分,以便讲解它的运行原理。第一部分是读取tweet消息。从http://twitter.com/statuses/friends_timeline.rss下载RSS信息并解析包含 标记的行,然后用sed除去
和
标记,这样就得到了所需要的tweet消息内容。利用head命令保留COUNT条最近的tweet消息,
tail -n +2
移除无用的头部文本“Twitter: Timeline of friends”。
第二部分是发送tweet消息,在这一部分中,使用Twitter的API:http://twitter.com/statuses/update.xml,通过curl
的 -d
选项将数据发送到Twitter上。
发送tweet消息时,脚本的 $1
包含了消息内容。要想获取相关状态信息,我们可以使用 $@
(脚本参数列表),然后从中删除单词“tweet”即可。
5.9.4 参考
5.4节讲解了
curl
命令。3.14节讲解了
head
与tail
。