]>
Commit | Line | Data |
---|---|---|
40777a19 | 1 | #!/bin/sh |
2 | ||
25378dd8 | 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 | ||
251d97ca | 37 | origargs=("$0" "$@") |
40777a19 | 38 | cmdline=(mplayer -fs) |
39 | ||
40 | while [ "${1:0:1}" = - ]; do | |
41 | a="$1" | |
42 | shift | |
43 | case "$a" in | |
529814da | 44 | -h) |
45 | echo "usage: planime [-ht] [-s PAR VAL] [NAME-QUAL] [EP|.] [TYPE-QUAL]" >&2 | |
46 | exit 0 | |
47 | ;; | |
40777a19 | 48 | -t) |
49 | cmdline=("${cmdline[@]}" -ao oss:/dev/dsp1) | |
50 | ;; | |
51 | -s) | |
52 | savepar="$1" | |
53 | shift | |
54 | saveval="$1" | |
55 | shift | |
56 | ;; | |
57 | esac | |
58 | done | |
59 | ||
529814da | 60 | base="$(basename "$(pwd)")" |
61 | nextep=n | |
62 | file= | |
63 | tqual= | |
64 | if [ $# -eq 0 ]; then | |
65 | nextep=y | |
66 | elif [ $# -eq 1 ]; then | |
67 | if [ -r "$1" ]; then | |
68 | file="$1" | |
69 | else | |
70 | if findfile "$base - " "$1" >/dev/null; then | |
71 | ep="$1" | |
72 | else | |
73 | nextep=y | |
74 | base="$base $1" | |
75 | fi | |
76 | fi | |
40777a19 | 77 | elif [ $# -eq 2 ]; then |
529814da | 78 | if findfile "$base - " "$1" "$2" >/dev/null; then |
79 | ep="$1" | |
80 | tqual="$2" | |
81 | else | |
82 | base="$base $1" | |
83 | ep="$2" | |
84 | fi | |
85 | else | |
86 | base="$base $1" | |
40777a19 | 87 | ep="$2" |
529814da | 88 | tqual="$3" |
89 | fi | |
90 | if [ "$ep" = . ]; then nextep=y; fi | |
91 | if [ "$nextep" = y -a -r nextep ]; then | |
92 | ep="$(<nextep)" | |
93 | if ! isnum "$ep"; then | |
94 | echo "planime: nextep is non-numeric" >&2 | |
95 | exit 1 | |
96 | fi | |
40777a19 | 97 | fi |
90aff0d0 | 98 | if [ -z "$file" ]; then |
99 | file="$(findfile "$base - " "$ep" "$qual")" | |
100 | fi | |
529814da | 101 | |
4c7a7e70 | 102 | if [ -z "$file" -o ! -r "$file" ]; then |
529814da | 103 | echo "planime: no matching file found" >&2 |
104 | exit 1 | |
105 | fi | |
106 | ||
4c7a7e70 | 107 | case "${file##*.}" in |
108 | ogm) | |
40777a19 | 109 | defopts=(-aid 1 -sid 0) |
4c7a7e70 | 110 | ;; |
111 | mkv) | |
40777a19 | 112 | defopts=(-slang eng -alang jpn) |
4c7a7e70 | 113 | ;; |
114 | esac | |
40777a19 | 115 | |
116 | ifile=".${ep}.info" | |
117 | ||
118 | if [ -n "$savepar" ]; then | |
119 | if [ -r "$ifile" ]; then | |
081b510d | 120 | egrep -v "^${savepar}:" "$ifile" >"$ifile.new" |
121 | mv -f "$ifile.new" "$ifile" | |
40777a19 | 122 | fi |
123 | echo "$savepar: $saveval" >>"$ifile" | |
124 | exit 0 | |
125 | fi | |
126 | ||
127 | unset delay | |
128 | ||
129 | if [ -r "$ifile" ]; then | |
251d97ca | 130 | delay="$(sed -n 's/delay *: *\([^ ]*\)$/\1/p' <"$ifile")" |
40777a19 | 131 | cmdline=("${cmdline[@]}" -delay "$delay") |
132 | else | |
133 | cmdline=("${cmdline[@]}" "${defopts[@]}") | |
134 | fi | |
135 | ||
136 | if [ "`hostname`" = pc6 ]; then chwp=y; fi | |
137 | ||
138 | if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi | |
4c7a7e70 | 139 | "${cmdline[@]}" "$file" |
251d97ca | 140 | |
141 | if [ "$nextep" = y ]; then | |
1f6c2e48 | 142 | echo "0. Save and continue (or Space)" |
251d97ca | 143 | echo "1. Continue without saving" |
1f6c2e48 | 144 | echo "2. Save and exit (or Enter)" |
145 | echo "3. Exit without saving (or any key)" | |
251d97ca | 146 | IFS= read -sn1 c |
147 | save=n | |
148 | cont=n | |
149 | case "$c" in | |
150 | 0|" ") | |
151 | save=y | |
152 | cont=y | |
153 | ;; | |
154 | 1) | |
155 | cont=y | |
156 | ;; | |
2d68de16 | 157 | 2|"") |
251d97ca | 158 | save=y |
159 | ;; | |
160 | esac | |
161 | if [ "$save" = y ]; then | |
90aff0d0 | 162 | let ep++ |
163 | echo "$ep" >nextep | |
251d97ca | 164 | fi |
165 | if [ "$cont" = y ]; then | |
166 | exec "${origargs[@]}" | |
90aff0d0 | 167 | else |
168 | echo "nextep is $ep" | |
251d97ca | 169 | fi |
170 | fi |