forked from recloudstream/cloudstream
removed shit
This commit is contained in:
parent
989d7666be
commit
d841c1aa7f
3 changed files with 17 additions and 224 deletions
|
@ -130,7 +130,7 @@ dependencies {
|
|||
implementation 'org.mozilla:rhino:1.7R4'
|
||||
|
||||
// TorrentStream
|
||||
implementation 'com.github.TorrentStream:TorrentStream-Android:2.7.0'
|
||||
//implementation 'com.github.TorrentStream:TorrentStream-Android:2.7.0'
|
||||
|
||||
// Downloading
|
||||
implementation "androidx.work:work-runtime:2.7.0-beta01"
|
||||
|
|
|
@ -44,11 +44,6 @@ import com.fasterxml.jackson.databind.DeserializationFeature
|
|||
import com.fasterxml.jackson.databind.json.JsonMapper
|
||||
import com.fasterxml.jackson.module.kotlin.KotlinModule
|
||||
import com.fasterxml.jackson.module.kotlin.readValue
|
||||
import com.github.se_bastiaan.torrentstream.StreamStatus
|
||||
import com.github.se_bastiaan.torrentstream.Torrent
|
||||
import com.github.se_bastiaan.torrentstream.TorrentOptions
|
||||
import com.github.se_bastiaan.torrentstream.TorrentStream
|
||||
import com.github.se_bastiaan.torrentstream.listeners.TorrentListener
|
||||
import com.google.android.exoplayer2.*
|
||||
import com.google.android.exoplayer2.C.TIME_UNSET
|
||||
import com.google.android.exoplayer2.database.ExoDatabaseProvider
|
||||
|
@ -172,12 +167,12 @@ data class UriData(
|
|||
class PlayerFragment : Fragment() {
|
||||
|
||||
// ============ TORRENT ============
|
||||
private var torrentStream: TorrentStream? = null
|
||||
//private var torrentStream: TorrentStream? = null
|
||||
private var lastTorrentUrl = ""
|
||||
private val isTorrent: Boolean get() = torrentStream != null
|
||||
//private val isTorrent: Boolean get() = torrentStream != null
|
||||
private fun initTorrentStream(torrentUrl: String) {
|
||||
if (lastTorrentUrl == torrentUrl) return
|
||||
lastTorrentUrl = torrentUrl
|
||||
/*lastTorrentUrl = torrentUrl
|
||||
torrentStream?.stopStream()
|
||||
torrentStream = null
|
||||
|
||||
|
@ -232,7 +227,7 @@ class PlayerFragment : Fragment() {
|
|||
println("stream stopped")
|
||||
}
|
||||
})
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// =================================
|
||||
|
@ -404,7 +399,7 @@ class PlayerFragment : Fragment() {
|
|||
bottom_player_bar?.startAnimation(fadeAnimation)
|
||||
player_top_holder?.startAnimation(fadeAnimation)
|
||||
// video_holder?.startAnimation(fadeAnimation)
|
||||
player_torrent_info?.isVisible = (isTorrent && isShowing)
|
||||
//player_torrent_info?.isVisible = (isTorrent && isShowing)
|
||||
// player_torrent_info?.startAnimation(fadeAnimation)
|
||||
//video_lock_holder?.startAnimation(fadeAnimation)
|
||||
}
|
||||
|
@ -1629,7 +1624,7 @@ class PlayerFragment : Fragment() {
|
|||
activity?.window?.attributes = params
|
||||
}
|
||||
|
||||
torrentStream?.currentTorrent?.resume()
|
||||
//torrentStream?.currentTorrent?.resume()
|
||||
onAudioFocusEvent += ::handlePauseEvent
|
||||
|
||||
activity?.hideSystemUI()
|
||||
|
@ -1667,8 +1662,8 @@ class PlayerFragment : Fragment() {
|
|||
savePos()
|
||||
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
||||
|
||||
torrentStream?.stopStream()
|
||||
torrentStream = null
|
||||
// torrentStream?.stopStream()
|
||||
// torrentStream = null
|
||||
|
||||
super.onDestroy()
|
||||
canEnterPipMode = false
|
||||
|
@ -1685,7 +1680,7 @@ class PlayerFragment : Fragment() {
|
|||
override fun onPause() {
|
||||
savePos()
|
||||
super.onPause()
|
||||
torrentStream?.currentTorrent?.pause()
|
||||
// torrentStream?.currentTorrent?.pause()
|
||||
if (Util.SDK_INT <= 23) {
|
||||
if (player_view != null) player_view.onPause()
|
||||
releasePlayer()
|
||||
|
@ -1928,10 +1923,10 @@ class PlayerFragment : Fragment() {
|
|||
var epSeason: Int? = null
|
||||
var isEpisodeBased = true
|
||||
|
||||
if (isTorrent) {
|
||||
/*if (isTorrent) {
|
||||
hName = "Torrent Stream"
|
||||
isEpisodeBased = false
|
||||
} else if (isDownloadedFile) {
|
||||
} else*/ if (isDownloadedFile) {
|
||||
hName = uriData.name
|
||||
epEpisode = uriData.episode
|
||||
epSeason = uriData.season
|
||||
|
@ -1992,11 +1987,12 @@ class PlayerFragment : Fragment() {
|
|||
video_title_rez?.text =
|
||||
if (height == null || width == null) currentUrl?.name
|
||||
?: "" else
|
||||
if (isTorrent) "${width}x${height}" else
|
||||
// if (isTorrent) "${width}x${height}" else
|
||||
if (isDownloadedFile || currentUrl?.name == null) "${width}x${height}" else "${currentUrl.name} - ${width}x${height}"
|
||||
|
||||
if (!hasUsedFirstRender) { // DON'T WANT TO SET MULTIPLE MESSAGES
|
||||
if (!isDownloadedFile && !isTorrent && exoPlayer.duration in 5_000..10_000) {
|
||||
//&& !isTorrent
|
||||
if (!isDownloadedFile && exoPlayer.duration in 5_000..10_000) {
|
||||
// if(getapi apiName )
|
||||
showToast(activity, R.string.vpn_might_be_needed, LENGTH_SHORT)
|
||||
}
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package com.lagradost.cloudstream3.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.*
|
||||
import android.app.Activity
|
||||
import android.app.Notification
|
||||
import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
|
@ -12,7 +10,6 @@ import android.net.Uri
|
|||
import android.os.Build
|
||||
import android.os.Environment
|
||||
import android.provider.MediaStore
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.app.NotificationCompat
|
||||
|
@ -24,14 +21,7 @@ import androidx.work.OneTimeWorkRequest
|
|||
import androidx.work.WorkManager
|
||||
import com.bumptech.glide.Glide
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import com.github.se_bastiaan.torrentstream.StreamStatus
|
||||
import com.github.se_bastiaan.torrentstream.Torrent
|
||||
import com.github.se_bastiaan.torrentstream.TorrentOptions
|
||||
import com.github.se_bastiaan.torrentstream.TorrentStream
|
||||
import com.github.se_bastiaan.torrentstream.listeners.TorrentListener
|
||||
import com.lagradost.cloudstream3.AnimeLoadResponse
|
||||
import com.lagradost.cloudstream3.MainActivity
|
||||
import com.lagradost.cloudstream3.MainActivity.Companion.showToast
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.mvvm.logError
|
||||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||
|
@ -517,22 +507,6 @@ object VideoDownloadManager {
|
|||
val bytesTotal: Long,
|
||||
)
|
||||
|
||||
fun getSizeAndProgressFromTorrent(torrent: Torrent?, progress: Float?): Pair<Long, Long>? {
|
||||
try {
|
||||
if (torrent == null || progress == null) return null
|
||||
val length = torrent.videoFile?.length() ?: 0
|
||||
if (length > 0) {
|
||||
// val bytesTotal = (length * 100 / progress).toLong()
|
||||
// if (bytesTotal > 0 && length > 0) {
|
||||
return Pair((length * progress / 100).toLong(), length)
|
||||
//}
|
||||
}
|
||||
return null
|
||||
} catch (e: Exception) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
data class StreamData(
|
||||
val errorCode: Int,
|
||||
val resume: Boolean? = null,
|
||||
|
@ -623,173 +597,6 @@ object VideoDownloadManager {
|
|||
return StreamData(SUCCESS_STREAM, resume, fileLength, fileStream)
|
||||
}
|
||||
|
||||
private fun downloadTorrent(
|
||||
context: Context,
|
||||
link: String,
|
||||
name: String,
|
||||
folder: String?,
|
||||
extension: String,
|
||||
//tryResume: Boolean = false,
|
||||
parentId: Int?,
|
||||
createNotificationCallback: (CreateNotificationMetadata) -> Unit
|
||||
): Int {
|
||||
val stream = setupStream(context, name, folder, extension, false)
|
||||
if (stream.errorCode != SUCCESS_STREAM) return stream.errorCode
|
||||
|
||||
val torrentOptions: TorrentOptions = TorrentOptions.Builder()
|
||||
.saveLocation(context.cacheDir.absolutePath)
|
||||
.removeFilesAfterStop(true)
|
||||
.build()
|
||||
|
||||
val torrentStream = TorrentStream.init(torrentOptions)
|
||||
torrentStream.startStream(link)
|
||||
|
||||
var progress = 0f
|
||||
var isDone = false
|
||||
var isFailed = false
|
||||
|
||||
torrentStream.addListener(object : TorrentListener {
|
||||
override fun onStreamPrepared(torrent: Torrent?) {
|
||||
|
||||
//showToast(context, "Stream Prepared", Toast.LENGTH_SHORT)
|
||||
}
|
||||
|
||||
override fun onStreamStarted(torrent: Torrent?) {
|
||||
// showToast(context, "Stream Started", Toast.LENGTH_SHORT)
|
||||
}
|
||||
|
||||
override fun onStreamError(torrent: Torrent?, e: java.lang.Exception?) {
|
||||
isFailed = true
|
||||
e?.printStackTrace()
|
||||
// showToast(context, e?.localizedMessage ?: "Error loading", Toast.LENGTH_SHORT)
|
||||
}
|
||||
|
||||
override fun onStreamReady(torrent: Torrent?) {
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onStreamProgress(torrent: Torrent?, status: StreamStatus?) {
|
||||
try {
|
||||
println("Seeders ${status?.seeds}")
|
||||
println("Download Speed ${status?.downloadSpeed}")
|
||||
println("Progress ${status?.progress}%")
|
||||
|
||||
val lengthSize = getSizeAndProgressFromTorrent(torrent, status?.progress)
|
||||
if (lengthSize != null) {
|
||||
progress = status?.progress!!
|
||||
val type = if (progress >= 100f) DownloadType.IsDone else DownloadType.IsDownloading
|
||||
parentId?.let { id ->
|
||||
try {
|
||||
downloadStatus[id] = type
|
||||
downloadStatusEvent.invoke(Pair(id, type))
|
||||
downloadProgressEvent.invoke(Triple(id, lengthSize.first, lengthSize.second))
|
||||
} catch (e: Exception) {
|
||||
// IDK MIGHT ERROR
|
||||
}
|
||||
}
|
||||
createNotificationCallback.invoke(
|
||||
CreateNotificationMetadata(
|
||||
type,
|
||||
lengthSize.first,
|
||||
lengthSize.second
|
||||
)
|
||||
)
|
||||
}
|
||||
val pro = status?.progress
|
||||
if (pro != null && pro >= 100) {
|
||||
isDone = true
|
||||
}
|
||||
|
||||
} catch (e: IllegalStateException) {
|
||||
logError(e)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStreamStopped() {
|
||||
if (progress > 98) {
|
||||
isDone = true
|
||||
} else {
|
||||
isFailed = true
|
||||
}
|
||||
println("stream stopped")
|
||||
}
|
||||
})
|
||||
|
||||
fun updateNot(type: DownloadType) {
|
||||
val lengthSize = getSizeAndProgressFromTorrent(torrentStream.currentTorrent, progress) ?: return
|
||||
|
||||
createNotificationCallback.invoke(
|
||||
CreateNotificationMetadata(
|
||||
type,
|
||||
lengthSize.first, lengthSize.second
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
val downloadEventListener = { event: Pair<Int, DownloadActionType> ->
|
||||
if (event.first == parentId) {
|
||||
when (event.second) {
|
||||
DownloadActionType.Pause -> {
|
||||
torrentStream?.currentTorrent?.pause()
|
||||
updateNot(DownloadType.IsPaused)
|
||||
}
|
||||
DownloadActionType.Stop -> {
|
||||
isFailed = true
|
||||
torrentStream.stopStream()
|
||||
torrentStream?.currentTorrent?.videoFile?.delete()
|
||||
updateNot(DownloadType.IsStopped)
|
||||
context.removeKey(KEY_RESUME_PACKAGES, event.first.toString())
|
||||
saveQueue(context)
|
||||
}
|
||||
DownloadActionType.Resume -> {
|
||||
torrentStream?.currentTorrent?.resume()
|
||||
updateNot(DownloadType.IsDownloading)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (parentId != null)
|
||||
downloadEvent += downloadEventListener
|
||||
|
||||
var lastProgress = progress
|
||||
var lastUpdateTime = System.currentTimeMillis()
|
||||
while (!isDone && !isFailed) {
|
||||
sleep(100)
|
||||
if (lastProgress != progress) {
|
||||
lastUpdateTime = System.currentTimeMillis()
|
||||
lastProgress = progress
|
||||
}
|
||||
if (progress >= 98f && System.currentTimeMillis() - lastUpdateTime > 10000L) { // after 10 sec set as done
|
||||
isDone = true
|
||||
}
|
||||
}
|
||||
|
||||
if (parentId != null)
|
||||
downloadEvent -= downloadEventListener
|
||||
|
||||
// RETURN MESSAGE
|
||||
return when {
|
||||
isFailed -> {
|
||||
parentId?.let { id -> downloadProgressEvent.invoke(Triple(id, 0, 0)) }
|
||||
SUCCESS_STOPPED
|
||||
}
|
||||
isDone -> {
|
||||
stream.fileStream?.let { fileStream ->
|
||||
torrentStream?.currentTorrent?.videoStream?.copyTo(fileStream)
|
||||
torrentStream?.currentTorrent?.videoFile?.delete()
|
||||
}
|
||||
|
||||
SUCCESS_DOWNLOAD_DONE
|
||||
}
|
||||
else -> {
|
||||
SUCCESS_DOWNLOAD_DONE
|
||||
//idk
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun downloadThing(
|
||||
context: Context,
|
||||
link: IDownloadableMinimum,
|
||||
|
@ -801,17 +608,7 @@ object VideoDownloadManager {
|
|||
createNotificationCallback: (CreateNotificationMetadata) -> Unit
|
||||
): Int {
|
||||
if (link.url.startsWith("magnet") || link.url.endsWith(".torrent")) {
|
||||
return normalSafeApiCall {
|
||||
downloadTorrent(
|
||||
context,
|
||||
link.url,
|
||||
name,
|
||||
folder,
|
||||
extension,
|
||||
parentId,
|
||||
createNotificationCallback
|
||||
)
|
||||
} ?: ERROR_UNKNOWN
|
||||
return ERROR_UNKNOWN
|
||||
}
|
||||
|
||||
val relativePath = getRelativePath(folder)
|
||||
|
|
Loading…
Reference in a new issue