shell下发推脚本

Be Lazy, 懒得能不动鼠标, 就不愿动鼠标..

今天在推上看到有人的下面缀着”via bash”, 好奇怎么做到, 找来推的API, 其实挺简单..

请参看最新的bTwitter.

直接上代码, 不解释了, 只是有几点解释下

 1. 如果是VPN, 不用代理, 就取消-x选项 2. 脚本直接从STDIN读取内容,内容需要是UTF-8编码, 如果你的终端不是, 那请在脚本中添加iconv 3. 做到完全脚本浏览/发推也是可以的. 4. 新浪微薄也有REST API, 理论上也是可以这么搞的. 

代码:

 #!/bin/bash #by laruence<http://www.laruence.com>  USERNAME="用户名" PASSWORD="密码" PROXY="代理地址"  function encodeurl() {     echo "$*" | awk 'BEGIN {         split ("1 2 3 4 5 6 7 8 9 A B C D E F", hextab, " ")         hextab [0] = 0         for (i=1; i<=255; ++i) {             ord [ sprintf ("%c", i) "" ] = i + 0         }     }     {         encoded = ""         for (i=1; i<=length($0); ++i) {             c = substr ($0, i, 1)             if ( c ~ /[a-zA-Z0-9.-$]/ ) {                 encoded = encoded c             #不需要编码             } else if ( c == " " ) {                 encoded = encoded "+"  #处理空格             } else {                 #编码                 lo = ord [c] % 16                 hi = int (ord [c] / 16);                 encoded = encoded "%" hextab [hi] hextab [lo]             }         }         print encoded     }' 2>/dev/null }  URL=https://api.twitter.com/1/statuses/update.xml  CONTENT=$* REPLY=`echo $CONTENT | sed -n -e 's/^.*@/([^ ]/+/).*$//1/p'`  DATA=`encodeurl $CONTENT`  POST="source=bash&status=$DATA"  #in_reply_to老是不能在下面显示出来, 不知何故 if [ -n "$REPLY" ] then     POST=$POST"&in_reply_to="$REPLY fi  MESSAGE=`curl -3 -k --silent -x$PROXY -u$USERNAME:$PASSWORD -d"$POST" $URL`  exit 0 

发表评论

电子邮件地址不会被公开。 必填项已用*标注