shell-host/modules/chromium/widevine-install.sh

72 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# -eux
function confirm()
{
echo -n "$@ "
read -e answer
for response in y Y yes YES Yes Sure sure SURE OK ok Ok
do
if [ "_$answer" == "_$response" ]
then
return 0
fi
done
# Any answer other than the list above is considered a "no" answer
return 1
}
function widevine_install {
_chrome_ver=$( /usr/bin/chromium -version | grep -oP '(?<=Chromium )[^ ]*')
_l_target_dir=~/.local/lib/WidevineCdm
_target_dir=/usr/lib/chromium/WidevineCdm
_sudo="sudo"
if [[ "${1}" == "-l" ]]; then
_sudo=""
_target_dir=$_l_target_dir
shift
fi
echo "install widevineCDM for chromium version $_chrome_ver"
echo "into $_target_dir"
confirm "confirm (y/n)" || exit
_temp=/tmp/chromium_widevine
echo using $_temp to download deb and extract widevine
mkdir -p $_temp || exit &> /dev/null
pushd $_temp &> /dev/null || exit
# Download deb, which has corresponding Widevine version
# Support resuming partially downloaded (or skipping re-download) with -c flag
if [[ "${1}" == "-u" ]]; then
_un="un"
fi
_url=https://dl.google.com/linux/deb/pool/main/g/google-chrome-${_un}stable/google-chrome-${_un}stable_${_chrome_ver}-1_amd64.deb
echo downloading $_url
wget -c $_url || exit
# Unpack deb
rm -r unpack_deb &> /dev/null || true
mkdir -p unpack_deb
echo extracting package...
dpkg-deb -R google-chrome-stable_${_chrome_ver}-1_amd64.deb unpack_deb || exit
echo removing any old WidevineCDM installs at $_target_dir
$_sudo rm -r $_target_dir &> /dev/null || true
echo moving WidevineCDM to target $_target_dir
$_sudo mv unpack_deb/opt/google/chrome/WidevineCdm $_target_dir &> /dev/null || exit
[[ $_sudo ]] && $_sudo chown -R root:root $_target_dir
echo done, removing $_temp
rm -r $_temp &> /dev/null || true
popd &> /dev/null
}
# if script was executed then call the function
(return 0 2>/dev/null) || widevine_install $@