GoogleのURL短縮サービスgoo.glを(ry 続き1。

2010年4月19日 Linux, スクリプト関連, 雑記

シェルスクリプトのみで地味に進行中。
ひとまず、文中に含まれるURLっぽい文字列をgoo.glに投げて短縮URLを受け取って文中のURLを置き換える所までできた。
ただ、このままだと、複数のURLが含まれたときに困ったことになってしまうので、そこら辺まだ手を入れていかないといけない。

一応、試してみたい人のために使い方。

スクリプト実行時に引数として二重引用符で囲った文字列をつけて実行する。だけ。
あとはスクリプトが文字列中に含まれるURLっぽい文字列を短縮URLに置き換えてくれる。
ただ、実はこれ制限があってURLの中に「スペース」「()」が混じってると多分うまくいかなかったり、URLの末尾に半角スペースが無いと、本文との切り分けができずにわけ分かんないことになったりする。

「スペース」に関しては原因は明確で、URLと本文の切り分けに使ってるからなんだけども、「()」の方は、エスケープしないと構文エラーになっちゃうからという何とも言えない原因。ここちょっといまいち調べが足りてないので、いまいちはっきりしたことは言えないんだけども、どうしたものかしらと思ってる。

で、これが今の所の暫定コード。
これに、Twitterの投稿スクリプトを組み込めば、URLを自動で短縮URLに加工して投稿してくれるTwitter投稿クライアントが出来る。

#!/bin/bash
str=`echo “$1” | grep tp://[0-9a-zA-Z@”#$%&’*+,-./] `
case “${#str}” in
  0 ) echo ${#str} $str ;;
  * ) echo $str | sed -e ‘s/http/nhttp/g’ -e ‘s/ftp/nftp/g’ -e ‘s/ /n/g’ >test.txt
  str2=`cat test.txt | grep tp://` ;;
esac
curl -G “http://ggl-shortener.appspot.com/?url=”`echo “$str2” | nkf -eMQ | tr = %` | sed ‘s/”/n/g’ | grep http >test2.txt
str3=`cat test2.txt`
echo `cat test.txt | sed “s%$str2%$str3%g”` >test2.txt

処理の流れなんかの説明は一通り形になってからやるつもり。ごちゃついてるけど、そんなに難しいこともやってないし。

コメント / トラックバック1件

  1. […] つけるときは二重引用符じゃダメなのねw 何はともあれ上手く行ったので公開。制限事項は多分前回のものとほとんど変わらずURLの中に「スペース」が混じるとそこで区切られちゃう点。 […]