summaryrefslogtreecommitdiff
path: root/title.bash
blob: 27815c76638a37c36f371003562c93b23df95440 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

# v0.1  : basic title extract
# v0.2  : added help arguments
# v0.3  : added version arguments
# v0.3.1: change !title to title in version info
# v0.4  : added case insensitive matching
# v0.5  : ignore SSL certificate errors
# v0.6  : switch to curl, add maximum filesize and time limits
# v0.7  : follow HTTP redirects, was broken since switch to curl
# v0.7.1: pretend to be Firefox, some broken websites reject cURL
# v0.8  : strip newlines and leading whitespace from "broken" titles
        : update user agent string

read url

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 "title version 0.8"
else
  curl --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" "$url" | 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]*//'
fi