#!/usr/bin/env bash # vim: set ts=4 sw=4 exec 2>&1 if test -d lock then echo "Already running" exit 1 # trap goes below in order not to remove the lock else mkdir lock fi temp=$(mktemp "$1.XXXX") temp2=$(mktemp "$1.XXXX") trap "rm -vrf $temp $temp2 lock" EXIT umask 002 if ! test "$1" then printf "Please specify twitter username\ne.g. %s kaihendry\n" $0 exit 1 fi page=1 saved=0 test -s "$1.txt.gz" && gunzip "$1.txt.gz" if test -s "$1.txt" then saved=$(wc -l < "$1.txt") since='&since_id='$(head -n1 "$1.txt" | cut -d'|' -f1) test "$2" && since='&max_id='$(tail -n1 $1.txt | cut -d'|' -f1) # use max_id to get older tweets fi while urlargs="screen_name=${1}&count=200&page=${page}${since}&include_rts=1&trim_user=0"; echo $urlargs; $(dirname $0)/oauth.php $urlargs | $(dirname $0)/json-to-text.php > $temp2; test $(wc -l < $temp2) -gt 0; do #cat temp2 if test -f $1.txt then mv $1.txt $temp before=$(wc -l < "$temp") else before=0 > $temp fi sort -r -n -u $temp $temp2 > "$1.txt" rm -f $temp $temp2 after=$(wc -l < "$1.txt") echo Before: $before After: $after page=$(($page + 1)) saved=$(wc -l < "$1.txt") done echo $1 saved $saved tweets test -L "$1.txt.gz" && rm "$1.txt.gz" gzip -v "$1.txt" ln -sfv "$1.txt.gz" tweets.txt.gz stat -L tweets.txt 2>/dev/null || rm -f tweets.txt