5.9 Twitter命令行客户端

Twitter不仅是最火的微博平台,同时也是最新的在线社会化媒体热点。无论是在Twitter上发帖还是读帖都能让人乐在其中。如果要我们通过命令行来完成这一切呢?其实,写一个基于命令行的Twitter客户端很简单。Twitter有RSS feed,因此可以利用它来实现我们的客户端。来看看怎样做吧。

5.9.1 预备知识

用cURL进行认证,发送Twitter更新并下载RSS feed页面用于解析内容,要做到这一切只需4行代码即可。

5.9.2 实战演练

curl命令处理Twitter API的Bash脚本如下:

  1. #!/bin/bash
  2. #文件名: tweets.sh
  3. #用途: Twitter 客户端基础版
  4. USERNAME="PUT_USERNAME_HERE"
  5. PASSWORD="PUT_PASSWORD_HERE"
  6. COUNT="PUT_NO_OF_TWEETS"
  7. if [[ "$1" != "read" ]] && [[ "$1" != "tweet" ]];
  8. then
  9. echo -e "Usage: $0 send status_message\n OR\n $0 read\n"
  10. exit -1;
  11. fi
  12. if [[ "$1" = "read" ]];
  13. then
  14. curl --silent -u $USERNAME:$PASSWORD http://twitter.com/statuses/
  15. friends_timeline.rss | \
  16. grep title | \
  17. tail -n +2 | \
  18. head -n $COUNT | \
  19. sed 's:.*<title>\([^<]*\).*:\n\1:'
  20. elif [[ "$1" = "tweet" ]];
  21. then
  22. status=$( echo $@ | tr -d '"' | sed 's/.*tweet //')
  23. curl --silent -u $USERNAME:$PASSWORD -d status="$status" http://
  24. twitter.com/statuses/update.xml > /dev/null
  25. echo 'Tweeted :)'
  26. fi

运行脚本:

  1. $ ./tweets.sh tweet Thinking of writing a X version of wall command
  2. "#bash"
  3. Tweeted :)
  4.  
  5. $ ./tweets.sh read
  6. bot: A tweet line
  7. 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节讲解了headtail