5b09f0fe2e0dd76ba16dd3cc7c0a2ff1683606de
[utils.git] / planime
1 #!/bin/sh
2
3 isnum() {
4     grep -xq '[0-9]\+' <<<"$1"
5 }
6
7 findfile() {
8     local file tail eq eqt m
9     for file in "$1"*; do
10         tail="${file#$1}"
11         eq="${tail%.*}"
12         m=n
13         if [ "${eq%% *}" -eq "$2" ] 2>/dev/null; then
14             if [[ "$eq" == *\ * ]]; then
15                 eqt="${eq#* }"
16             else
17                 eqt=
18             fi
19             m=y
20         elif [ "${eq:0:${#2}}" = "$2" ]; then
21             eqt="${eq:${#2}}"
22             if [ "${eqt:0:1}" = " " -o -z "$eqt" ]; then
23                 eqt="${eqt# }"
24                 m=y
25             fi
26         fi
27         if [ "$m" = y ]; then
28             if [ "$eqt" = "$3" -o "$eqt" = "($3)" ]; then
29                 echo "$file"
30                 return 0
31             fi
32         fi
33     done
34     return 1
35 }
36
37 cmdline=(mplayer -fs)
38
39 while [ "${1:0:1}" = - ]; do
40     a="$1"
41     shift
42     case "$a" in
43         -t)
44             cmdline=("${cmdline[@]}" -ao oss:/dev/dsp1)
45             ;;
46         -s)
47             savepar="$1"
48             shift
49             saveval="$1"
50             shift
51             ;;
52     esac
53 done
54
55 if [ $# -lt 1 ]; then
56     echo "usage: planime [QUAL] EPNUM" >&2
57     exit 1
58 fi
59 if [ $# -eq 1 ]; then
60     ep="$1"
61     unset qual
62 elif [ $# -eq 2 ]; then
63     qual="$1"
64     ep="$2"
65 fi
66
67 if [ ! -r "$ep" ]; then
68     if [ -z "$qual" ]; then
69         ep="$(basename "$(pwd)") - ${ep}"
70     else
71         ep="$(basename "$(pwd)") ${qual} - ${ep}"
72     fi
73     if [ -r "${ep}.ogm" ]; then
74         ep="${ep}.ogm"
75         defopts=(-aid 1 -sid 0)
76     elif [ -r "${ep}.mkv" ]; then
77         ep="${ep}.mkv"
78         defopts=(-slang eng -alang jpn)
79     elif [ -r "${ep}.mpg" ]; then
80         ep="${ep}.mpg"
81     elif [ -r "${ep}.mp4" ]; then
82         ep="${ep}.mp4"
83     elif [ -r "${ep}.avi" ]; then
84         ep="${ep}.avi"
85     fi
86 fi
87
88 if [ ! -r "$ep" ]; then
89     echo "no such episode: $ep" >&2
90     exit 1
91 fi
92
93 ifile=".${ep}.info"
94
95 if [ -n "$savepar" ]; then
96     if [ -r "$ifile" ]; then
97         egrep -v "^${savepar}:" "$ifile" >"$ifile.new"
98         mv -f "$ifile.new" "$ifile"
99     fi
100     echo "$savepar: $saveval" >>"$ifile"
101     exit 0
102 fi
103
104 unset delay
105
106 if [ -r "$ifile" ]; then
107     delay="`sed -n 's/delay *: *\([^ ]*\)$/\1/p' <"$ifile"`"
108     cmdline=("${cmdline[@]}" -delay "$delay")
109 else
110     cmdline=("${cmdline[@]}" "${defopts[@]}")
111 fi
112
113 if [ "`hostname`" = pc6 ]; then chwp=y; fi
114
115 if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
116 "${cmdline[@]}" "$ep"