summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Bratch <luke@bratch.co.uk>2015-05-11 15:23:06 +0100
committerLuke Bratch <luke@bratch.co.uk>2015-05-11 15:23:06 +0100
commite1f8521fdaa4c07a9fca9d7497755599fba6c4f5 (patch)
tree9459bf9540ba98ad36563b0f693775b6bae5b5ec
parentf2fb938c798f0493248049204b32b87afd7c178c (diff)
Fix support for servers that don't support HTTP HEAD
-rwxr-xr-xtitle.bash23
1 files changed, 14 insertions, 9 deletions
diff --git a/title.bash b/title.bash
index 7a44ca3..cb8b153 100755
--- a/title.bash
+++ b/title.bash
@@ -13,23 +13,28 @@
: update user agent string
# v0.8.1: change name in version string to "blatitle"
# v0.9 : add support for gzip compression
+# v0.9.1: fix support for servers that don't support HTTP HEAD
-OPTS='--location --insecure --silent --max-filesize 1048576 --max-time 10 -A "Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0"'
+OPTS='--location --insecure --silent --max-filesize 1048576 --max-time 10 -A "Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0" -H "Accept-Encoding: gzip"'
read url
+TIME=$(date +%s%N)
+
+if [ -z "$TIME" ]
+then
+ echo "Timestamp error"
+ exit 1
+fi
+
if [ "$url" == "-h" ] || [ "$url" == "--help" ]
then
echo "Usage: '!title <url>' where <url> is an http:// or https:// URL"
elif [ "$url" == "-v" ] || [ "$url" == "--version" ]
then
- echo "blatitle version 0.9"
+ echo "blatitle version 0.9.1"
else
- curl -I -H "Accept-Encoding: gzip" $OPTS "$url" | grep -q "Content-Encoding: gzip"
- if [ "$?" == 0 ]
- then
- OPTS+=' -H "Accept-Encoding: gzip"'
- GZIP="| gunzip"
- fi
- eval curl $OPTS "$url" $GZIP | sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!I;tnext};b;:next;s!.*<title>\(.*\)</title>.*!\1!pI' | sed ':a;N;$!ba;s/\n//g' | sed -e 's/^[ \t]*//'
+ eval curl $OPTS -D /tmp/$TIME.header '$url' -o /tmp/$TIME.body.gz
+ grep -q "Content-Encoding: gzip" /tmp/$TIME.header && gunzip /tmp/$TIME.body.gz || mv /tmp/$TIME.body.gz /tmp/$TIME.body
+ sed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!I;tnext};b;:next;s!.*<title>\(.*\)</title>.*!\1!pI' /tmp/$TIME.body | sed ':a;N;$!ba;s/\n//g' | sed -e 's/^[ \t]*//'
fi