#!/bin/bash

#########################################
#	a3Downloader2.sh					#
#	aabilio@gmail.com					#
#	http://en.wikipedia.org/wiki/WTFPL 	#
#########################################
	
# No "valida" ningún dato, si hay error no devuelve info sobre el mismo.
# Válido mientras mantengan la mismas estructura de vídeos y URLs en el servidor.

#No modificar, servidores de a3 para web y videos:
servidorDescarga="http://desprogresiva.antena3.com/"
servidorAntena3="http://www.antena3.com"
HTML=`echo $1`

clear

function fun_descargaHtml()
{
	#Descarga la url pasada por parametro, la del cap.:
	echo '[+] Descargando '$HTML'...'
	sleep 1.5
	wget -nv $HTML
	echo ''
}

function fun_descargaXML() 
{
	#Descargar xml:
	echo '[+] Descargando ' $nombreXML'...'
	sleep 1.5
	wget -nv $servidorAntena3$XML
	echo ''
}

function fun_borrar()
{
	sleep 1.5
	find . -maxdepth 1 -name "*.html*" -exec rm {} \;
	find . -maxdepth 1 -name "*.xml*" -exec rm {} \;
	#find . -name "*.mp4*" -exec rm {} \;
	echo ''
}

function fun_series()
{
	fun_descargaHtml
	
	#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
	nombreHTML=`echo $HTML | cut -d. -f2-4 | cut -d\/ -f5`
	XML=`cat $nombreHTML | grep "so.addVariable(\"xml\"" | cut -d\" -f4`
	nombreXML=`echo $XML | cut -d/ -f8`

	fun_descargaXML

	#Establecer datos de la serie:
	serie=`echo $HTML | cut -d/ -f5`
	capitulo=`echo $nombreHTML | cut -d\- -f2 | cut -d. -f1`
	temporada=`echo $HTML | cut -d\/ -f6 | cut -d\- -f2`

	#Mostrar datos de la serie
	echo ''
	echo -e '\033[38;5;148m============================================\033[39m'
	echo -e '\033[38;5;148mSerie : \033[39m"'$serie'"'
	echo -e '\033[38;5;148mCap   : \033[39m"'$capitulo'"'
	echo -e '\033[38;5;148mTemp  : \033[39m"'$temporada'"'
	echo ''
	echo -e '\033[38;5;148mSe descargarán las partes: \033[39m'
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$serie'-'$temporada'x'$capitulo'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo $nombreMp4" ($i)"
	done
	echo -e '\033[38;5;148m============================================\033[39m'
	echo ''
	echo ''
	sleep 4
	
	#Sacar caps de .xml y descargar los caps.:
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$serie'-'$temporada'x'$capitulo'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo -e "[+] \033[38;5;148mDescargando: "$nombreMp4"\033[39m ($i)"
		wget $servidorDescarga$i -O $nombreMp4
		echo ''
	done
}

function fun_programa() 
{
	fun_descargaHtml

	#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
	nombreHTML=`echo $HTML | cut -d/ -f6`
	XML=`cat $nombreHTML | grep "so.addVariable(\"xml\"" | cut -d\" -f4`
	nombreXML=`echo $XML | cut -d/ -f8`

	fun_descargaXML

	#Establecer datos de la serie:
	programa=`echo $HTML | cut -d/ -f5`
	fecha=`echo $nombreHTML | cut -d. -f1`

	#Mostrar datos del programa
	echo ''
	echo -e '\033[38;5;148m============================================\033[39m'
	echo -e '\033[38;5;148mPrograma : \033[39m"'$programa'"'
	echo -e '\033[38;5;148mFecha    : \033[39m"'$fecha'"'
	echo ''
	echo -e '\033[38;5;148mSe descargarán las partes: \033[39m'
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$programa'-'$fecha'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo $nombreMp4" ($i)"
	done
	echo -e '\033[38;5;148m============================================\033[39m'
	echo ''
	echo ''
	sleep 4
	
	#Sacar caps de .xml y descargar los caps.:
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$programa'-'$fecha'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo -e "[+] \033[38;5;148mDescargando: "$nombreMp4"\033[39m ($i)"
		wget $servidorDescarga$i -O $nombreMp4
		echo ''
	done
}

function fun_noticias()
{
	fun_descargaHtml

	#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
	nombreHTML=`echo $HTML | cut -d/ -f6`
	XML=`cat $nombreHTML | grep "so.addVariable(\"xml\"" | cut -d\" -f4`
	nombreXML=`echo $XML | cut -d/ -f7`

	fun_descargaXML

	#Establecer datos de la serie:
	nombre=`echo $HTML | cut -d/ -f6 | cut -d\- -f1`
	hora=$(echo `echo $nombreHTML | cut -d. -f1 | cut -d\- -f2`':00')

	#Mostrar datos
	echo ''
	echo -e '\033[38;5;148m============================================\033[39m'
	echo -e '\033[38;5;148mNombre : \033[39m"'$nombre'"'
	echo -e '\033[38;5;148mHora   : \033[39m"'$hora'"'
	echo ''
	echo -e '\033[38;5;148mSe descargarán las partes: \033[39m'
	for i in `cat *.xml | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$nombre'-'$hora'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo $nombreMp4" ($i)"
	done
	echo -e '\033[38;5;148m============================================\033[39m'
	echo ''
	echo ''
	sleep 4

	#Sacar caps de .xml y descargar los caps.:
	for i in `cat *.xml | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$nombre'-'$hora'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo -e "[+] \033[38;5;148mDescargando: "$nombreMp4"\033[39m ($i)"
		wget $servidorDescarga$i -O $nombreMp4
		echo ''
	done	
}

function fun_tvmovie()
{
	fun_descargaHtml

	#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
	nombreHTML=`echo $HTML | cut -d. -f2-4 | cut -d\/ -f5`
	XML=`cat $nombreHTML | grep "so.addVariable(\"xml\"" | cut -d\" -f4`
	nombreXML=`echo $XML | cut -d/ -f8`

	fun_descargaXML

	#Establecer datos de la serie:
	tvmovie=`echo $HTML | cut -d/ -f6`
	capitulo=`echo $nombreHTML | cut -d\- -f2 | cut -d. -f1`

	#Mostrar datos de la tv-movie
	echo ''
	echo -e '\033[38;5;148m============================================\033[39m'
	echo -e '\033[38;5;148mTV Movie : \033[39m"'$tvmovie'"'
	echo -e '\033[38;5;148mCapitulo : \033[39m"'$capitulo'"'
	echo ''
	echo -e '\033[38;5;148mSe descargarán las partes: \033[39m'
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$tvmovie'-cap0'$capitulo'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo $nombreMp4" ($i)"
	done
	echo -e '\033[38;5;148m============================================\033[39m'
	echo ''
	echo ''
	sleep 4
	
	#Sacar caps de .xml y descargar los caps.:
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$tvmovie'-cap0'$capitulo'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo -e "[+] \033[38;5;148mDescargando: "$nombreMp4"\033[39m ($i)"
		wget $servidorDescarga$i -O $nombreMp4
		echo ''
	done	
}

function fun_3d()
{
	OPC2=`echo $HTML | cut -d/ -f6`
	fun_descargaHtml

	if [ $OPC2 = 'eres-fan' ]
	then
		#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
		nombreHTML=`echo $HTML | cut -d. -f2-4 | cut -d\/ -f6`
	else
		#Establecer nombre de archivos (mejorar esto ¿sed y awk?):
		nombreHTML=`echo $HTML | cut -d. -f2-4 | cut -d\/ -f5`
	fi

	XML=`cat $nombreHTML | grep ".addVariable(\"xml\"" | cut -d\" -f4`

	if [ $OPC2 = 'eres-fan' ]
	then
		nombreXML=`echo $XML | cut -d/ -f10`
	else
		nombreXML=`echo $XML | cut -d/ -f9`
	fi

	fun_descargaXML
	
	if [ $OPC2 = 'eres-fan' ]
	then
		#Establecer datos de la serie:
		programa='3d-eres-fan'
		seccion=`echo $HTML | cut -d/ -f7`
		video=`echo $nombreHTML | cut -d. -f1 | cut -d_ -f1`
	else
		#Establecer datos de la serie:
		programa=`echo $HTML | cut -d/ -f5`
		seccion=`echo $HTML | cut -d/ -f6`
		video=`echo $nombreHTML | cut -d. -f1 | cut -d_ -f1`
	fi

	#Mostrar datos del programa 3D
	echo ''
	echo -e '\033[38;5;148m============================================\033[39m'
	echo -e '\033[38;5;148mNombre  : \033[39m"'$programa'"'
	echo -e '\033[38;5;148mSección : \033[39m"'$seccion'"'
	echo -e '\033[38;5;148mVídeo   : \033[39m"'$video'"'
	echo ''
	echo -e '\033[38;5;148mSe descargarán las partes: \033[39m'
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$programa'_'$seccion'_'$video'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo $nombreMp4" ($i)"
	done
	echo -e '\033[38;5;148m============================================\033[39m'
	echo ''
	echo ''
	sleep 4
	
	#Sacar caps de .xml y descargar los caps.:
	for i in `cat $nombreXML | grep .mp4 | cut -d[ -f3 | cut -d] -f1`
	do
		nombreMp4=$programa'_'$seccion'_'$video'_parte'`echo $i | cut -d. -f1 | cut -d/ -f6`'.mp4'
		echo -e "[+] \033[38;5;148mDescargando: "$nombreMp4"\033[39m ($i)"
		wget $servidorDescarga$i -O $nombreMp4
		echo ''
	done	
}

######################################################################################################

#Presentacion:
echo '==================================='
echo '| Descargar vídeos de Antena3.com |'
echo '==================================='
echo ''

#Borra antiguos .html, .xml y .mp4 (videos) que molesten:
echo '[+] Borrando archivos antiguos'
fun_borrar

OPC=`echo $HTML | cut -d/ -f5`

#BIFURCAR:
if [ $OPC = 'tv-movies' ]
then
	echo -e '\033[38;5;148m[i] Se descargará una TV Movie\033[39m'
	echo ''
	fun_tvmovie
elif [ $OPC = 'noticias' ]
then
	echo -e '\033[38;5;148m[i] Se descargarán noticias\033[39m'
	echo ''
	fun_noticias
elif [ $OPC == '3d' ]
then
	echo -e '\033[38;5;148m[i] Se descargará un vídeo de "3d"\033[39m'
	echo ''
	fun_3d
else
	for i in "el-internado" "los-protegidos" "fisica-o-quimica" "doctor-mateo" "karabudjan" "gavilanes" "los-hombres-de-paco"
	do
		if [ $OPC = $i ]
		then
			echo -e '\033[38;5;148m[i] Se descargará una serie\033[39m'
			echo ''
			fun_series
		fi
	done
	
	for i in "el-diario" "el-club-del-chiste" "informe-dec" "esta-casa-era-una-ruina" "el-secreto" "panico-en-el-plato" "curso-del-63"
	do
		if [ $OPC = $i ]
		then
			echo -e '\033[38;5;148m[i] Se descargará un programa\033[39m'
			echo ''
			fun_programa
		fi
	done
fi



#Borra antiguos .html, .xml que molesten:
echo '[+] Borrando archivos temporales'
fun_borrar

echo -e '[FIN] \033[38;5;148mDescargas Finalizadas\033[39m'

##TODO: (1) Convertir a otros formatos tras descarga..
##		(2) "Validar" datos..
##		(3) Cuidado con find para borrar..

