84
by mhyst
Correción: algunos módulos no funcionaban sin el shebang. Así que lo hemos vuelto a añadir |
1 |
#!/bin/bash
|
48
by mhyst
Versión 2.3.2 |
2 |
# This file is part of Sintel.
|
3 |
#
|
|
4 |
# Sintel is free software: you can redistribute it and/or modify
|
|
5 |
# it under the terms of the GNU General Public License as published by
|
|
6 |
# the Free Software Foundation, either version 3 of the License, or
|
|
7 |
# (at your option) any later version.
|
|
8 |
#
|
|
9 |
# Sintel is distributed in the hope that it will be useful,
|
|
10 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12 |
# GNU General Public License for more details.
|
|
13 |
#
|
|
14 |
# You should have received a copy of the GNU General Public License
|
|
15 |
# along with Sintel. If not, see <https://www.gnu.org/licenses/>.
|
|
16 |
#
|
|
17 |
#
|
|
1
by mhyst
Primer commit |
18 |
#Listar series y películas existentes en la base de datos de varias formas
|
19 |
||
33
by mhyst
Documentando funciones (III) 19/07/2019 |
20 |
function medios.info() { |
21 |
echo "medios - Módulo de medios" |
|
22 |
echo
|
|
23 |
echo "Tareas sobre medios en general." |
|
24 |
echo "Se usan funciones de otros módulos." |
|
25 |
echo
|
|
26 |
}
|
|
1
by mhyst
Primer commit |
27 |
|
28 |
#Listar todos los medios
|
|
29 |
#En el formato siguiente:
|
|
30 |
#De las películas:
|
|
31 |
#id titulo pelicula
|
|
32 |
#De las series igual que la función siguiente a esta (medios.listSeries)
|
|
33 |
function medios.listAll() { |
|
34 |
local datos=$(db.executeQuery "select * from medio") |
|
35 |
local e="" |
|
36 |
local e2="" |
|
37 |
local res="" |
|
38 |
||
39 |
readarray -t datosa <<< "$datos" |
|
40 |
for medio in "${datosa[@]}"; do |
|
41 |
film.parse "$medio" |
|
42 |
e="" |
|
43 |
e="${PELICULA[id]} ${PELICULA[titulo]}" |
|
44 |
if [[ ${PELICULA[esserie]} == 1 ]]; then |
|
45 |
e="$e serie" |
|
46 |
local ds=$(db.executeQuery "select * from episodio where idmedio = ${PELICULA[id]} and esvisto = 0 order by temporada, episodio limit 1") |
|
47 |
if [[ $ds != "" ]]; then |
|
48 |
series.parseEpisodio "$ds" |
|
49 |
e="$e ${EPISODIO[temporada]}x${EPISODIO[episodio]}" |
|
50 |
e2="" |
|
51 |
if [[ ${EPISODIO[fichero]} == "" ]]; then |
|
52 |
e2="no" |
|
53 |
else
|
|
54 |
e2="si" |
|
55 |
fi
|
|
56 |
if [[ ${EPISODIO[torrent]} == "" ]]; then |
|
57 |
e2="$e2 no" |
|
58 |
else
|
|
59 |
e2="$e2 si" |
|
60 |
fi
|
|
61 |
e="$e $e2" |
|
62 |
else
|
|
63 |
e="$e -1" |
|
64 |
fi
|
|
65 |
else
|
|
66 |
e="$e pelicula" |
|
67 |
fi
|
|
68 |
echo "$e" |
|
69 |
done
|
|
70 |
}
|
|
71 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
72 |
function medios.listAll.info() { |
73 |
echo "medios.listAll - Listar todos los medios. Películas y series." |
|
74 |
echo
|
|
75 |
echo -e "\tArgumentos: -" |
|
76 |
echo
|
|
77 |
echo "Si el medio es una serie se muestra el episodio por el que llega el usuario." |
|
78 |
echo
|
|
79 |
echo "Ejemplo:" |
|
80 |
echo -e "\tsintel -f medios.listAll" |
|
81 |
}
|
|
82 |
||
1
by mhyst
Primer commit |
83 |
#Listar todas las series
|
84 |
#El formato de salida es el siguiente:
|
|
85 |
#id titulo episodio descargado descargando
|
|
86 |
#
|
|
87 |
#El episodio será dado en el formato temporadaxepisodio, sin espacios
|
|
88 |
#Descargado y descargando serán "si" o "no" en minúsculas.
|
|
89 |
#
|
|
90 |
#Si la serie no tiene episodios, en lugar del episodio mostrará "-1" y no
|
|
91 |
#dará más detalles.
|
|
92 |
function medios.listSeries() { |
|
93 |
local datos=$(db.executeQuery "select * from medio where esserie = 1") |
|
94 |
local e="" |
|
95 |
local e2="" |
|
96 |
local res="" |
|
97 |
||
98 |
readarray -t datosa <<< "$datos" |
|
99 |
for medio in "${datosa[@]}"; do |
|
100 |
film.parse "$medio" |
|
101 |
e="" |
|
102 |
e="${PELICULA[id]} ${PELICULA[titulo]}" |
|
103 |
||
104 |
local ds=$(db.executeQuery "select * from episodio where idmedio = ${PELICULA[id]} and esvisto = 0 order by temporada, episodio limit 1") |
|
105 |
if [[ $ds != "" ]]; then |
|
106 |
series.parseEpisodio "$ds" |
|
107 |
e="$e ${EPISODIO[temporada]}x${EPISODIO[episodio]}" |
|
108 |
e2="" |
|
109 |
if [[ ${EPISODIO[fichero]} == "" ]]; then |
|
110 |
e2="no" |
|
111 |
else
|
|
112 |
e2="si" |
|
113 |
fi
|
|
114 |
if [[ ${EPISODIO[torrent]} == "" ]]; then |
|
115 |
e2="$e2 no" |
|
116 |
else
|
|
117 |
e2="$e2 si" |
|
118 |
fi
|
|
119 |
e="$e $e2" |
|
120 |
else
|
|
121 |
e="$e -1" |
|
122 |
fi
|
|
123 |
echo "$e" |
|
124 |
done
|
|
125 |
}
|
|
126 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
127 |
function medios.listSeries.info() { |
128 |
echo "medios.listSeries - Lista solo las series." |
|
129 |
echo
|
|
130 |
echo -e "\tArgumentos: -" |
|
131 |
echo
|
|
132 |
echo "De cada serie se muestra el episodio por el que se llega el usuario." |
|
133 |
echo
|
|
134 |
echo "Ejemplo:" |
|
135 |
echo -e "\tsintel -f medios.listSeries" |
|
136 |
}
|
|
137 |
||
1
by mhyst
Primer commit |
138 |
#Listar todas las películas
|
139 |
#En el formato id titulo
|
|
140 |
function medios.listPeliculas() { |
|
141 |
local datos=$(db.executeQuery "select * from medio") |
|
142 |
local e="" |
|
143 |
local e2="" |
|
144 |
local res="" |
|
145 |
||
146 |
readarray -t datosa <<< "$datos" |
|
147 |
for medio in "${datosa[@]}"; do |
|
148 |
film.parse "$medio" |
|
149 |
e="" |
|
150 |
e="${PELICULA[id]} ${PELICULA[titulo]}" |
|
151 |
echo "$e" |
|
152 |
done
|
|
153 |
}
|
|
154 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
155 |
function medios.listPeliculas.info() { |
156 |
echo "medios.listPeliculas - Lista las películas que están en la base de datos." |
|
157 |
echo
|
|
158 |
echo -e "\tArgumentos: -" |
|
159 |
echo
|
|
160 |
echo "Ejemplo:" |
|
161 |
echo -e "\tsintel -f medios.listPeliculas" |
|
162 |
}
|
|
163 |
||
1
by mhyst
Primer commit |
164 |
function medios.findSeries() { |
11
by mhyst
Búsquedas por varias palabras en llamadas a funciones (-f) |
165 |
local busqueda="$@" |
1
by mhyst
Primer commit |
166 |
local datos=$(db.executeQuery "select * from medio where esserie = 1 and titulo like \"%$busqueda%\"") |
167 |
local e="" |
|
168 |
local e2="" |
|
169 |
local res="" |
|
170 |
||
171 |
readarray -t datosa <<< "$datos" |
|
172 |
for medio in "${datosa[@]}"; do |
|
173 |
film.parse "$medio" |
|
174 |
e="" |
|
175 |
e="${PELICULA[id]} ${PELICULA[titulo]}" |
|
176 |
||
177 |
local ds=$(db.executeQuery "select * from episodio where idmedio = ${PELICULA[id]} and esvisto = 0 order by temporada, episodio limit 1") |
|
178 |
if [[ $ds != "" ]]; then |
|
179 |
series.parseEpisodio "$ds" |
|
180 |
e="$e ${EPISODIO[temporada]}x${EPISODIO[episodio]} ${EPISODIO[id]}" |
|
181 |
e2="" |
|
182 |
if [[ ${EPISODIO[fichero]} == "" ]]; then |
|
183 |
e2="no" |
|
184 |
else
|
|
185 |
e2="si" |
|
186 |
fi
|
|
187 |
if [[ ${EPISODIO[torrent]} == "" ]] || [[ ${EPISODIO[torrent]} == "-1" ]]; then |
|
188 |
e2="$e2 no" |
|
189 |
else
|
|
190 |
e2="$e2 si" |
|
191 |
fi
|
|
192 |
e="$e $e2" |
|
193 |
else
|
|
194 |
e="$e -1" |
|
195 |
fi
|
|
196 |
echo "$e" |
|
197 |
done
|
|
198 |
}
|
|
199 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
200 |
function medios.findSeries.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
201 |
echo "medios.findSeries - Encontrar series." |
202 |
echo
|
|
203 |
echo -e "\tArgumentos: cadena de búsqueda" |
|
204 |
echo
|
|
205 |
echo "Busca series cuyo título coincida con la cadena de búsqueda indicada." |
|
206 |
echo
|
|
207 |
echo "Ejemplo:" |
|
208 |
echo -e "\tsintel -f medios.findSeries:poirot" |
|
209 |
echo -e "\tsintel -f medios.findSeries:\"agatha christie\"" |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
210 |
}
|
211 |
||
1
by mhyst
Primer commit |
212 |
function medios.findPeliculas() { |
11
by mhyst
Búsquedas por varias palabras en llamadas a funciones (-f) |
213 |
local busqueda="$@" |
1
by mhyst
Primer commit |
214 |
local datos=$(db.executeQuery "select * from medio where esserie = 0 and titulo like \"%$busqueda%\"") |
215 |
local e="" |
|
216 |
local e2="" |
|
217 |
local res="" |
|
218 |
||
219 |
readarray -t datosa <<< "$datos" |
|
220 |
for medio in "${datosa[@]}"; do |
|
221 |
film.parse "$medio" |
|
222 |
e="" |
|
10
by mhyst
Correcciones menores |
223 |
e="${PELICULA[id]} ${PELICULA[titulo]} ${PELICULA[fichero]}" |
1
by mhyst
Primer commit |
224 |
echo "$e" |
225 |
done
|
|
226 |
}
|
|
227 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
228 |
function medios.findPeliculas.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
229 |
echo "medios.findPeliculas - Encontrar películas." |
230 |
echo
|
|
231 |
echo -e "\tArgumentos: cadena de búsqueda" |
|
232 |
echo
|
|
233 |
echo "Muestra películas cuyos títulos coincidan con la cadena de búsqueda." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
234 |
echo
|
235 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
236 |
echo -e "\tsintel -f medios.findPeliculas:northwest" |
237 |
echo -e "\tsubtek -f medios.findPeliculas\"star trek\"" |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
238 |
}
|
239 |
||
1
by mhyst
Primer commit |
240 |
function medios.listEpisodios() { |
79
by mhyst
Probando nuevo sistema de control de argumentos |
241 |
[[ $# != 1 ]] && ( die $(iargs 1 "id") ) |
1
by mhyst
Primer commit |
242 |
local idmedio="$1" |
243 |
local e="" |
|
244 |
||
245 |
local datos=$(db.executeQuery "select * from episodio where idmedio = $idmedio order by temporada, episodio") |
|
246 |
readarray -t datosa <<< "$datos" |
|
247 |
for episodio in "${datosa[@]}"; do |
|
248 |
series.parseEpisodio "$episodio" |
|
249 |
||
3
by mhyst
Aún en una fase temprana, pero funcional |
250 |
e="${EPISODIO[id]} ${EPISODIO[temporada]} ${EPISODIO[episodio]} ${EPISODIO[fichero]} ${EPISODIO[torrent]} ${EPISODIO[esvisto]} ${EPISODIO[esdescargado]}" |
1
by mhyst
Primer commit |
251 |
echo "$e" |
252 |
done
|
|
253 |
}
|
|
254 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
255 |
function medios.listEpisodios.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
256 |
echo "medios.listEpisodios - Listar episodios de una serie" |
257 |
echo
|
|
258 |
echo -e "\tArgumentos: id de la serie" |
|
259 |
echo
|
|
260 |
echo "Mustra una lista de todos los episodios de la serie cuyo id" |
|
261 |
echo "se ha especificado como argumento." |
|
262 |
echo
|
|
263 |
echo "De cada episodio se dan los siguientes datos:" |
|
264 |
echo "id, idmedio, temporada, episodio, fichero, torrent, esvisto, esdescargado" |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
265 |
echo
|
266 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
267 |
echo -e "\tsintel -f medios.listEpisodios:871" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
268 |
}
|
269 |
||
7
by mhyst
Perfeccionando medios.getTitulo |
270 |
function medios.extractTe() { |
79
by mhyst
Probando nuevo sistema de control de argumentos |
271 |
[[ $# != 1 ]] && ( die $(iargs 1 "fichero") ) |
7
by mhyst
Perfeccionando medios.getTitulo |
272 |
local medio="$1" |
273 |
local te="" |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
274 |
local rem="" |
275 |
local aux="" |
|
7
by mhyst
Perfeccionando medios.getTitulo |
276 |
|
73
by mhyst
Mejora de extractTe: ahora reconoce episodios del tipo Cap.101 |
277 |
medio=$(basename "$medio") |
278 |
||
279 |
local EXPS=( '[0-9]{1,3}[xX][0-9]{1,4}' '[sS][0-9]{1,3}[eE][0-9]{1,4}' '[0-9]{1,3}[oO][fF][0-9]{1,4}' 'Cap.[0-9]{3}' ) |
|
7
by mhyst
Perfeccionando medios.getTitulo |
280 |
|
85
by mhyst
Corregidos errores en error, generic, medios y ver |
281 |
let i=0 |
7
by mhyst
Perfeccionando medios.getTitulo |
282 |
for exp in "${EXPS[@]}"; do |
283 |
te=$(grep -oE $exp <<< "$medio") |
|
284 |
if [[ "$te" != "" ]]; then |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
285 |
case "$i" in |
286 |
0 ) |
|
287 |
break
|
|
288 |
;;
|
|
289 |
1 ) |
|
290 |
aux=${te:1} |
|
291 |
rem=$(grep -oE '[eE]' <<< "$aux") |
|
292 |
$DEBUG && echo "rem: $rem" > /dev/tty |
|
293 |
aux=${aux/$rem/x} |
|
294 |
$DEBUG && echo "aux: $aux" > /dev/tty |
|
295 |
te="$aux" |
|
296 |
break
|
|
297 |
;;
|
|
298 |
2 ) |
|
299 |
rem=$(grep -oE '[oO][fF]' <<< $te) |
|
300 |
$DEBUG && echo "rem: $rem" > /dev/tty |
|
301 |
aux=${te/$rem/x} |
|
302 |
$DEBUG && echo "aux: $aux" > /dev/tty |
|
303 |
te="$aux" |
|
304 |
break
|
|
305 |
;;
|
|
73
by mhyst
Mejora de extractTe: ahora reconoce episodios del tipo Cap.101 |
306 |
3 ) |
307 |
rem=$(grep -oE '[0-9]{3}' <<< $te) |
|
308 |
te="${rem:0:1}x${rem:1:2}" |
|
309 |
;;
|
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
310 |
* )
|
311 |
echo "ERROR: Esto no debería suceder 2" > /dev/tty |
|
312 |
break
|
|
313 |
esac
|
|
7
by mhyst
Perfeccionando medios.getTitulo |
314 |
fi
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
315 |
(( i++ )) |
7
by mhyst
Perfeccionando medios.getTitulo |
316 |
done
|
317 |
||
318 |
echo "$te" |
|
319 |
}
|
|
320 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
321 |
function medios.extractTe.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
322 |
echo "medios.extractTe - Extrae la temporada y el episodio del nombre del fichero." |
323 |
echo
|
|
324 |
echo -e "\tArgumentos: ruta de fichero" |
|
325 |
echo
|
|
326 |
echo "Intenta extraer la temporada y el número de episodio del nombre del" |
|
327 |
echo "fichero que contiene el episodio." |
|
328 |
echo
|
|
329 |
echo "Puesto que los medios se descargan desde diferentes fuentes, los formatos" |
|
330 |
echo "en que están representados estos valores varían." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
331 |
echo
|
332 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
333 |
echo -e "\tsintel -n medios.extractTe:\"Elementary s07e01.mp4\"" |
334 |
echo -e "\tsintel -n medios.extractTe:\"Dark 01x04.mjv\"" |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
335 |
}
|
336 |
||
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
337 |
function medios.extractTe2() { |
338 |
[[ $# != 1 ]] && ( die $(iargs 1 "fichero") ) |
|
339 |
local medio="$1" |
|
340 |
local te="" |
|
341 |
||
342 |
medio=$(basename "$medio") |
|
343 |
||
344 |
local EXPS=( '[0-9]{1,3}[xX][0-9]{1,4}' '[sS][0-9]{1,3}[eE][0-9]{1,4}' '[0-9]{1,3}[oO][fF][0-9]{1,4}' 'Cap.[0-9]{3}' ) |
|
345 |
||
85
by mhyst
Corregidos errores en error, generic, medios y ver |
346 |
let i=0 |
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
347 |
for exp in "${EXPS[@]}"; do |
348 |
te=$(grep -oE $exp <<< "$medio") |
|
349 |
if [[ "$te" != "" ]]; then |
|
350 |
break
|
|
351 |
fi
|
|
352 |
(( i++ )) |
|
353 |
done
|
|
354 |
||
355 |
echo "$te" |
|
356 |
}
|
|
357 |
||
7
by mhyst
Perfeccionando medios.getTitulo |
358 |
function medios.fixTitulo() { |
79
by mhyst
Probando nuevo sistema de control de argumentos |
359 |
[[ $# != 1 ]] && ( die $(iargs 1 "fichero") ) |
7
by mhyst
Perfeccionando medios.getTitulo |
360 |
local medio="$*" |
361 |
||
362 |
medio="$(tr -d '[\[\]]' <<< $medio)" |
|
363 |
medio="$(tr -d '[\(\)]' <<< $medio)" |
|
364 |
||
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
365 |
local EXPS=( '[0-9]{1,3}[xX][0-9]{1,4}' '[sS][0-9]{1,3}[eE][0-9]{1,4}' '[0-9]{1,3}[oO][fF][0-9]{1,4}' '[hH][dD][tT][vV]' '[xX][vV][iI][dD]' '[dD][iI][vV][xX]' '[dD][vV][dD]' '[bB][dD][rR][iI][pP]' '[hH][dD][rR][iI][pP]' '[tT][sS]' '[sS][cC][rR][eE][eE][nN][eE][rR]' 'www.*.["com""net""es"]' ) |
7
by mhyst
Perfeccionando medios.getTitulo |
366 |
local f="" |
367 |
||
368 |
for exp in "${EXPS[@]}"; do |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
369 |
$DEBUG && echo "Exp: >$exp<" > /dev/tty |
7
by mhyst
Perfeccionando medios.getTitulo |
370 |
f=$(grep -oE "$exp" <<< "$medio") |
371 |
while [[ "$f" != "" ]]; do |
|
372 |
readarray -t af <<< "$f" |
|
373 |
for c in "${af[@]}"; do |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
374 |
$DEBUG && echo "F: >$c<" > /dev/tty |
7
by mhyst
Perfeccionando medios.getTitulo |
375 |
medio="${medio/$c/}" |
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
376 |
$DEBUG && echo "Medio: $medio" > /dev/tty |
7
by mhyst
Perfeccionando medios.getTitulo |
377 |
done
|
378 |
f=$(grep -oE "$exp" <<< "$medio") |
|
379 |
done
|
|
380 |
done
|
|
381 |
||
382 |
echo "$medio" |
|
383 |
}
|
|
384 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
385 |
function medios.fixTitulo.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
386 |
echo "medios.fixTitulo - Elimina partes innecesarias de un título." |
387 |
echo
|
|
388 |
echo -e "\tArgumentos: título" |
|
389 |
echo
|
|
390 |
echo "Reduce el título a nombre de serie temporada y episodo, eliminando" |
|
391 |
echo "todo lo superfluo." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
392 |
echo
|
393 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
394 |
echo -e "\tsintel -f medios.fixTitulo:\"Elementary 07of01 [Elitetorrent] [DVDRIP].mp4\"" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
395 |
}
|
396 |
||
1
by mhyst
Primer commit |
397 |
function medios.getTituloSerie() { |
79
by mhyst
Probando nuevo sistema de control de argumentos |
398 |
[[ $# != 1 ]] && ( die $(iargs 1 "fichero") ) |
1
by mhyst
Primer commit |
399 |
local medio="$1" |
400 |
||
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
401 |
# Extraemos el nombre del archivo sin su ruta
|
1
by mhyst
Primer commit |
402 |
local aux="${medio##*/}" |
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
403 |
# Eliminamos la extensión
|
404 |
aux="${aux%.*}" |
|
405 |
||
406 |
# Eliminamos todo a partir de temporadaxepisodio
|
|
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
407 |
local te=$(medios.extractTe2 "$aux") |
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
408 |
local aux2=${aux%%$te*} |
409 |
if [[ "$aux2" == "" ]]; then |
|
410 |
aux2="$aux" |
|
411 |
fi
|
|
412 |
||
413 |
# Eliminamos elementos no deseados del título
|
|
414 |
aux=$(medios.fixTitulo "$aux2") |
|
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
415 |
local stemporada=$(grep -oE 'Temporada [0-9]{1,2}' <<< $aux) |
416 |
aux2=${aux%%$stemporada*} |
|
417 |
if [[ "$aux2" == "" ]]; then |
|
418 |
aux2="$aux" |
|
419 |
fi
|
|
420 |
aux="$aux2" |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
421 |
|
422 |
# Trocamos posibles guiones bajos y puntos, en espacios
|
|
6
by mhyst
Mejora del interfaz de ver.serie y correcciones en medios.detectar |
423 |
aux=$(tr '_' ' ' <<< "$aux") |
424 |
aux=$(tr '.' ' ' <<< "$aux") |
|
7
by mhyst
Perfeccionando medios.getTitulo |
425 |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
426 |
# Eliminamos guiones
|
1
by mhyst
Primer commit |
427 |
aux=$(tr -d '-' <<< $aux) |
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
428 |
|
429 |
# Se devuelve el resultado
|
|
1
by mhyst
Primer commit |
430 |
echo $(trim "$aux") |
431 |
}
|
|
432 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
433 |
function medios.getTituloSerie.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
434 |
echo "medios.getTituloSerie - Obtiene el nombre de la serie." |
435 |
echo
|
|
436 |
echo -e "\tArgumentos: ruta de archivo" |
|
437 |
echo
|
|
438 |
echo "Reduce la ruta completa y nombre de un archivo de medio al" |
|
439 |
echo "título de la serie al que pertenece." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
440 |
echo
|
441 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
442 |
echo -e "\tsintel -f medios.getTituloSerie:\"/home/mhyst/Extra/Dead zone 1x08 [xVID].avi\"" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
443 |
}
|
444 |
||
1
by mhyst
Primer commit |
445 |
function medios.getTituloPelicula() { |
79
by mhyst
Probando nuevo sistema de control de argumentos |
446 |
[[ $# != 1 ]] && ( die $(iargs 1 "fichero") ) |
1
by mhyst
Primer commit |
447 |
local medio="$1" |
448 |
||
449 |
local aux="${medio##*/}" |
|
450 |
aux="${aux%.*}" |
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
451 |
|
452 |
# Eliminamos elementos no deseados del título
|
|
453 |
aux=$(medios.fixTitulo "$aux") |
|
1
by mhyst
Primer commit |
454 |
#aux="${aux%%[0-9]*}"
|
9
by mhyst
Nuevas mejoras en getTituloSerie y getTituloPelicula |
455 |
#aux="${aux%%(*}"
|
456 |
#aux="${aux%%[*}"
|
|
1
by mhyst
Primer commit |
457 |
# aux="${aux%%HDTV*}"
|
458 |
aux=$(tr '.' ' ' <<< $aux) |
|
459 |
aux=$(tr -d '-' <<< $aux) |
|
460 |
#aux=$(tr -d "'" <<< $aux)
|
|
461 |
echo $(trim "$aux") |
|
462 |
}
|
|
463 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
464 |
function medios.getTituloPelicula.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
465 |
echo "medios.getTituloPelicula - Obtiene el título de la película del nombre del fichero." |
466 |
echo
|
|
467 |
echo -e "\tArgumentos: fichero" |
|
468 |
echo
|
|
469 |
echo "Limpia el nombre del fichero de la ruta y todo lo superfluo, para" |
|
470 |
echo "obtener el título de la película." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
471 |
echo
|
472 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
473 |
echo -e "\tsintel -f medios.getTituloPelicula:\"Wonder [HDRip][VOSE][wWw.EliteTorrent.BiZ].mp4\"" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
474 |
}
|
475 |
||
1
by mhyst
Primer commit |
476 |
function medios.detectar() { |
477 |
local folder="$1" |
|
478 |
local re='[0-9]{1,2}x[0-9]{1,3}' |
|
479 |
local te="" |
|
480 |
local temporada="" |
|
481 |
local episodio="" |
|
482 |
local titulo="" |
|
483 |
local fichero="" |
|
484 |
local torrent="" |
|
485 |
local aux="" |
|
486 |
local id="" |
|
487 |
local epid="" |
|
488 |
||
489 |
if [ ! -d "$folder" ]; then |
|
490 |
echo "El directorio >$folder< no existe" |
|
491 |
exit
|
|
492 |
fi
|
|
493 |
cd "$folder" |
|
494 |
find * -name '*.avi' -o -name '*.mp4' -o -name '*.mkv' -type f | sort > /tmp/films.txt |
|
495 |
||
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
496 |
if [[ "${folder: -1}" != "/" ]]; then |
497 |
folder="$folder/" |
|
498 |
fi
|
|
499 |
||
1
by mhyst
Primer commit |
500 |
readarray -t datosa < /tmp/films.txt |
501 |
for medio in "${datosa[@]}"; do |
|
502 |
||
503 |
fichero="$folder$medio" |
|
504 |
||
7
by mhyst
Perfeccionando medios.getTitulo |
505 |
te=$(medios.extractTe "$medio") |
506 |
||
1
by mhyst
Primer commit |
507 |
if [[ "$te" != "" ]]; then |
508 |
titulo=$(medios.getTituloSerie "$medio") |
|
509 |
echo "Serie: $titulo" |
|
510 |
#Es una serie tenemos que crear la serie si no existe y crear el episodio correspondiente
|
|
511 |
#Extraemos el episodio y la temporada que es
|
|
512 |
IFS='x' read -a aux <<< "$te"; IFS=" " |
|
513 |
temporada="${aux[0]}" |
|
514 |
episodio="${aux[1]}" |
|
515 |
if [[ "$temporada" == "" ]] || [[ "$episodio" == "" ]]; then |
|
516 |
echo "ERROR: No se pudo obtener te2 en >$medio<"; continue; |
|
517 |
else
|
|
518 |
echo "Temporada: $temporada, Episodio: $episodio" |
|
519 |
fi
|
|
82
by mhyst
Corregidos errores en detectar, en ver.play y en ver.cache |
520 |
#id=$(series.getIdByTitulo "$titulo")
|
521 |
id=$(medios.determineSeries "$titulo") |
|
522 |
if [[ "$id" == "-1" ]]; then |
|
1
by mhyst
Primer commit |
523 |
#No existe, la creamos
|
81
by mhyst
Fix series.add with three arguments on medios.detect |
524 |
series.add "$titulo" |
1
by mhyst
Primer commit |
525 |
id="$ROWID" |
526 |
fi
|
|
527 |
||
528 |
$DEBUG && echo "Comprobando si el episodio existe" |
|
529 |
epid=$(series.getEpisodioId "$id" "$temporada" "$episodio") |
|
530 |
$DEBUG && echo "Comprobado $epid" |
|
531 |
if [[ "$epid" == "" ]]; then |
|
532 |
$DEBUG && echo "Intentando insertar episodio..." |
|
533 |
#Puesto que ya existe, añadimos el episodio
|
|
534 |
series.addEpisodio "$id" "$temporada" "$episodio" "$fichero" "-1" |
|
535 |
$DEBUG && echo "Intentado!" |
|
536 |
else
|
|
537 |
echo "Ep episodio ya está en la base de datos." |
|
538 |
fi
|
|
539 |
else
|
|
540 |
#Si es una película, simplemente añadimos la película
|
|
541 |
titulo=$(medios.getTituloPelicula "$medio") |
|
542 |
echo "Pelicula: $titulo" |
|
543 |
id=$(film.getByTitulo "$titulo") |
|
544 |
if [[ "$id" == "" ]]; then |
|
545 |
#No existe, la creamos
|
|
546 |
film.add "$titulo" "$fichero" "-1" |
|
547 |
id="$ROWID" |
|
548 |
else
|
|
549 |
echo "La película ya existe en la base de datos" |
|
6
by mhyst
Mejora del interfaz de ver.serie y correcciones en medios.detectar |
550 |
fi
|
1
by mhyst
Primer commit |
551 |
fi
|
552 |
done
|
|
553 |
}
|
|
554 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
555 |
function medios.detectar.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
556 |
echo "medios.detectar - Añade medios a la base de datos." |
557 |
echo
|
|
558 |
echo -e "\tArgumentos: ruta de carpeta" |
|
559 |
echo
|
|
560 |
echo "Escanea una carpeta y todos sus subdirectorios en busca de medios." |
|
561 |
echo "Es capaz de diferenciar las series de las películas." |
|
562 |
echo "Todo lo que encuentra lo añade a la base de datos." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
563 |
echo
|
564 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
565 |
echo -e "\tsintel -f medios.detectar:/home/mhyst/Descargas/" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
566 |
}
|
567 |
||
1
by mhyst
Primer commit |
568 |
#Determinar el id de la serie que estamos buscando.
|
569 |
#En algunos casos es posible que haya varias series con nombres similares.
|
|
570 |
#Esta función permitirá al usuario seleccionar entre ellas la que quiere.
|
|
571 |
function medios.determineSeries() { |
|
11
by mhyst
Búsquedas por varias palabras en llamadas a funciones (-f) |
572 |
local busqueda="$@" |
1
by mhyst
Primer commit |
573 |
|
85
by mhyst
Corregidos errores en error, generic, medios y ver |
574 |
local devueltos=($(series.find "$busqueda")) |
575 |
||
1
by mhyst
Primer commit |
576 |
if [[ ${#devueltos[@]} == 0 ]]; then |
577 |
echo "-1" |
|
578 |
exit
|
|
579 |
fi
|
|
580 |
||
581 |
if [[ ${#devueltos[@]} == 1 ]]; then |
|
85
by mhyst
Corregidos errores en error, generic, medios y ver |
582 |
#echo "Se devuelve solo uno?" > /dev/tty
|
1
by mhyst
Primer commit |
583 |
series.parse "${devueltos[0]}" |
83
by mhyst
Arreglado un bug en medios y en series |
584 |
|
1
by mhyst
Primer commit |
585 |
echo "${SERIE[id]}" |
586 |
else
|
|
6
by mhyst
Mejora del interfaz de ver.serie y correcciones en medios.detectar |
587 |
echo -e "\e[47m\e[31m Series coincidentes \e[0m\n" > /dev/tty |
83
by mhyst
Arreglado un bug en medios y en series |
588 |
local i=0 |
1
by mhyst
Primer commit |
589 |
for reg in "${devueltos[@]}"; do |
85
by mhyst
Corregidos errores en error, generic, medios y ver |
590 |
#echo "Antes del parse" > /dev/tty
|
1
by mhyst
Primer commit |
591 |
series.parse "$reg" |
85
by mhyst
Corregidos errores en error, generic, medios y ver |
592 |
#echo "Después del parse" > /dev/tty
|
6
by mhyst
Mejora del interfaz de ver.serie y correcciones en medios.detectar |
593 |
echo " $i: ${SERIE[titulo]}" > /dev/tty |
85
by mhyst
Corregidos errores en error, generic, medios y ver |
594 |
#echo "Antes del i++" > /dev/tty
|
595 |
((i=i+1)) |
|
596 |
#echo "Después del i++" > /dev/tty
|
|
1
by mhyst
Primer commit |
597 |
done
|
85
by mhyst
Corregidos errores en error, generic, medios y ver |
598 |
#echo "Antes del limite" > /dev/tty
|
1
by mhyst
Primer commit |
599 |
local LIMITE=$(( ${#devueltos[*]} - 1 )) |
85
by mhyst
Corregidos errores en error, generic, medios y ver |
600 |
#echo "Después del límite: $LIMITE" > /dev/tty
|
1
by mhyst
Primer commit |
601 |
local CHOSENID=$(userChoice $LIMITE "Seleccione la serie:") |
602 |
series.parse "${devueltos[$CHOSENID]}" |
|
603 |
echo "${SERIE[id]}" |
|
604 |
fi
|
|
605 |
}
|
|
606 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
607 |
function medios.determineSeries.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
608 |
echo "medios.determineSeries - Determinar el id de la serie por una cadena de búsqueda." |
609 |
echo
|
|
610 |
echo -e "\tArgumentos: cadena de búsqueda" |
|
611 |
echo
|
|
612 |
echo "Esta función hace uso de medios.find para tratar de determinar cual es el id" |
|
613 |
echo "de la serie a partir de una cadena de búsqueda." |
|
614 |
echo "En caso de haber varias posibilidades se le ofrece al usuario la elección." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
615 |
echo
|
616 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
617 |
echo -e "\tsintel -f medios.determineSeries:dark" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
618 |
}
|
619 |
||
1
by mhyst
Primer commit |
620 |
#Determinar si un episodio de una serie está ya descargado
|
621 |
function medios.isDownloaded () { |
|
79
by mhyst
Probando nuevo sistema de control de argumentos |
622 |
[[ $# != 2 ]] && ( die $(iargs 2 "id y te") ) |
53
by mhyst
Eliminado checkArgs por causar fallos |
623 |
|
1
by mhyst
Primer commit |
624 |
|
625 |
local id="$1" |
|
626 |
local te="$2" |
|
627 |
||
628 |
$DEBUG && echo "ID: $id, TE: $te" > /dev/tty |
|
629 |
||
69
by mhyst
Revisando medios.isDownloaded |
630 |
declare -a aux
|
68
by mhyst
Revisando medios.isDownloaded |
631 |
IFS='x' read -a aux <<< "$te" |
1
by mhyst
Primer commit |
632 |
temporada="${aux[0]}" |
633 |
episodio="${aux[1]}" |
|
68
by mhyst
Revisando medios.isDownloaded |
634 |
unset IFS
|
1
by mhyst
Primer commit |
635 |
if [[ "$temporada" == "" ]] || [[ "$episodio" == "" ]]; then |
69
by mhyst
Revisando medios.isDownloaded |
636 |
echo "ERROR: No se pudo obtener te2 en >$medio<" > /dev/tty |
637 |
echo "false" |
|
638 |
exit
|
|
1
by mhyst
Primer commit |
639 |
fi
|
640 |
||
641 |
if [[ "$id" == "" ]] || [[ "$id" == "-1" ]]; then |
|
69
by mhyst
Revisando medios.isDownloaded |
642 |
echo "ERROR: No se pudo determinar el id de la serie: $serie" > /dev/tty |
643 |
echo "false" |
|
644 |
exit
|
|
1
by mhyst
Primer commit |
645 |
fi
|
646 |
||
647 |
local epid=$(series.getEpisodioId "$id" "$temporada" "$episodio") |
|
69
by mhyst
Revisando medios.isDownloaded |
648 |
|
1
by mhyst
Primer commit |
649 |
if [[ "$epid" == "" ]]; then |
69
by mhyst
Revisando medios.isDownloaded |
650 |
echo "false" |
651 |
exit
|
|
1
by mhyst
Primer commit |
652 |
else
|
69
by mhyst
Revisando medios.isDownloaded |
653 |
local reg=$(series.getEpisodioById "$epid") |
654 |
||
655 |
if [[ "$reg" == "" ]]; then |
|
656 |
echo "ERROR: No se pudo obtener el episodio por el ID obtenido" |
|
657 |
echo "false" |
|
658 |
exit
|
|
659 |
fi
|
|
660 |
series.parse "$reg" |
|
661 |
if [[ "${SERIE[fichero]}" == "" ]]; then |
|
662 |
echo "false" |
|
663 |
else
|
|
664 |
echo "true" |
|
665 |
fi
|
|
1
by mhyst
Primer commit |
666 |
fi
|
667 |
}
|
|
668 |
||
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
669 |
function medios.isDownloaded.info() { |
30
by mhyst
Documentando funciones 19/07/2019 |
670 |
echo "medios.isDowloaded - Averigua si de una serie tenemos descargado un episodio concreto." |
671 |
echo
|
|
672 |
echo -e "\tArgumentos: id, te" |
|
673 |
echo
|
|
674 |
echo "id es el id de la serie, mientras que te es la temporada y el episodio expresados" |
|
675 |
echo "como temporadaxepisodio de forma númérica. Ej.: 01x03." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
676 |
echo
|
677 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
678 |
echo -e "\tsintel -n medios.isDownloaded:\"871|10x07\"" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
679 |
}
|
680 |
||
1
by mhyst
Primer commit |
681 |
#Determinar si un episodio de una serie está ya descargado
|
682 |
function medios.isDownloaded2 () { |
|
79
by mhyst
Probando nuevo sistema de control de argumentos |
683 |
[[ $# != 2 ]] && ( die $(iargs 2 "título y te") ) |
53
by mhyst
Eliminado checkArgs por causar fallos |
684 |
|
1
by mhyst
Primer commit |
685 |
|
686 |
local serie="$1" |
|
687 |
local te="$2" |
|
688 |
||
689 |
IFS='x' read -a aux <<< "$te"; IFS=" " |
|
690 |
temporada="${aux[0]}" |
|
691 |
episodio="${aux[1]}" |
|
692 |
if [[ "$temporada" == "" ]] || [[ "$episodio" == "" ]]; then |
|
693 |
echo "ERROR: No se pudo obtener te2 en >$medio<" > /dev/tty |
|
694 |
echo "-1" |
|
695 |
exit
|
|
696 |
fi
|
|
697 |
||
698 |
local id=$(medios.determineSeries "$serie") |
|
699 |
||
700 |
if [[ "$id" != "" ]] && [[ "$id" != "-1" ]]; then |
|
701 |
echo "ERROR: No se pudo determinar el id de la serie: $serie" > /dev/tty |
|
702 |
echo "-1" |
|
703 |
exit
|
|
704 |
fi
|
|
705 |
||
706 |
local epid=$(series.getEpisodioId "$id" "$temporada" "$episodio") |
|
707 |
||
708 |
if [[ "$epid" == "" ]]; then |
|
709 |
echo "false" |
|
710 |
exit
|
|
711 |
else
|
|
712 |
local reg=$(series.getEpisodioById "$epid") |
|
713 |
if [[ "$reg" == "" ]]; then |
|
714 |
echo "ERROR: No se pudo obtener el episodio por el ID obtenido" |
|
715 |
echo "-1" |
|
716 |
exit
|
|
717 |
fi
|
|
718 |
series.parse "$reg" |
|
719 |
if [[ "${SERIE[fichero]}" == "" ]]; then |
|
720 |
echo "false" |
|
721 |
else
|
|
722 |
echo "true" |
|
723 |
fi
|
|
724 |
fi
|
|
6
by mhyst
Mejora del interfaz de ver.serie y correcciones en medios.detectar |
725 |
}
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
726 |
|
727 |
function medios.isDownloaded2.info() { |
|
30
by mhyst
Documentando funciones 19/07/2019 |
728 |
echo "medios.isDownloaded2 - Determina si cierto episodio de una serie está descargado." |
729 |
echo
|
|
730 |
echo -e "\tArgumentos: titulo, te" |
|
731 |
echo
|
|
732 |
echo "Esta función es idéntica a 'medios.isDownloaded' salvo que esta permite" |
|
733 |
echo "indicar el título de la serie en lugar de su id. Usa una llamada a " |
|
734 |
echo "medios.determineSeries para obtener el id de la serie." |
|
735 |
echo
|
|
736 |
echo "te es la temporada y el episodio separados por una x." |
|
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
737 |
echo
|
738 |
echo "Ejemplos:" |
|
30
by mhyst
Documentando funciones 19/07/2019 |
739 |
echo -e "\tsintel -n medios.isDownloaded2:\"poirot|10x03\"" |
29
by mhyst
Escribiendo la documentación de las funciones 17/07/2019 |
740 |
}
|