diff --git a/scripts/fix-opera.sh b/scripts/fix-opera.sh index 641a313..f059b62 100755 --- a/scripts/fix-opera.sh +++ b/scripts/fix-opera.sh @@ -31,7 +31,7 @@ fi #Config section readonly FIX_WIDEVINE=true -readonly TEMP_DIR='/tmp' +readonly FIX_DIR='/tmp/opera-fix' readonly FFMPEG_SRC_MAIN='https://api.github.com/repos/Ld-Hagen/nwjs-ffmpeg-prebuilt/releases' readonly FFMPEG_SRC_ALT='https://api.github.com/repos/Ld-Hagen/fix-opera-linux-ffmpeg-widevine/releases' readonly WIDEVINE_VERSIONS='https://dl.google.com/widevine-cdm/versions.txt' @@ -51,6 +51,7 @@ fi #Getting download links printf 'Getting download links...\n' + ##ffmpeg readonly FFMPEG_URL_MAIN=$(curl -sL4 $FFMPEG_SRC_MAIN | jq -r '.[0].assets[0].browser_download_url') readonly FFMPEG_URL_ALT=$(curl -sL4 $FFMPEG_SRC_ALT | jq -r '.[0].assets[0].browser_download_url') @@ -61,36 +62,56 @@ if [[ -z $FFMPEG_URL ]]; then fi ##Widevine -if $FIX_WIDEVINE; then - readonly WIDEVINE_LATEST=`curl -sL4 $WIDEVINE_VERSIONS | tail -n1` - readonly WIDEVINE_URL="https://dl.google.com/widevine-cdm/$WIDEVINE_LATEST-linux-x64.zip" -fi +#if $FIX_WIDEVINE; then +# readonly WIDEVINE_LATEST=`curl -sL4 $WIDEVINE_VERSIONS | tail -n1` +# readonly WIDEVINE_URL="https://dl.google.com/widevine-cdm/$WIDEVINE_LATEST-linux-x64.zip" +#fi #Downloading files printf 'Downloading files...\n' -mkdir -p "$TEMP_DIR/opera-fix" +mkdir -p "$FIX_DIR" ##ffmpeg -curl -L4 --progress-bar $FFMPEG_URL -o "$TEMP_DIR/opera-fix/ffmpeg.zip" + +curl -L4 --progress-bar $FFMPEG_URL -o "$FIX_DIR/ffmpeg.zip" if [ $? -ne 0 ]; then printf 'Failed to download ffmpeg. Check your internet connection or try later\n' exit 1 fi ##Widevine -if $FIX_WIDEVINE; then - curl -L4 --progress-bar "$WIDEVINE_URL" -o "$TEMP_DIR/opera-fix/widevine.zip" - if [ $? -ne 0 ]; then - printf 'Failed to download Widevine CDM. Check your internet connection or try later\n' +if $FIX_WIDEVINE; then + echo "Finding a working Widevine version..." + # Get all versions, newest last + versions=$(curl -sL4 "$WIDEVINE_VERSIONS") + # Loop through in reverse order (newest first) + for ver in $(echo "$versions" | tac); do + test_url="https://dl.google.com/widevine-cdm/${ver}-linux-x64.zip" + # Check if the URL exists (no 404) + if curl --progress-bar --fail "$test_url" -o "$FIX_DIR/widevine.zip"; then + WIDEVINE_LATEST="$ver" + WIDEVINE_URL="$test_url" + echo -e "Trying Widevine version $WIDEVINE_LATEST from $WIDEVINE_URL\n" + break + else + echo "Widevine version $ver not available, trying older..." + fi + done + + if [[ -z "$WIDEVINE_URL" ]]; then + echo "Failed to find a working Widevine version. Exiting..." exit 1 fi + #readonly WIDEVINE_LATEST + #readonly WIDEVINE_URL fi #Extracting files printf 'Extracting files...\n' ##ffmpeg -unzip -o "$TEMP_DIR/opera-fix/ffmpeg.zip" -d $TEMP_DIR/opera-fix > /dev/null +unzip -o "$FIX_DIR/ffmpeg.zip" -d $FIX_DIR > /dev/null ##Widevine if $FIX_WIDEVINE; then - unzip -o "$TEMP_DIR/opera-fix/widevine.zip" -d $TEMP_DIR/opera-fix > /dev/null + echo "unzip -o \"$FIX_DIR/widevine.zip\" -d $FIX_DIR" + unzip -o "$FIX_DIR/widevine.zip" -d $FIX_DIR > /dev/null fi for opera in ${OPERA_VERSIONS[@]}; do @@ -120,13 +141,13 @@ for opera in ${OPERA_VERSIONS[@]}; do #Moving libraries to its place printf 'Moving libraries to their places...\n' ##ffmpeg - cp -f "$TEMP_DIR/opera-fix/$FFMPEG_SO_NAME" "$OPERA_LIB_DIR" + cp -f "$FIX_DIR/$FFMPEG_SO_NAME" "$OPERA_LIB_DIR" chmod 0644 "$OPERA_LIB_DIR/$FFMPEG_SO_NAME" ##Widevine if $FIX_WIDEVINE; then - cp -f "$TEMP_DIR/opera-fix/$WIDEVINE_SO_NAME" "$OPERA_WIDEVINE_SO_DIR" + cp -f "$FIX_DIR/$WIDEVINE_SO_NAME" "$OPERA_WIDEVINE_SO_DIR" chmod 0644 "$OPERA_WIDEVINE_SO_DIR/$WIDEVINE_SO_NAME" - cp -f "$TEMP_DIR/opera-fix/$WIDEVINE_MANIFEST_NAME" "$OPERA_WIDEVINE_DIR" + cp -f "$FIX_DIR/$WIDEVINE_MANIFEST_NAME" "$OPERA_WIDEVINE_DIR" chmod 0644 "$OPERA_WIDEVINE_DIR/$WIDEVINE_MANIFEST_NAME" printf "[\n {\n \"preload\": \"$OPERA_WIDEVINE_DIR\"\n }\n]\n" > "$OPERA_WIDEVINE_CONFIG" fi @@ -134,4 +155,4 @@ done #Removing temporary files printf 'Removing temporary files...\n' -rm -rf "$TEMP_DIR/opera-fix" +rm -rf "$FIX_DIR"