#!/usr/bin/env zsh

# Variables

cpu_quota="900%"
user_detect=$(whoami)
default_lang_subt="spa"
subtitles_file="/tmp/ffplay-subs.srt"

# Detect stream
typeset -a ffplay_args
ffplay_args=(/usr/bin/ffplay)

for parameter in "$@"; do
  if [[ $parameter == *http://* || $parameter == *https://* ]]; then
    ffplay_args+=(
      -sync audio
      -reconnect 1
      -reconnect_streamed 1
      -reconnect_at_eof 1
      -reconnect_on_network_error 1
      -reconnect_delay_max 5
    )
    break
  fi
done

# Function to extract subtitles
extract_subtitles() {
  file_to_extract="${1}"
  map_to_extract="${2}"
  if [[ -f "/usr/bin/zenity" ]] ; then
    zenity --progress --title="ffplay" --text="Processing multimedia file..." --pulsate --no-cancel & PID_ZENITY=$!
    ffmpeg -y -i "${1}" -map ${2} ${subtitles_file}
    kill "$PID_ZENITY" 2>/dev/null
  else
    ffmpeg -y -i "${1}" -map ${2} ${subtitles_file}
  fi
  if [[ -f "/usr/bin/ks-utfs" ]] ; then
    ks-utfs "${subtitles_file}"
  fi
  touch "${subtitles_file}"
}

for parameter in "${@}"; do
  if [[ -f "${parameter}" ]]; then
    file_detect="${parameter}"
  fi
done

# Check if file have subtitles
subtitles_exist="no"
if [[ -f "${file_detect}" ]] ; then
  subtitles_detect=$(ffprobe "${file_detect}" 2>&1 | grep Stream | tr -s " " | grep "Subtitle:" | grep "(${default_lang_subt})" | grep "(forced)" | cut -d " " -f 3 | cut -c2-5 | cut -d "(" -f 1 | cut -d "[" -f 1 | head -1)
  if [[ ! -z "${subtitles_detect}" ]] ; then
    subtitles_exist="yes"
    extract_subtitles "${file_detect}" "${subtitles_detect}"
  fi
fi

# Run previous information
"${ffplay_args[@]}" -version | head -2 ; print ""

# Run process with CPU Quota
if [[ "${user_detect}" == "root" ]] ; then
  if [[ "${subtitles_exist}" == "yes" ]] ; then
    systemd-run --quiet --scope -p CPUQuota=${cpu_quota} "${ffplay_args[@]}" -hide_banner -vf subtitles=${subtitles_file} "${@}"
  else
    systemd-run --quiet --scope -p CPUQuota=${cpu_quota} "${ffplay_args[@]}" -hide_banner "${@}"
  fi
else
  if [[ "${subtitles_exist}" == "yes" ]] ; then
    systemd-run --user --quiet --scope -p CPUQuota=${cpu_quota} "${ffplay_args[@]}" -hide_banner -vf subtitles=${subtitles_file} "${@}"
  else
    systemd-run --user --quiet --scope -p CPUQuota=${cpu_quota} "${ffplay_args[@]}" -hide_banner "${@}"
  fi
fi
