#!/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