82 lines
2.4 KiB
Bash
Executable File
82 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# gdead - Stream shows from archive.org
|
|
# Copyright © 2021-2022 Keith Irwin (www.ki9.us)
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
# Vars
|
|
UA="gdead/curl/bash;https://gitea.gf4.pw/ki9/gdead"
|
|
|
|
# Parse params
|
|
SHOW_DATE=""
|
|
SORT="sort%5B%5D=num_favorites+asc&sort%5B%5D=avg_rating+asc&sort%5B%5D=num_reviews+asc"
|
|
SBD="+AND+subject%3A%28soundboard%29"
|
|
while (( "$#" )); do
|
|
case "$1" in
|
|
-a|--aud|--audience)
|
|
SBD=""; shift;;
|
|
-r|--rand|--random)
|
|
SORT="sort%5B%5D=random+asc"; shift;;
|
|
-g|--gui)
|
|
GUI='true'; shift;;
|
|
*)
|
|
SHOW_DATE="$SHOW_DATE $1"; shift;;
|
|
esac
|
|
done
|
|
|
|
# Parse show date
|
|
YYYY="$(echo ${SHOW_DATE} | awk '{print $1}')"
|
|
MM="$(echo ${SHOW_DATE} | awk '{print $2}')"
|
|
DD="$(echo ${SHOW_DATE} | awk '{print $3}')"
|
|
YYYY1="1900"; YYYY2="2020"
|
|
MM1="01"; MM2="12"
|
|
DD1="01"; DD2="31"
|
|
if [ "${YYYY}" != "" ]; then
|
|
YYYY1="${YYYY}"; YYYY2="${YYYY}"
|
|
if [ "${MM}" != "" ]; then
|
|
MM1="${MM}"; MM2="${MM}"
|
|
if [ "${DD}" != "" ]; then
|
|
DD1="${DD}"; DD2="${DD}"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Metadata search URL
|
|
URL="https://archive.org/advancedsearch.php?q=collection%3A%28GratefulDead%29${SBD}\
|
|
+AND+date%3A%5B${YYYY1}-${MM1}-${DD1}+TO+${YYYY1}-${MM2}-${DD2}%5D\
|
|
&fl%5B%5D=identifier\
|
|
&${SORT}&rows=1&page=1&output=json&callback=c&save=yes#raw"
|
|
|
|
# Metadata search
|
|
res=$(curl --user-agent "${UA}" --silent "${URL}" | cut -c 3- | head -c-2 | jq -r '.response.docs[0].identifier')
|
|
if [ "${res}" == "" ]; then
|
|
printf 'FATAL: Could not connect to archive.org\n'
|
|
exit 4
|
|
fi
|
|
|
|
if [ "${res}" == "null" ]; then
|
|
printf 'No shows found for %s\n' "${SHOW_DATE}"
|
|
exit 5
|
|
fi
|
|
|
|
# Stream it...
|
|
stream="https://archive.org/download/${res}/${res}_vbr.m3u"
|
|
if [ "${GUI}" == "true" ]; then
|
|
vlc --http-user-agent "${UA}" --qt-system-tray "${stream}"
|
|
else
|
|
nvlc --play-and-exit --http-user-agent "${UA}" "${stream}"
|
|
fi
|