#!/bin/sh
#author:Wos
#hifi music terminal
#resource from https://www.hifini.net/
WORK_DIR=$(dirname $0)
HIFIJS=${WORK_DIR}/hifi.js
HTMP="/tmp/hifi.html"
TTMP="/tmp/hifi_title.txt"
LTMP="/tmp/hifi_link.txt"
DOMAIN="https://www.hifini.net/search-"
KW=$@
#Use a temporary email address to register an account, and after logging in, assign the entire cookie to the variable CK.
CK=""
PG=1
_KW=$(node -e 'require("'${HIFIJS}'").urlencode("'${KW}'")')
function logo()
{
    echo -e "\033[96;40m"
    base64 -d <<<"H4sIAAAAAAAAA5WOsRHAMAgDe6ZQm4ptUnHHIgwfSTgDGOMzWG+ZbpxoxR5uvdWsoB2FWji5GpW6
HmB2kRo7uAoIzzIsveRRpsnNpv6RGKD0gplHJ/1Y0ixL4/+MNO2SCdumaDX7cjzDyFpV4CbiA1rSlIMUAQAA"|gunzip
    echo -e "     Resource Site:"${DOMAIN%/*}
    echo -e "\033[0m"
}

function usage(){
   logo
   echo  "usage:`basename $0` [keyword]"
   echo ""
   exit -1
}

if [ $# == 0 ]; then
   usage
elif [ $# == 1 ] && [ $1 == "-h" ];then
   usage
fi

function getlink(){
LINK=${DOMAIN}${_KW}"-1-1-"${PG}".htm"
while :;
do
curl -s ${LINK} > ${HTMP}
cat ${HTMP} |grep "href=\"thread"|grep -E "FLAC-|FLAC/MP3-320K"|grep -v "media thread tap"|awk -F\" '{print $7}'|awk -F\/a\> '{print $1}'|sed -e 's/<\/span>//g'|grep -v -E "专辑|.dsf|live|Live|合集" > ${TTMP}
cat ${HTMP} |grep "href=\"thread"|grep -E "FLAC-|FLAC/MP3-320K"|grep -v "media thread tap"|grep -v -E "专辑|.dsf|live|Live|合集"|awk -F\" '{print $4}' > ${LTMP}
if [ -s "${TTMP}" ]; then
    break
fi
done
}

getlink

while :;
do
clear
logo
echo -ne "\033[?25h"
nl ${TTMP}
echo -e "\033[96;40m"
echo -e "    [^c:Exit,-1:Pre Page,Enter:Next Page,sp:Sequential,rp:Random]"
read -e -r -p "    Selelct Resource ID or playmode or Search:" input
echo -e "\033[0m"
NUM=$(cat ${TTMP}|wc -l)
echo -ne "\033[?25l"
if [[ $input =~ ^-?[0-9]+$ ]] && (( $input > 0 && $input <= $NUM )); then
    echo -e "\033[93;40m"
    echo -e "    ( m:🔇 9:🔈 0:🔊 q:back, space:⏯  up:⏩)\033[0m"
    LINK2=${DOMAIN%/*}"/"$(sed -n "${input}p" "${LTMP}")""
    curl -s ${LINK2} > ${HTMP}
    LINK3=$(cat ${HTMP}|grep -E "mp3|m4a"|awk -F\" '{print $2}')
    mpv --loop=inf --really-quiet --vid=no --http-header-fields='Referer: https://www.hifini.net/' "${LINK3}"
elif [[ "$input" == "sp" ]]; then
    echo -e "\033[93;40m"
    echo -e "    ( m:🔇 9:🔈 0:🔊 q:Next Sound, space:⏯  up:⏩ ^c:back)\033[0m"
    while IFS= read -r line
    do
    echo -ne "\033[?25l"
    LINK2=${DOMAIN%/*}"/"${line}
    curl -s ${LINK2} > ${HTMP}
    LINK3=$(cat ${HTMP}|grep -E "mp3|m4a"|awk -F\" '{print $2}')
    mpv --really-quiet --vid=no --http-header-fields='Referer: https://www.hifini.net/' "${LINK3}"
    if [ $? != 0 ]; then
        break 
    fi
    done < "${LTMP}"
elif [[ "$input" == "rp" ]]; then
    echo -e "\033[93;40m"
    echo -e "    ( m:🔇 9:🔈 0:🔊 q:Next Sound, space:⏯  up:⏩ ^c:back)\033[0m"
    while IFS= read -r line
    do
    echo -ne "\033[?25l"
    LINK2=${DOMAIN%/*}"/"${line}
    curl -s ${LINK2} > ${HTMP}
    LINK3=$(cat ${HTMP}|grep -E "mp3|m4a"|awk -F\" '{print $2}')
    mpv --really-quiet --vid=no --http-header-fields='Referer: https://www.hifini.net/' "${LINK3}"
    if [ $? != 0 ]; then
        break 
    fi
    done < <(shuf "${LTMP}")
elif [[ -z "$input" ]]; then
    PG=$(($PG+1))
    getlink
    continue
elif [[ "$input" == "-1" ]]; then
    if [[ $PG > 1 ]]; then
        PG=$((($PG)-1))
    else
        PG=1
    fi
    getlink
    continue
else
    KW=$input
    _KW=$(node -e 'require("'${HIFIJS}'").urlencode("'${KW}'")')
    PG=1
    getlink
    continue
fi
done