#!/bin/bash cd /var/www/html || exit 1 # Fix permissions on config.yml if it exists if [ -f config.yml ]; then chmod 0600 config.yml fi # Create repo icon directory if it doesn't exist mkdir -p repo/icons # Create a basic repo icon if missing if [ ! -f repo/icons/icon.png ]; then echo "Creating placeholder repo icon..." # Try to download a simple icon wget -q -O repo/icons/icon.png "https://f-droid.org/assets/favicon-256.png" || echo "Could not create icon, please add one manually" fi # Function to extract version from APK (if aapt is available) get_version() { apk_file=$1 if command -v aapt >/dev/null 2>&1; then version=$(aapt dump badging "$apk_file" 2>/dev/null | grep versionName | awk -F"'" '{print $4}') echo "$version" else echo "unknown (aapt not installed)" fi } # Function to download and update only if changed update_app() { app_name=$1 app_url=$2 echo "Processing $app_name..." # Create temp directory mkdir -p ./temp # Download to temp file wget -q -O "./temp/${app_name}.apk.new" "$app_url" # Check if download was successful if [ ! -s "./temp/${app_name}.apk.new" ]; then echo " ✗ Failed to download $app_name, skipping" rm -f "./temp/${app_name}.apk.new" return fi # Extract version info from the new APK new_version=$(get_version "./temp/${app_name}.apk.new") echo " Downloaded version: $new_version" # Check if app exists and if it's different if [ -f "./repo/${app_name}.apk" ]; then # Extract version info from the existing APK current_version=$(get_version "./repo/${app_name}.apk") echo " Current version: $current_version" # Compare files (binary comparison to be absolutely sure) if ! cmp -s "./temp/${app_name}.apk.new" "./repo/${app_name}.apk"; then echo " ✓ $app_name: New version detected ($current_version → $new_version), updating..." mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk" touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk" else echo " ✓ $app_name: No changes detected (version $current_version), keeping existing version" rm "./temp/${app_name}.apk.new" fi else echo " ✓ $app_name: File does not exist yet, adding version $new_version..." mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk" touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk" fi } # Make sure archive directory exists mkdir -p archive/ # Process each app update_app "YouTube" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/youtube-revanced-extended.apk" update_app "Reddit" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/reddit-revanced-extended.apk" update_app "SoundCloud" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/soundcloud-revanced.apk" update_app "Duolingo" "https://git.felo.gg/FeloStore/Data/releases/download/latest/duolingo.apk" update_app "GoogleNews" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/googlenews-arm64-v8a-revanced.apk" update_app "Instagram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/instagram.apk" update_app "Twitter" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/twitter-stable-piko.apk" update_app "NovaLauncher" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/nova-launcher-indrastorms.apk" update_app "Busuu" "https://git.felo.gg/FeloStore/Data/releases/download/latest/busuu.apk" update_app "Quizlet" "https://git.felo.gg/FeloStore/Data/releases/download/latest/quizlet.apk" update_app "Telegram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/telegram.apk" # Clean up temp directory rm -rf ./temp # Check for archived APKs and restore them to repo echo "Checking for archived APKs to restore..." for app in YouTube Reddit SoundCloud Duolingo GoogleNews Instagram Twitter NovaLauncher Busuu Quizlet Telegram; do if [ -f "archive/${app}.apk" ]; then echo "Restoring ${app}.apk from archive to repo" cp "archive/${app}.apk" "repo/${app}.apk" touch -d "$(date +%Y-%m-%d)" "repo/${app}.apk" fi done # Add option to config to accept unsigned APKs if [ -f config.yml ]; then if ! grep -q "allow_disabled_algorithms:" config.yml; then echo "allow_disabled_algorithms: True" >> config.yml fi fi # Update F-Droid repository with only supported flags echo "Updating F-Droid repository..." fdroid update --allow-disabled-algorithms --use-date-from-apk --create-metadata --clean # Final update to ensure everything is included echo "Running final update with simpler flags..." fdroid update --allow-disabled-algorithms --use-date-from-apk --nosign echo "Update complete!"