#!/bin/bash

# Obtenemos el número de parámetros recibidos: %F son el número de rutas absolutas de los archivos seleccionados
NUMPARAM=$#
# Creamos una lista con los parámetros recibidos $@.  El primer parametro es el ${PARAM[0]} ...  ${PARAM[*]} sería todos
# La mitad de los parametros recibidos son las rutas absolutas de los archivos, y la otra mitad son sus extensiones
declare -a PARAM
PARAM=($@)
RESULTADO=""
DIRECTORIOBASE=$(dirname "$1")

CONTADOR=0

# 1) Obtenemos con xrandr la resolución de la salida principal (primary):
# xrand | grep primary => eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
RESOLUCION="$(xrandr | awk '/ primary / {print $4}' | cut -d+ -f1)" # Formato: 1920x1080+0+0

ANCHO="$(cut -d"x" -f1 <<< "${RESOLUCION}")"
ALTO="$(cut -d"x" -f2 <<< "${RESOLUCION}")"
echo "#> Resolución Pantalla principal: ${ANCHO} x ${ALTO}"
MARGEN="45"

until [ -z "${1}" ] ; do
    # 0) Obtenemos la relación de aspecto del vídeo para prefijar las dimensiones de salida:
    RELACIONASPECTOVIDEO="$( ffprobe -v error -select_streams v:0 \
        -show_entries stream=width,height \
    -of csv=p=0:s=x "${1}")" # Formato salida: 854x480
    ANCHO_VIDEO="${RELACIONASPECTOVIDEO%x*}"
    ALTO_VIDEO="${RELACIONASPECTOVIDEO#*x}"
    RELACIONASPECTOVIDEO=$(awk "BEGIN {print $ANCHO_VIDEO / $ALTO_VIDEO}")
    echo "#> Relación de aspecto de $(basename "$1"): ${ANCHO_VIDEO}x${ALTO_VIDEO} => ${RELACIONASPECTOVIDEO}"
    # El punto medio entre: 4:3 = 1.3333 y 16:9 = 1.7778 es aproximadamente:
    # (1.3333 + 1.7778) / 2 ≈ 1.5555
    # 1) Para evitar el comando bc hacemos uso de awk para determinar las dimensiones de salida:
    if awk "BEGIN {exit !($RELACIONASPECTOVIDEO < 1.55)}"; then
        # Resolución apropiada de 4x3
        DIMENSIONVIDEOANCHO="240"
        DIMENSIONVIDEOALTO="180"
    else
        # Resolución apropiada de 16x9
        DIMENSIONVIDEOANCHO="240"
        DIMENSIONVIDEOALTO="135"
    fi
    GEOMETRIA="${DIMENSIONVIDEOANCHO}x${DIMENSIONVIDEOALTO}+$(echo "($ANCHO - $DIMENSIONVIDEOANCHO - $MARGEN)" | bc)+$(echo "($ALTO - $DIMENSIONVIDEOALTO - $MARGEN)" | bc)"
    echo "#> Dimensiones y posición de ventana reproductora: ${GEOMETRIA}"
    # Si quisieramos el vídeo sin audio: --no-audio
    COMANDO="mpv --no-border --ontop --fps=15 --geometry=\"${GEOMETRIA}\" \"$1\""
    echo "#> El comando que se va a ejecutar es: ${COMANDO}"
    eval "${COMANDO}"
    shift
done

exit 0
