Skip to content

Commit

Permalink
[feature] Initial support for playing video by magnet link
Browse files Browse the repository at this point in the history
  • Loading branch information
SkyD666 committed Apr 19, 2024
1 parent 17bda1a commit 7a63462
Show file tree
Hide file tree
Showing 11 changed files with 712 additions and 11 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ android {
applicationId = "com.skyd.anivu"
minSdk = 24
targetSdk = 34
versionCode = 12
versionName = "1.1-beta09"
versionCode = 13
versionName = "1.1-beta11"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,11 @@ internal fun initProxySettings(context: Context, settings: SettingsPack): Settin
settings_pack.int_types.proxy_port.swigValue(),
proxyPort
).run {
if (proxyUsername.isBlank() || proxyPassword.isBlank()) this
else {
if (proxyUsername.isBlank() || proxyPassword.isBlank()) {
clear(settings_pack.string_types.proxy_username.swigValue())
clear(settings_pack.string_types.proxy_password.swigValue())
this
} else {
setString(
settings_pack.string_types.proxy_username.swigValue(),
proxyUsername
Expand Down
15 changes: 12 additions & 3 deletions app/src/main/java/com/skyd/anivu/ui/activity/PlayActivity.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.skyd.anivu.ui.activity

import android.annotation.SuppressLint
import android.content.Intent
import android.media.MediaMetadataRetriever
import android.net.Uri
import android.os.Bundle
import android.view.WindowManager
Expand All @@ -11,13 +11,16 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import com.skyd.anivu.base.BaseActivity
import com.skyd.anivu.databinding.ActivityPlayBinding
import com.skyd.anivu.ext.dataStore
import com.skyd.anivu.ext.getOrDefault
import com.skyd.anivu.model.preference.player.PlayerShow85sButtonPreference
import com.skyd.anivu.ui.player.TorrentDataSource


@SuppressLint("UnsafeOptInUsageError")
class PlayActivity : BaseActivity<ActivityPlayBinding>() {
companion object {
const val VIDEO_URI_KEY = "videoUri"
Expand Down Expand Up @@ -79,8 +82,14 @@ class PlayActivity : BaseActivity<ActivityPlayBinding>() {
if (videoUri == null) {
return false
}
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(videoUri!!))
if (videoUri.toString().startsWith("magnet:")) {
player.setMediaSource(DefaultMediaSourceFactory { TorrentDataSource() }
.createMediaSource(MediaItem.fromUri(videoUri!!)))
} else {
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(videoUri!!))
}
// player.setMediaItem(MediaItem.fromUri(Uri.parse("magnet:?xt=urn:btih:344a65fde5ab561370ad5f144319a9f4951ac125&dn=%5BLPSub%5D%20Kaii%20to%20Otome%20to%20Kamikakushi%20%5B01%5D%5BAVC%20AAC%5D%5B1080p%5D%5BJPTC%5D.mp4&tr=udp%3A%2F%2F104.143.10.186%3A8000%2Fannounce&tr=http%3A%2F%2F104.143.10.186%3A8000%2Fannounce&tr=http%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker3.itzmx.com%3A6961%2Fannounce&tr=udp%3A%2F%2Ftracker4.itzmx.com%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.publicbt.com%3A80%2Fannounce&tr=http%3A%2F%2Ftracker.prq.to%2Fannounce&tr=http%3A%2F%2Fopen.acgtracker.com%3A1096%2Fannounce&tr=https%3A%2F%2Ft-115.rhcloud.com%2Fonly_for_ylbud&tr=udp%3A%2F%2Ftracker1.itzmx.com%3A8080%2Fannounce&tr=udp%3A%2F%2Ftracker2.itzmx.com%3A6961%2Fannounce&tr=http%3A%2F%2Ftracker1.itzmx.com%3A8080%2Fannounce&tr=http%3A%2F%2Ftracker2.itzmx.com%3A6961%2Fannounce&tr=http%3A%2F%2Ftracker3.itzmx.com%3A6961%2Fannounce&tr=http%3A%2F%2Ftracker4.itzmx.com%3A2710%2Fannounce")))
// Prepare the player.
player.prepare()
player.play()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ import android.view.ViewGroup
import com.skyd.anivu.databinding.ItemEnclosure1Binding
import com.skyd.anivu.ext.copy
import com.skyd.anivu.ext.fileSize
import com.skyd.anivu.ext.gone
import com.skyd.anivu.ext.visible
import com.skyd.anivu.model.bean.EnclosureBean
import com.skyd.anivu.ui.adapter.variety.Enclosure1ViewHolder
import com.skyd.anivu.ui.adapter.variety.VarietyAdapter


class Enclosure1Proxy(
private val onDownload: (EnclosureBean) -> Unit,
private val onPlay: (EnclosureBean) -> Unit,
) : VarietyAdapter.Proxy<EnclosureBean, ItemEnclosure1Binding, Enclosure1ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Enclosure1ViewHolder =
Enclosure1ViewHolder(
Expand All @@ -34,6 +37,14 @@ class Enclosure1Proxy(
tvEnclosure1Url.setOnClickListener {
data.url.copy(context)
}
if (data.url.startsWith("magnet:")) {
btnEnclosure1Play.visible()
} else {
btnEnclosure1Play.gone()
}
btnEnclosure1Play.setOnClickListener {
onPlay(data)
}
btnEnclosure1Download.setOnClickListener {
onDownload(data)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.skyd.anivu.ui.fragment.read

import android.content.Intent
import android.os.Build
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.net.toUri
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.divider.MaterialDividerItemDecoration
Expand All @@ -13,6 +15,7 @@ import com.skyd.anivu.databinding.BottomSheetEnclosureBinding
import com.skyd.anivu.model.bean.EnclosureBean
import com.skyd.anivu.model.bean.LinkEnclosureBean
import com.skyd.anivu.model.worker.download.DownloadTorrentWorker
import com.skyd.anivu.ui.activity.PlayActivity
import com.skyd.anivu.ui.adapter.variety.AniSpanSize
import com.skyd.anivu.ui.adapter.variety.VarietyAdapter
import com.skyd.anivu.ui.adapter.variety.proxy.Enclosure1Proxy
Expand Down Expand Up @@ -72,7 +75,13 @@ class EnclosureBottomSheet : BaseBottomSheetDialogFragment<BottomSheetEnclosureB

private val adapter = VarietyAdapter(
mutableListOf(
Enclosure1Proxy(onDownload = onDownload),
Enclosure1Proxy(onDownload = onDownload, onPlay = {
startActivity(
Intent(requireContext(), PlayActivity::class.java).apply {
putExtra(PlayActivity.VIDEO_URI_KEY, it.url.toUri())
}
)
}),
LinkEnclosure1Proxy(onDownload = onDownload),
)
)
Expand Down
Loading

0 comments on commit 7a63462

Please sign in to comment.