From a6b078f95baf1b4a10b5b54a5e90eb4d637883a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Denis=20=C3=87erri?=
<64997243+deniscerri@users.noreply.github.com>
Date: Tue, 24 Jan 2023 19:32:00 +0100
Subject: [PATCH] removed old download service
---
app/src/main/AndroidManifest.xml | 8 +-
.../deniscerri/ytdlnis/DownloaderService.kt | 583 ------------------
.../com/deniscerri/ytdlnis/MainActivity.kt | 108 ++--
.../ytdlnis/service/DownloadInfo.kt | 1 -
.../ytdlnis/ui/CustomCommandActivity.kt | 179 +++---
5 files changed, 124 insertions(+), 755 deletions(-)
delete mode 100644 app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.kt
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d938c82c..f987cde1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -63,10 +63,10 @@
-
+
+
+
+
?> =
- ConcurrentHashMap()
- private val fileUtil = FileUtil()
- private val downloadInfo = DownloadInfo()
- private var downloadQueue = LinkedList()
- private val compositeDisposable = CompositeDisposable()
- private var context: Context? = null
- var downloadProcessID = "processID"
- private var downloadNotificationID = 0
- private lateinit var notificationChannelID : String
- private lateinit var workManager : WorkManager
-
- private val callback: (Float, Long?, String?) -> Unit =
- { progress: Float, _: Long?, line: String? ->
- downloadInfo.progress = progress.toInt()
- downloadInfo.outputLine = line
- downloadInfo.downloadQueue = downloadQueue
- var title: String? = getString(R.string.running_ytdlp_command)
- if (!downloadQueue.isEmpty()) {
- title = downloadQueue.peek()?.title
- }
-// notificationUtil.updateDownloadNotification(
-// downloadNotificationID,
-// line!!, progress.toInt(), downloadQueue.size, title,
-// notificationChannelID
-// )
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- if (activities[activity] != null) {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadProgress(downloadInfo)
- }
- }
- }
- }
- } catch (ignored: Exception) {
- }
- }
-
- override fun onCreate() {
- super.onCreate()
- context = this
- this.workManager = WorkManager.getInstance(context!!.applicationContext)
- }
-
- override fun onBind(intent: Intent): IBinder? {
-// val theIntent: Intent
-// val pendingIntent: PendingIntent
-// if (intent.getBooleanExtra("rebind", false)) {
-// return binder
-// }
-// when (val id = intent.getIntExtra("id", 1)) {
-// NotificationUtil.DOWNLOAD_NOTIFICATION_ID -> {
-// notificationChannelID = NotificationUtil.DOWNLOAD_SERVICE_CHANNEL_ID
-// theIntent = Intent(this, MainActivity::class.java)
-// pendingIntent =
-// PendingIntent.getActivity(this, 0, theIntent, PendingIntent.FLAG_IMMUTABLE)
-// downloadNotificationID = id
-// val queue: ArrayList? = intent.getParcelableArrayListExtra("queue")
-// downloadQueue = LinkedList()
-// downloadQueue.addAll(queue!!)
-// downloadInfo.downloadQueue = downloadQueue
-// val title = downloadInfo.video.title
-// val notification =
-// App.notificationUtil.createDownloadServiceNotification(pendingIntent, title, 1, NotificationUtil.DOWNLOAD_SERVICE_CHANNEL_ID)
-// startForeground(downloadNotificationID, notification)
-// startDownload(downloadQueue)
-// }
-// NotificationUtil.COMMAND_DOWNLOAD_NOTIFICATION_ID -> {
-// notificationChannelID = NotificationUtil.COMMAND_DOWNLOAD_SERVICE_CHANNEL_ID
-// theIntent = Intent(this, CustomCommandActivity::class.java)
-// pendingIntent =
-// PendingIntent.getActivity(this, 0, theIntent, PendingIntent.FLAG_IMMUTABLE)
-// downloadNotificationID = id
-// val command = intent.getStringExtra("command")
-// val commandNotification = App.notificationUtil.createDownloadServiceNotification(
-// pendingIntent,
-// getString(R.string.running_ytdlp_command),
-// 1,
-// NotificationUtil.COMMAND_DOWNLOAD_SERVICE_CHANNEL_ID
-// )
-// startForeground(downloadNotificationID, commandNotification)
-// startCommandDownload(command)
-// }
-// }
- return binder
- }
-
- override fun onDestroy() {
- super.onDestroy()
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
- stopForeground(STOP_FOREGROUND_REMOVE)
- }else{
- stopForeground(true)
- }
- stopSelf()
- }
-
- inner class LocalBinder : Binder(), IDownloaderService {
- val service: DownloaderService
- get() = this@DownloaderService
-
- override fun getInfo(): DownloadInfo {
- return downloadInfo
- }
-
- override fun addActivity(activity: Activity, callbacks: ArrayList) {
- if (!activities.containsKey(activity)) {
- activities[activity] = callbacks
- }
- }
-
- override fun removeActivity(activity: Activity) {
- activities.remove(activity)
- }
-
-
- override fun updateQueue(queue: ArrayList) {
-// try {
-// for (i in queue.indices) {
-// downloadQueue.add(queue[i].clone() as ResultItem)
-// }
-// if (downloadQueue.size == queue.size) {
-// downloadInfo.downloadQueue = downloadQueue
-// startDownload(downloadQueue)
-// } else {
-// downloadInfo.downloadQueue = downloadQueue
-// Toast.makeText(context, getString(R.string.added_to_queue), Toast.LENGTH_SHORT)
-// .show()
-// }
-// } catch (e: Exception) {
-// Toast.makeText(context, "Couldn't update download queue! :(", Toast.LENGTH_SHORT)
-// .show()
-// }
- }
-
- override fun cancelDownload(cancelAll: Boolean) {
- try {
- YoutubeDL.getInstance().destroyProcessById(downloadProcessID)
- compositeDisposable.clear()
- //stopForeground(true);
- if (cancelAll) {
- onDownloadCancelAll()
- }
- } catch (err: Exception) {
- Log.e(TAG, err.message!!)
- }
- }
-
-
- override fun removeItemFromDownloadQueue(video: ResultItem?, type: String?) {
-// //if its the same video with the same download type as the current downloading one
-// if (downloadInfo.video.url == video.url && downloadInfo.video.type == video.downloadedType) {
-// cancelDownload(false)
-// downloadInfo.downloadType = type
-// onDownloadCancel(downloadInfo)
-// downloadQueue.pop()
-// downloadInfo.downloadQueue = downloadQueue
-// startDownload(downloadQueue)
-// } else {
-// downloadQueue.remove(video)
-// try {
-// val info = DownloadInfo()
-// info.video = video
-// info.downloadType = type
-// onDownloadCancel(info)
-// } catch (ignored: Exception) {
-// }
-// }
-// Toast.makeText(
-// context,
-// video.title + " " + getString(R.string.removed_from_queue),
-// Toast.LENGTH_SHORT
-// ).show()
- }
- }
-
- private fun finishService() {
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadServiceEnd()
- }
- }
- }
- } catch (ignored: Exception) {
- }
- }
-
- private fun onDownloadCancelAll() {
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadCancelAll(downloadInfo)
- }
- }
- }
- } catch (ignored: Exception) {
- }
- onDestroy()
- }
-
- private fun onDownloadEnd() {
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadEnd(downloadInfo)
- }
- }
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
- private fun onDownloadCancel(cancelInfo: DownloadInfo) {
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadCancel(cancelInfo)
- }
- }
- }
- } catch (ignored: Exception) {
- }
- }
-
- private fun startDownload(videos: LinkedList) {
-// if (videos.size == 0) {
-// finishService()
-// return
-// }
-// val video: ResultItem = try {
-// videos.peek() as ResultItem
-// } catch (e: Exception) {
-// finishService()
-// return
-// }
-// try {
-// for (activity in activities.keys) {
-// activity.runOnUiThread {
-// for (i in activities[activity]!!.indices) {
-// val callback = activities[activity]!![i]
-// callback.onDownloadStart(downloadInfo)
-// }
-// }
-// }
-// } catch (err: Exception) {
-// err.printStackTrace()
-// }
-// val url = video.getURL()
-// val request = YoutubeDLRequest(url)
-// val type = video.downloadedType
-// val downloadLocation = getDownloadLocation(type)
-//
-// var tempFileDir = File(cacheDir.absolutePath + """/${video.title}##${video.downloadedType}""")
-// tempFileDir.delete()
-// tempFileDir.mkdir()
-//
-// val sharedPreferences = context!!.getSharedPreferences("root_preferences", MODE_PRIVATE)
-// val aria2 = sharedPreferences.getBoolean("aria2", false)
-// if (aria2) {
-// request.addOption("--downloader", "libaria2c.so")
-// request.addOption("--external-downloader-args", "aria2c:\"--summary-interval=1\"")
-// } else {
-// val concurrentFragments = sharedPreferences.getInt("concurrent_fragments", 1)
-// if (concurrentFragments > 1) request.addOption("-N", concurrentFragments)
-// }
-// val limitRate = sharedPreferences.getString("limit_rate", "")
-// if (limitRate != "") request.addOption("-r", limitRate!!)
-// val writeThumbnail = sharedPreferences.getBoolean("write_thumbnail", false)
-// if (writeThumbnail) {
-// request.addOption("--write-thumbnail")
-// request.addOption("--convert-thumbnails", "png")
-// }
-// request.addOption("--no-mtime")
-// val sponsorBlockFilters = sharedPreferences.getStringSet("sponsorblock_filters", emptySet())
-// if (sponsorBlockFilters!!.isNotEmpty()) {
-// val filters = java.lang.String.join(",", sponsorBlockFilters)
-// request.addOption("--sponsorblock-remove", filters)
-// }
-// if (type == "audio") {
-// if (downloadLocation.equals(getString(R.string.music_path))){
-// tempFileDir = File(getString(R.string.music_path))
-// }
-//
-// request.addOption("-x")
-// var format = video.audioFormat
-// if (format == null) format = sharedPreferences.getString("audio_format", "")
-// request.addOption("--audio-format", format!!)
-// request.addOption("--embed-metadata")
-//
-// val embedThumb = sharedPreferences.getBoolean("embed_thumbnail", false)
-// if (embedThumb) {
-// request.addOption("--embed-thumbnail")
-// request.addOption("--convert-thumbnails", "png")
-// try {
-// val config = File(cacheDir, "config" + video.videoId + ".txt")
-// val config_data =
-// "--ppa \"ffmpeg: -c:v png -vf crop=\\\"'if(gt(ih,iw),iw,ih)':'if(gt(iw,ih),ih,iw)'\\\"\""
-// val stream = FileOutputStream(config)
-// stream.write(config_data.toByteArray())
-// stream.close()
-// request.addOption("--config", config.absolutePath)
-// } catch (ignored: java.lang.Exception) {
-// }
-// }
-// request.addOption("--parse-metadata", "%(release_year,upload_date)s:%(meta_date)s")
-// request.addCommands(Arrays.asList("--replace-in-metadata", "title", ".*.", video.title))
-// request.addCommands(Arrays.asList("--replace-in-metadata", "uploader", ".*.", video.author))
-//
-// if (!video.playlistTitle.isEmpty()) {
-// request.addOption("--parse-metadata", "%(album,playlist,title)s:%(meta_album)s")
-// request.addOption("--parse-metadata", "%(track_number,playlist_index)d:%(meta_track)s")
-// } else {
-// request.addOption("--parse-metadata", "%(album,title)s:%(meta_album)s")
-// }
-// request.addOption("-o", tempFileDir.absolutePath + "/%(uploader)s - %(title)s.%(ext)s")
-// } else if (type == "video") {
-// if (downloadLocation.equals(getString(R.string.video_path))){
-// tempFileDir = File(getString(R.string.video_path))
-// }
-//
-// val addChapters = sharedPreferences.getBoolean("add_chapters", false)
-// if (addChapters) {
-// request.addOption("--sponsorblock-mark", "all")
-// }
-// val embedSubs = sharedPreferences.getBoolean("embed_subtitles", false)
-// if (embedSubs) {
-// request.addOption("--embed-subs", "")
-// }
-// var videoQuality = video.videoQuality
-// if (videoQuality == null) videoQuality =
-// sharedPreferences.getString("video_quality", "")
-// var formatArgument = "bestvideo+bestaudio/best"
-// if (videoQuality == "Worst Quality") {
-// formatArgument = "worst"
-// } else if (!videoQuality!!.isEmpty() && videoQuality != "Best Quality") {
-// formatArgument = "bestvideo[height<=" + videoQuality.substring(
-// 0,
-// videoQuality.length - 1
-// ) + "]+bestaudio/best"
-// }
-// request.addOption("-f", formatArgument)
-// var format = video.videoFormat
-// if (format == null) format = sharedPreferences.getString("video_format", "")
-// if (format != "DEFAULT") request.addOption("--merge-output-format", format!!)
-// if (format != "webm") {
-// val embedThumb = sharedPreferences.getBoolean("embed_thumbnail", false)
-// if (embedThumb) {
-// request.addOption("--embed-thumbnail")
-// }
-// }
-// request.addOption("-o", tempFileDir.absolutePath + "/%(uploader)s - %(title)s.%(ext)s")
-// }
-//
-// val disposable = Observable.fromCallable {
-// YoutubeDL.getInstance().execute(request, downloadProcessID, callback)
-// }
-// .subscribeOn(Schedulers.newThread())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe({
-// val workTag = video.getURL()
-// val workData = workDataOf(
-// originDir to tempFileDir.absolutePath,
-// downLocation to downloadLocation,
-// title to video.title
-// )
-// val fileTransferWorkRequest = OneTimeWorkRequestBuilder()
-// .addTag(workTag)
-// .setInputData(workData)
-// .build()
-// workManager.enqueueUniqueWork(
-// workTag,
-// ExistingWorkPolicy.KEEP,
-// fileTransferWorkRequest
-// )
-//
-// downloadInfo.downloadPath = fileUtil.formatPath(getDownloadLocation(type)!!)
-// Log.e(TAG, downloadInfo.downloadPath)
-// downloadInfo.downloadType = type
-//
-//
-//
-// try {
-// for (activity in activities.keys) {
-// activity.runOnUiThread {
-// for (i in activities[activity]!!.indices) {
-// val callback = activities[activity]!![i]
-// callback.onDownloadEnd(downloadInfo)
-// }
-// }
-// }
-// } catch (e: Exception) {
-// Toast.makeText(context, e.message, Toast.LENGTH_LONG).show()
-// e.printStackTrace()
-// }
-//
-// // SCAN NEXT IN QUEUE
-// videos.remove()
-// downloadInfo.downloadQueue = videos
-// startDownload(videos)
-// }) { e: Throwable? ->
-// tempFileDir.delete()
-// if (BuildConfig.DEBUG) {
-// Toast.makeText(context, e!!.message, Toast.LENGTH_LONG).show()
-// Log.e(TAG, getString(R.string.failed_download), e)
-// }
-// notificationUtil.updateDownloadNotification(
-// NotificationUtil.DOWNLOAD_NOTIFICATION_ID,
-// getString(R.string.failed_download), 0, 0, downloadQueue.peek()?.title,
-// NotificationUtil.DOWNLOAD_SERVICE_CHANNEL_ID
-// )
-// downloadInfo.downloadType = type
-// try {
-// for (activity in activities.keys) {
-// activity.runOnUiThread {
-// for (i in activities[activity]!!.indices) {
-// val callback = activities[activity]!![i]
-// callback.onDownloadError(downloadInfo)
-// }
-// }
-// }
-// } catch (err: Exception) {
-// err.printStackTrace()
-// }
-//
-// // SCAN NEXT IN QUEUE
-// videos.remove()
-// downloadInfo.downloadQueue = videos
-// startDownload(videos)
-// }
-// compositeDisposable.add(disposable)
- }
-
- private fun startCommandDownload(text: String?) {
- var text = text
- if (text!!.startsWith("yt-dlp ")) {
- text = text.substring(6).trim { it <= ' ' }
- }
-
- val sharedPreferences = context!!.getSharedPreferences("root_preferences", MODE_PRIVATE)
- val downloadLocation = sharedPreferences.getString("command_path", getString(R.string.command_path))
-
- var tempFileDir = File(cacheDir.absolutePath + "/command")
- tempFileDir.delete()
- tempFileDir.mkdir()
-
- if (downloadLocation.equals(getString(R.string.command_path))){
- tempFileDir = File(getString(R.string.command_path))
- }
-
-
- val request = YoutubeDLRequest(emptyList())
- val commandRegex = "\"([^\"]*)\"|(\\S+)"
- val m = Pattern.compile(commandRegex).matcher(text)
- while (m.find()) {
- if (m.group(1) != null) {
- request.addOption(m.group(1))
- } else {
- request.addOption(m.group(2))
- }
- }
- request.addOption("-o", tempFileDir.absolutePath + "/%(title)s.%(ext)s")
- val disposable = Observable.fromCallable {
- YoutubeDL.getInstance().execute(request, downloadProcessID, callback)
- }
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ youtubeDLResponse: YoutubeDLResponse ->
- downloadInfo.outputLine = youtubeDLResponse.out
-
- val workTag = SystemClock.uptimeMillis().toString()
- val workData = workDataOf(
- originDir to tempFileDir.absolutePath,
- downLocation to downloadLocation,
- title to ""
- )
- val fileTransferWorkRequest = OneTimeWorkRequestBuilder()
- .addTag(workTag)
- .setInputData(workData)
- .build()
- workManager.enqueueUniqueWork(
- workTag,
- ExistingWorkPolicy.KEEP,
- fileTransferWorkRequest
- )
-
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadEnd(downloadInfo)
- callback.onDownloadServiceEnd()
- }
- }
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }) { e: Throwable ->
- downloadInfo.outputLine = e.message
- tempFileDir.delete()
- try {
- for (activity in activities.keys) {
- activity.runOnUiThread {
- for (i in activities[activity]!!.indices) {
- val callback = activities[activity]!![i]
- callback.onDownloadError(downloadInfo)
- callback.onDownloadServiceEnd()
- }
- }
- }
- } catch (err: Exception) {
- err.printStackTrace()
- }
- }
- compositeDisposable.add(disposable)
- }
-
- private fun getDownloadLocation(type: String): String? {
- val sharedPreferences = context!!.getSharedPreferences("root_preferences", MODE_PRIVATE)
- var downloadsDir: String? = if (type == "audio") {
- sharedPreferences.getString("music_path", getString(R.string.music_path))
- } else {
- sharedPreferences.getString("video_path", getString(R.string.video_path))
- }
- Log.e(TAG, downloadsDir!!)
- return downloadsDir
- }
-
- companion object {
- private const val TAG = "DownloaderService"
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
index 99f6e956..0a0c7abf 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
@@ -2,11 +2,12 @@ package com.deniscerri.ytdlnis
import android.Manifest
import android.app.ActivityManager
-import android.content.*
+import android.content.Context
+import android.content.DialogInterface
+import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
-import android.os.IBinder
import android.provider.Settings
import android.util.Log
import android.view.MenuItem
@@ -18,15 +19,14 @@ import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.work.WorkManager
-import com.deniscerri.ytdlnis.DownloaderService.LocalBinder
import com.deniscerri.ytdlnis.database.models.ResultItem
import com.deniscerri.ytdlnis.databinding.ActivityMainBinding
+import com.deniscerri.ytdlnis.service.IDownloaderListener
+import com.deniscerri.ytdlnis.service.IDownloaderService
import com.deniscerri.ytdlnis.ui.HistoryFragment
import com.deniscerri.ytdlnis.ui.HomeFragment
import com.deniscerri.ytdlnis.ui.MoreFragment
import com.deniscerri.ytdlnis.ui.settings.SettingsActivity
-import com.deniscerri.ytdlnis.service.IDownloaderListener
-import com.deniscerri.ytdlnis.service.IDownloaderService
import com.deniscerri.ytdlnis.util.UpdateUtil
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.io.BufferedReader
@@ -44,33 +44,8 @@ class MainActivity : AppCompatActivity() {
lateinit var context: Context
private lateinit var homeFragment: HomeFragment
private lateinit var historyFragment: HistoryFragment
- var downloaderService: DownloaderService? = null
private lateinit var workManager: WorkManager
-
- private val serviceConnection: ServiceConnection = object : ServiceConnection {
- override fun onServiceConnected(className: ComponentName, service: IBinder) {
- downloaderService = (service as LocalBinder).service
- iDownloaderService = service
- isDownloadServiceRunning = true
- try {
- iDownloaderService!!.addActivity(this@MainActivity, listeners)
- for (i in listeners.indices) {
- val listener = listeners[i]
- listener.onDownloadStart(iDownloaderService!!.info)
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
- override fun onServiceDisconnected(componentName: ComponentName) {
- downloaderService = null
- iDownloaderService = null
- isDownloadServiceRunning = false
- }
- }
-
override fun onCreate(savedInstanceState: Bundle?) {
binding = ActivityMainBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
@@ -78,7 +53,6 @@ class MainActivity : AppCompatActivity() {
setContentView(binding.root)
context = baseContext
askPermissions()
- reconnectDownloadService()
checkUpdate()
fm = supportFragmentManager
workManager = WorkManager.getInstance(context)
@@ -130,16 +104,6 @@ class MainActivity : AppCompatActivity() {
handleIntents(intent)
}
- override fun onDestroy() {
- super.onDestroy()
- try {
- iDownloaderService!!.removeActivity(this)
- context.applicationContext.unbindService(serviceConnection)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntents(intent)
@@ -235,19 +199,19 @@ class MainActivity : AppCompatActivity() {
}
fun stopDownloadService() {
- if (!isDownloadServiceRunning) return
- try {
- iDownloaderService!!.removeActivity(this)
- context.applicationContext.unbindService(serviceConnection)
- context.applicationContext.stopService(
- Intent(
- context.applicationContext,
- DownloaderService::class.java
- )
- )
- } catch (ignored: Exception) {
- }
- isDownloadServiceRunning = false
+// if (!isDownloadServiceRunning) return
+// try {
+// iDownloaderService!!.removeActivity(this)
+// context.applicationContext.unbindService(serviceConnection)
+// context.applicationContext.stopService(
+// Intent(
+// context.applicationContext,
+// DownloaderService::class.java
+// )
+// )
+// } catch (ignored: Exception) {
+// }
+// isDownloadServiceRunning = false
}
fun cancelDownloadService() {
@@ -265,28 +229,28 @@ class MainActivity : AppCompatActivity() {
}
fun isDownloadServiceRunning(): Boolean {
- val service = getService(DownloaderService::class.java)
- if (service != null) {
- if (service.foreground) {
- isDownloadServiceRunning = true
- return true
- }
- }
+// val service = getService(DownloaderService::class.java)
+// if (service != null) {
+// if (service.foreground) {
+// isDownloadServiceRunning = true
+// return true
+// }
+// }
return false
}
private fun reconnectDownloadService() {
- val service = getService(DownloaderService::class.java)
- if (service != null) {
- val serviceIntent = Intent(context.applicationContext, DownloaderService::class.java)
- serviceIntent.putExtra("rebind", true)
- context.applicationContext.bindService(
- serviceIntent,
- serviceConnection,
- BIND_AUTO_CREATE
- )
- isDownloadServiceRunning = true
- }
+// val service = getService(DownloaderService::class.java)
+// if (service != null) {
+// val serviceIntent = Intent(context.applicationContext, DownloaderService::class.java)
+// serviceIntent.putExtra("rebind", true)
+// context.applicationContext.bindService(
+// serviceIntent,
+// serviceConnection,
+// BIND_AUTO_CREATE
+// )
+// isDownloadServiceRunning = true
+// }
}
private fun getService(className: Class<*>): ActivityManager.RunningServiceInfo? {
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/service/DownloadInfo.kt b/app/src/main/java/com/deniscerri/ytdlnis/service/DownloadInfo.kt
index be350172..f166fb6d 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/service/DownloadInfo.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/service/DownloadInfo.kt
@@ -7,7 +7,6 @@ class DownloadInfo {
var video: ResultItem? = null
var progress = 0
var downloadQueue: LinkedList? = null
- private set
var outputLine: String? = null
var downloadStatus: String? = null
var downloadPath: String? = null
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/CustomCommandActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/CustomCommandActivity.kt
index 36f441b2..48d46993 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/CustomCommandActivity.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/CustomCommandActivity.kt
@@ -1,27 +1,17 @@
package com.deniscerri.ytdlnis.ui
import android.Manifest
-import android.annotation.SuppressLint
-import android.content.ComponentName
import android.content.Context
import android.content.Intent
-import android.content.ServiceConnection
import android.content.pm.PackageManager
-import android.media.MediaScannerConnection
import android.os.Bundle
-import android.os.IBinder
import android.util.Log
-import android.view.View
import android.widget.EditText
import android.widget.ScrollView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
-import com.deniscerri.ytdlnis.DownloaderService
-import com.deniscerri.ytdlnis.DownloaderService.LocalBinder
import com.deniscerri.ytdlnis.R
-import com.deniscerri.ytdlnis.service.DownloadInfo
-import com.deniscerri.ytdlnis.service.IDownloaderListener
import com.deniscerri.ytdlnis.service.IDownloaderService
import com.deniscerri.ytdlnis.util.NotificationUtil
import com.google.android.material.appbar.MaterialToolbar
@@ -30,7 +20,6 @@ import com.google.android.material.floatingactionbutton.ExtendedFloatingActionBu
class CustomCommandActivity : AppCompatActivity() {
private var topAppBar: MaterialToolbar? = null
private var isDownloadServiceRunning = false
- var downloaderService: DownloaderService? = null
private var output: TextView? = null
private var input: EditText? = null
private var fab: ExtendedFloatingActionButton? = null
@@ -38,80 +27,80 @@ class CustomCommandActivity : AppCompatActivity() {
private var iDownloaderService: IDownloaderService? = null
private var scrollView: ScrollView? = null
var context: Context? = null
- private val serviceConnection: ServiceConnection = object : ServiceConnection {
- override fun onServiceConnected(className: ComponentName, service: IBinder) {
- downloaderService = (service as LocalBinder).service
- iDownloaderService = service
- isDownloadServiceRunning = true
- try {
- val listeners = ArrayList()
- listeners.add(listener)
- iDownloaderService!!.addActivity(this@CustomCommandActivity, listeners)
- listener.onDownloadStart(iDownloaderService!!.info)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
- override fun onServiceDisconnected(componentName: ComponentName) {
- downloaderService = null
- iDownloaderService = null
- isDownloadServiceRunning = false
- }
- }
- var listener: IDownloaderListener = object : IDownloaderListener {
- override fun onDownloadStart(info: DownloadInfo) {
- input!!.isEnabled = false
- output!!.text = ""
- swapFabs()
- }
-
- override fun onDownloadProgress(info: DownloadInfo) {
- val newInfo = info.outputLine
- if (newInfo.contains("[download]")) {
- val temp = output!!.text.toString()
- output!!.text =
- temp.substring(0, temp.lastIndexOf(System.getProperty("line.separator")!!) - 2)
- }
- output!!.append(
- """${info.outputLine}
-"""
- )
- output!!.scrollTo(0, output!!.height)
- scrollView!!.fullScroll(View.FOCUS_DOWN)
- }
-
- @SuppressLint("SetTextI18n")
- override fun onDownloadError(info: DownloadInfo) {
- output!!.append(
- """
-
- ${info.outputLine}
- """.trimIndent()
- )
- scrollView!!.scrollTo(0, scrollView!!.maxScrollAmount)
- input!!.setText("yt-dlp ")
- input!!.isEnabled = true
- swapFabs()
- }
-
- @SuppressLint("SetTextI18n")
- override fun onDownloadEnd(info: DownloadInfo) {
- output!!.append(info.outputLine)
- scrollView!!.scrollTo(0, scrollView!!.maxScrollAmount)
- // MEDIA SCAN
- MediaScannerConnection.scanFile(context, arrayOf("/storage"), null, null)
- input!!.setText("yt-dlp ")
- input!!.isEnabled = true
- swapFabs()
- }
-
- override fun onDownloadCancel(downloadInfo: DownloadInfo) {}
- override fun onDownloadCancelAll(downloadInfo: DownloadInfo) {}
- override fun onDownloadServiceEnd() {
- stopDownloadService()
- }
- }
+// private val serviceConnection: ServiceConnection = object : ServiceConnection {
+// override fun onServiceConnected(className: ComponentName, service: IBinder) {
+// downloaderService = (service as LocalBinder).service
+// iDownloaderService = service
+// isDownloadServiceRunning = true
+// try {
+// val listeners = ArrayList()
+// listeners.add(listener)
+// iDownloaderService!!.addActivity(this@CustomCommandActivity, listeners)
+// listener.onDownloadStart(iDownloaderService!!.info)
+// } catch (e: Exception) {
+// e.printStackTrace()
+// }
+// }
+//
+// override fun onServiceDisconnected(componentName: ComponentName) {
+// downloaderService = null
+// iDownloaderService = null
+// isDownloadServiceRunning = false
+// }
+// }
+// var listener: IDownloaderListener = object : IDownloaderListener {
+// override fun onDownloadStart(info: DownloadInfo) {
+// input!!.isEnabled = false
+// output!!.text = ""
+// swapFabs()
+// }
+//
+// override fun onDownloadProgress(info: DownloadInfo) {
+// val newInfo = info.outputLine
+// if (newInfo.contains("[download]")) {
+// val temp = output!!.text.toString()
+// output!!.text =
+// temp.substring(0, temp.lastIndexOf(System.getProperty("line.separator")!!) - 2)
+// }
+// output!!.append(
+// """${info.outputLine}
+//"""
+// )
+// output!!.scrollTo(0, output!!.height)
+// scrollView!!.fullScroll(View.FOCUS_DOWN)
+// }
+//
+// @SuppressLint("SetTextI18n")
+// override fun onDownloadError(info: DownloadInfo) {
+// output!!.append(
+// """
+//
+// ${info.outputLine}
+// """.trimIndent()
+// )
+// scrollView!!.scrollTo(0, scrollView!!.maxScrollAmount)
+// input!!.setText("yt-dlp ")
+// input!!.isEnabled = true
+// swapFabs()
+// }
+//
+// @SuppressLint("SetTextI18n")
+// override fun onDownloadEnd(info: DownloadInfo) {
+// output!!.append(info.outputLine)
+// scrollView!!.scrollTo(0, scrollView!!.maxScrollAmount)
+// // MEDIA SCAN
+// MediaScannerConnection.scanFile(context, arrayOf("/storage"), null, null)
+// input!!.setText("yt-dlp ")
+// input!!.isEnabled = true
+// swapFabs()
+// }
+//
+// override fun onDownloadCancel(downloadInfo: DownloadInfo) {}
+// override fun onDownloadCancelAll(downloadInfo: DownloadInfo) {}
+// override fun onDownloadServiceEnd() {
+// stopDownloadService()
+// }
+// }
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -168,19 +157,19 @@ class CustomCommandActivity : AppCompatActivity() {
private fun startDownloadService(command: String?, id: Int) {
if (isDownloadServiceRunning) return
- val serviceIntent = Intent(context, DownloaderService::class.java)
- serviceIntent.putExtra("command", command)
- serviceIntent.putExtra("id", id)
- context!!.applicationContext.bindService(serviceIntent, serviceConnection, BIND_AUTO_CREATE)
+ //val serviceIntent = Intent(context, DownloaderService::class.java)
+// serviceIntent.putExtra("command", command)
+// serviceIntent.putExtra("id", id)
+ //context!!.applicationContext.bindService(serviceIntent, serviceConnection, BIND_AUTO_CREATE)
}
fun stopDownloadService() {
- if (!isDownloadServiceRunning) return
- iDownloaderService!!.removeActivity(this)
- context!!.applicationContext.unbindService(serviceConnection)
- downloaderService!!.stopForeground(true)
- downloaderService!!.stopSelf()
- isDownloadServiceRunning = false
+// if (!isDownloadServiceRunning) return
+// iDownloaderService!!.removeActivity(this)
+// context!!.applicationContext.unbindService(serviceConnection)
+// downloaderService!!.stopForeground(true)
+// downloaderService!!.stopSelf()
+// isDownloadServiceRunning = false
}
fun cancelDownloadService() {