From 0d8a82568a1215b1cae57855ece4d5b640aaa674 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sun, 31 Mar 2024 18:23:29 +0530 Subject: [PATCH] feat: Download subs --- .../media/anime/SelectorDialogFragment.kt | 42 +++++++++++++++++++ app/src/main/res/layout/item_anime_page.xml | 2 +- app/src/main/res/layout/item_url.xml | 14 ++++++- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt index 292a9660..5ecd8af7 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt @@ -30,10 +30,13 @@ import ani.dantotsu.currActivity import ani.dantotsu.databinding.BottomSheetSelectorBinding import ani.dantotsu.databinding.ItemStreamBinding import ani.dantotsu.databinding.ItemUrlBinding +import ani.dantotsu.download.DownloadedType import ani.dantotsu.download.video.Helper import ani.dantotsu.hideSystemBars import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsViewModel +import ani.dantotsu.media.MediaType +import ani.dantotsu.media.SubtitleDownloader import ani.dantotsu.navBarHeight import ani.dantotsu.others.Download.download import ani.dantotsu.parsers.Subtitle @@ -376,6 +379,45 @@ class SelectorDialogFragment : BottomSheetDialogFragment() { } else { binding.urlDownload.visibility = View.GONE } + val subtitles = extractor.subtitles + if (subtitles.isNotEmpty()) { + binding.urlSub.visibility = View.VISIBLE + } else { + binding.urlSub.visibility = View.GONE + } + binding.urlSub.setOnClickListener { + if (subtitles.isNotEmpty()) { + val subtitleNames = subtitles.map { it.language } + var subtitleToDownload: Subtitle? = null + val alertDialog = AlertDialog.Builder(context, R.style.MyPopup) + .setTitle("Download Subtitle") + .setSingleChoiceItems( + subtitleNames.toTypedArray(), + -1 + ) { _, which -> + subtitleToDownload = subtitles[which] + } + .setPositiveButton("Download") { dialog, _ -> + scope.launch { + if (subtitleToDownload != null) { + SubtitleDownloader.downloadSubtitle( + requireContext(), + subtitleToDownload!!.file.url, + DownloadedType(media!!.mainName(), media!!.anime!!.episodes!![media!!.anime!!.selectedEpisode!!]!!.number, MediaType.ANIME) + ) + } + } + dialog.dismiss() + } + .setNegativeButton("Cancel") { dialog, _ -> + dialog.dismiss() + } + .show() + alertDialog.window?.setDimAmount(0.8f) + } else { + snackString("No Subtitles Available") + } + } binding.urlDownload.setSafeOnClickListener { media!!.anime!!.episodes!![media!!.anime!!.selectedEpisode!!]!!.selectedExtractor = extractor.server.name diff --git a/app/src/main/res/layout/item_anime_page.xml b/app/src/main/res/layout/item_anime_page.xml index f9d3c673..13cc155c 100644 --- a/app/src/main/res/layout/item_anime_page.xml +++ b/app/src/main/res/layout/item_anime_page.xml @@ -182,7 +182,7 @@ android:id="@+id/animeRecentlyContainer" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="vertical"> - +