diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index e0b1b06f..eebcd511 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -1,7 +1,6 @@
name: Android CI
env:
- # The name of the main module repository
main_project_module: app
permissions: {}
@@ -16,200 +15,95 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: read
- steps:
- - uses: actions/checkout@v4
- with:
- persist-credentials: false
- - name: set up JDK 17
- uses: actions/setup-java@v4
- with:
- java-version: 17
- distribution: 'corretto'
- cache: 'gradle'
-
- - name: Create base64 jks file
- run: echo "${{ secrets.BASE_64_SIGNING_KEY }}" > app/release_keystore.txt
- - name: Create jks file
- run: base64 -d "app/release_keystore.txt" > app/release_keystore.jks
- - name: Create Blank Local Properties File
- run: touch local.properties
- - name: Create Keystore Properties File
- run: echo "${{ secrets.LOCAL_PROPERTIES }}" > keystore.properties
- - name: Grant execute permission for gradlew
- run: chmod +x gradlew
-
- - name: Set current date as env variable
- run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
-
- # Create APK Github Release
- - name: Build apk release project (APK)
- run: ./gradlew assembleGithubRelease --warning-mode all
-
- # Upload Artifact Build
- - name: Find Release Github arm64
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/github/release/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release Github arm64
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-arm64-v8a-github-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release Github armeabiv7
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/github/release/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release Github armeabiv7
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-armeabi-v7a-github-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release Github universal
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/github/release/ -type f -name '*universal*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release Github universal
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-universal-github-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release Github x86
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/github/release/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release Github x86
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-x86-github-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release Github x86_64
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/github/release/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release Github x86_64
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-x86_64-github-release
- path: ${{ env.APK_PATH }}
-
- # Noted For Output [main_project_module]/build/outputs/apk/github/release/
- - name: Upload APK Release
- uses: actions/upload-artifact@v4
- with:
- name: YTDLnis APK release github generated
- path: ${{ env.main_project_module }}/build/outputs/apk/github/release/
-
- # Create APK FOSS Release
- - name: Build apk release project (APK)
- run: ./gradlew assembleFossRelease --warning-mode all
-
- - name: Find Release FOSS arm64
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/foss/release/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release FOSS arm64
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-arm64-v8a-foss-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release FOSS armeabiv7
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/foss/release/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release FOSS armeabiv7
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-armeabi-v7a-foss-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release FOSS universal
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/foss/release/ -type f -name '*universal*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release FOSS universal
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-universal-foss-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release FOSS x86
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/foss/release/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release FOSS x86
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-x86-foss-release
- path: ${{ env.APK_PATH }}
-
- - name: Find Release FOSS x86_64
- run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/foss/release/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV
- - name: Upload APK Release FOSS x86_64
- uses: actions/upload-artifact@v4
- with:
- name: ytdlnis-autogenerated-x86_64-foss-release
- path: ${{ env.APK_PATH }}
-
- - name: Upload APK Release
- uses: actions/upload-artifact@v4
- with:
- name: YTDLnis APK release FOSS generated
- path: ${{ env.main_project_module }}/build/outputs/apk/foss/release/
-
- # Send Message To Telegram
- - name: send telegram message on push or pull
- continue-on-error: true
- uses: appleboy/telegram-action@master
- with:
- to: ${{ secrets.TELEGRAM_TO }}
- token: ${{ secrets.TELEGRAM_TOKEN }}
- message: |
- ${{ github.actor }} created commit:
- Commit message: ${{ github.event.commits[0].message }}
- Repository: ${{ github.repository }}
- See changes: https://github.com/${{ github.repository }}/commit/${{github.sha}}
-
-# # Start Creating Pre-Release
-# - name: Start Pre-Release
-# uses: actions/checkout@v4
-# with:
-# persist-credentials: false
-# # returns null if no pre-release exists
-# - name: Get Commit SHA of Latest Pre-release
-# run: |
-# # Install Required Packages
-# sudo apt-get updated
-# sudo apt-get install -y curl jq
-# echo "COMMIT_SHA_TAG=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< $(curl -s https://api.github.com/repos/deniscerri/ytdlnis/releases))" >> $GITHUB_ENV
-#
-# - run: gh release delete ${{ env.COMMIT_SHA_TAG }} --cleanup-tag
-# if: (env.COMMIT_SHA_TAG != 'null' && contains('Auto-Release', env.COMMIT_SHA_TAG))
-# env:
-# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-#
-# # Make sure that an old ci that still runs on main doesn't recreate a prerelease
-# - name: Check Pullable Commits
-# id: check_commits
-# run: |
-# git fetch
-# CHANGES=$(git rev-list HEAD..origin/main --count)
-# echo "CHANGES=$CHANGES" >> $GITHUB_ENV
-#
-# - name: Get Release Name
-# id: get_last_release_tag
-# run: |
-# LASTRELEASE=$(curl "https://api.github.com/repos/deniscerri/ytdlnis/releases/latest")
-# ISPRERELEASE=$(echo $LASTRELEASE | jq -r '.prerelease')
-# NEWRELEASENAME=$(echo $LASTRELEASE | jq -r '.name')
-# if ! $ISPRERELEASE; then NEWRELEASENAME=$(echo $NEWRELEASENAME'.1'); else NEWRELEASENAME=$(echo $NEWRELEASENAME | sed -E 's/(.*\.)([0-9]+)$/echo "\1$((\2 + 1))"/e'); fi
-# echo "NEWRELEASENAME=$NEWRELEASENAME" >> $GITHUB_ENV
-#
-# - name: Get last commit SHA
-# id: last_commit
-# run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
-#
-# - name: Get commmit date
-# id: commit_date
-# run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
-#
-#
-# # Create a new pre-release, the other upload_binaries.yml will upload the binaries
-# # to this pre-release.
-# - name: Create Prerelease
-# if: github.ref.name == 'main' && env.CHANGES == '0'
-# uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
-# with:
-# name: ${{ env.NEWRELEASENAME }} [Auto-Release] [${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}]
-# tag_name: v${{ env.NEWRELEASENAME }}-beta
-# body: ${{ github.event.commits[0].message }}
-# prerelease: true
-# files: |
-# ${{ env.main_project_module }}/build/outputs/apk/release/*
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - flavor: github
+ task: assembleGithubRelease
+ display_name: github
+ - flavor: foss
+ task: assembleFossRelease
+ display_name: FOSS
+ - flavor: izzy
+ task: assembleIzzyRelease
+ display_name: Izzy
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: 17
+ distribution: 'corretto'
+ cache: 'gradle'
+
+ - name: Configure Keystore & Properties
+ run: |
+ echo "${{ secrets.BASE_64_SIGNING_KEY }}" | base64 -d > app/release_keystore.jks
+ touch local.properties
+ echo "${{ secrets.LOCAL_PROPERTIES }}" > keystore.properties
+ chmod +x gradlew
+
+ # Build ONLY the specific flavor assigned to this matrix runner
+ - name: Build ${{ matrix.flavor }} APK release
+ run: ./gradlew ${{ matrix.task }} --warning-mode all
+
+ # Upload individual ABI artifacts for this runner's flavor
+ - name: Upload arm64
+ uses: actions/upload-artifact@v4
+ with:
+ name: ytdlnis-autogenerated-arm64-v8a-${{ matrix.flavor }}-release
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/*arm64*.apk
+
+ - name: Upload armeabiv7
+ uses: actions/upload-artifact@v4
+ with:
+ name: ytdlnis-autogenerated-armeabi-v7a-${{ matrix.flavor }}-release
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/*armeabi*.apk
+
+ - name: Upload universal
+ uses: actions/upload-artifact@v4
+ with:
+ name: ytdlnis-autogenerated-universal-${{ matrix.flavor }}-release
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/*universal*.apk
+
+ - name: Upload x86
+ uses: actions/upload-artifact@v4
+ with:
+ name: ytdlnis-autogenerated-x86-${{ matrix.flavor }}-release
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/*x86-*.apk
+
+ - name: Upload x86_64
+ uses: actions/upload-artifact@v4
+ with:
+ name: ytdlnis-autogenerated-x86_64-${{ matrix.flavor }}-release
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/*x86_64*.apk
+
+ - name: Upload Full Folder
+ uses: actions/upload-artifact@v4
+ with:
+ name: YTDLnis APK release ${{ matrix.display_name }} generated
+ path: ${{ env.main_project_module }}/build/outputs/apk/${{ matrix.flavor }}/release/
+
+ # Separate job for Telegram so you only get ONE notification when all builds finish
+ notify:
+ needs: build
+ runs-on: ubuntu-latest
+ if: always()
+ steps:
+ - name: Send Telegram Message
+ continue-on-error: true
+ uses: appleboy/telegram-action@master
+ with:
+ to: ${{ secrets.TELEGRAM_TO }}
+ token: ${{ secrets.TELEGRAM_TOKEN }}
+ message: |
+ ${{ github.actor }} created commit:
+ Commit message: ${{ github.event.commits[0].message }}
+ Repository: ${{ github.repository }}
+ See changes: https://github.com/${{ github.repository }}/commit/${{ github.sha }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 1dfaeb1d..0f0af702 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,5 @@
.externalNativeBuild
/benchmark
*.png
-app/src/main/jniLibs
\ No newline at end of file
+app/src/main/jniLibs
+.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 0b3680b6..5c37d3ee 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -94,6 +94,9 @@ android {
foss {
dimension "version"
}
+ izzy {
+ dimension "version"
+ }
}
@@ -163,19 +166,18 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs_nio:2.1.5"
-// implementation "com.github.yausername.youtubedl-android:library:$youtubedlAndroidVer"
-// implementation "com.github.yausername.youtubedl-android:ffmpeg:$youtubedlAndroidVer"
-// implementation "com.github.yausername.youtubedl-android:aria2c:$youtubedlAndroidVer"
- implementation "io.github.junkfood02.youtubedl-android:library:0.18.1"
- //implementation "io.github.junkfood02.youtubedl-android:library:0.17.4"
+ githubImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1"
+ githubImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1"
+ githubImplementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2"
- //implementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.18.1"
- //noinspection NewerVersionAvailable
- implementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2"
+ fossImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1"
+ fossImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1"
+ fossImplementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2"
- implementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1"
- //implementation "io.github.junkfood02.youtubedl-android:aria2c:0.17.2"
+ izzyImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1"
+ izzyImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1"
+ izzyImplementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2"
implementation "androidx.appcompat:appcompat:1.7.1"
implementation "androidx.constraintlayout:constraintlayout:2.2.1"
diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt
index 7ac436d9..1a2b3a95 100644
--- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt
+++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt
@@ -79,6 +79,7 @@ class GenerateYoutubePoTokensFragment : Fragment() {
).toMutableList()
}.getOrDefault(mutableListOf())
+ RuntimeManager.getInstance().assertInit()
initBGUtils()
initWeb()
}
@@ -337,9 +338,12 @@ class GenerateYoutubePoTokensFragment : Fragment() {
conf.enabled = switch.isChecked
useVisitorData.isEnabled = switch.isChecked
configuration.add(conf)
- preferences.edit()
- .putString("youtube_generated_po_tokens", Gson().toJson(configuration).toString())
- .apply()
+ preferences.edit(commit = true) {
+ putString(
+ "youtube_generated_po_tokens",
+ Gson().toJson(configuration).toString()
+ )
+ }
if (conf.poTokens.isEmpty()) {
regenerate.performClick()
}
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 9948266d..cb67abd4 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -137,6 +137,7 @@
- English
- العربية
- Azərbaycanca
+ - Asamiya
- বাংলা
- বাংলা (India)
- български
@@ -184,6 +185,7 @@
- en
- ar
- az
+ - as
- bn
- bn-IN
- bg