#!/bin/bash

# Examples of youtube-dl --list-formats $URL

# 140          m4a        audio only DASH audio  129k , m4a_dash container, aac  @128k (44100Hz), 482.69KiB
# 141          m4a        audio only DASH audio  256k , m4a_dash container, aac  @256k (44100Hz), 957.89KiB
# 160          mp4        256x144    DASH video  109k , 15fps, video only, 400.20KiB
# 133          mp4        426x240    DASH video  245k , 30fps, video only, 896.59KiB
# 134          mp4        640x360    DASH video  539k , 30fps, video only, 1.38MiB
# 135          mp4        854x480    DASH video 1066k , 30fps, video only, 2.71MiB
# 136          mp4        1280x720   DASH video 1965k , 30fps, video only, 5.20MiB
# 17           3gp        176x144
# 36           3gp        320x240
# 5            flv        400x240
# 43           webm       640x360
# 18           mp4        640x360
# 22           mp4        1280x720   (best)

# 37      :       mp4     [1080x1920]
# 22      :       mp4     [720x1280]
# 45      :       webm    [720x1280]
# 35      :       flv     [480x854]
# 44      :       webm    [480x854]
# 34      :       flv     [360x640]
# 18      :       mp4     [360x640]
# 43      :       webm    [360x640]
# 5       :       flv     [240x400]

SAVEQ=37
PLAYQ=35

# 2015-04-30 the quality settings have recently changed, this is now
# simplified as I don't really need low quality anyway, but audio-only
# is nice.

Q=best

DL=false
while getopts ad opt; do
    case "$opt" in
	a)
	    # Audio only
	    Q=bestaudio
	    ;;
	d)
	    DL=true
	    ;;
    esac
done
shift $((OPTIND - 1))

if $DL; then
    for file in "$@"; do
	youtube-dl -f $Q -t "$file"
    done
else
    # Direct play
    if [ -n "$(echo $@ | grep t=)" ]; then
	TIMEOPT=$(echo "$@" | sed -Ee 's/.*t=([0-9]+)m([0-9]+)s/-ss \1:\2/')
    else
	TIMEOPT=""
    fi
    youtube-dl -f $Q -o - "$@" | mplayer $TIMEOPT -
fi    
