This commit is contained in:
Cloudburst 2022-09-06 21:33:01 +02:00
commit 92c442c3c3
5 changed files with 93 additions and 55 deletions

View file

@ -38,6 +38,9 @@ import com.lagradost.cloudstream3.utils.VideoDownloadManager
import kotlinx.android.synthetic.main.fragment_downloads.*
import kotlinx.android.synthetic.main.stream_input.*
import android.text.format.Formatter.formatShortFileSize
import androidx.core.widget.doOnTextChanged
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import java.net.URI
const val DOWNLOAD_NAVIGATE_TO = "downloadpage"
@ -183,10 +186,29 @@ class DownloadFragment : Fragment() {
dialog.show()
// If user has clicked the switch do not interfere
var preventAutoSwitching = false
dialog.hls_switch?.setOnClickListener {
preventAutoSwitching = true
}
fun activateSwitchOnHls(text: String?) {
dialog.hls_switch?.isChecked = normalSafeApiCall {
URI(text).path?.substringAfterLast(".")?.contains("m3u")
} == true
}
dialog.stream_referer?.doOnTextChanged { text, _, _, _ ->
if (!preventAutoSwitching)
activateSwitchOnHls(text?.toString())
}
(activity?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager?)?.primaryClip?.getItemAt(
0
)?.text?.toString()?.let { copy ->
dialog.stream_url?.setText(copy)
val fixedText = copy.trim()
dialog.stream_url?.setText(fixedText)
activateSwitchOnHls(fixedText)
}
dialog.apply_btt?.setOnClickListener {
@ -202,7 +224,8 @@ class DownloadFragment : Fragment() {
LinkGenerator(
listOf(url),
extract = true,
referer = referer
referer = referer,
isM3u8 = dialog.hls_switch?.isChecked
)
)
)

View file

@ -553,8 +553,8 @@ class CS3IPlayer : IPlayer {
trackSelector.parameters = DefaultTrackSelector.ParametersBuilder(context)
// .setRendererDisabled(C.TRACK_TYPE_VIDEO, true)
.setRendererDisabled(C.TRACK_TYPE_TEXT, true)
// Experimental
.setTunnelingEnabled(true)
// Experimental, I think this causes issues with audio track init 5001
// .setTunnelingEnabled(true)
.setDisabledTextTrackSelectionFlags(C.TRACK_TYPE_TEXT)
// This will not force higher quality videos to fail
// but will make the m3u8 pick the correct preferred

View file

@ -1,12 +1,15 @@
package com.lagradost.cloudstream3.ui.player
import com.lagradost.cloudstream3.apmap
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import com.lagradost.cloudstream3.utils.*
import java.net.URI
class LinkGenerator(
private val links: List<String>,
private val extract: Boolean = true,
private val referer: String? = null,
private val isM3u8: Boolean? = null
) : IGenerator {
override val hasCache = false
@ -57,7 +60,9 @@ class LinkGenerator(
link,
unshortenLinkSafe(link), // unshorten because it might be a raw link
referer ?: "",
Qualities.Unknown.value, link.contains(".m3u") // TODO USE REAL PARSER
Qualities.Unknown.value, isM3u8 ?: normalSafeApiCall {
URI(link).path?.substringAfterLast(".")?.contains("m3u")
} ?: false
) to null
)
}

View file

@ -1,73 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<TextView
android:id="@+id/text1"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:textStyle="bold"
android:textSize="20sp"
android:textColor="?attr/textColor"
android:layout_width="match_parent"
android:layout_rowWeight="1"
android:text="@string/stream"
android:layout_height="wrap_content" />
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_rowWeight="1"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:text="@string/stream"
android:textColor="?attr/textColor"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:layout_weight="20"
android:id="@+id/stream_url"
android:inputType="textUri"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/network_adress_example"
tools:ignore="LabelFor" />
android:id="@+id/stream_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="20"
android:hint="@string/network_adress_example"
android:inputType="textUri"
tools:ignore="LabelFor" />
<EditText
android:layout_weight="20"
android:id="@+id/stream_referer"
android:inputType="textUri"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/referer"
tools:ignore="LabelFor" />
android:id="@+id/stream_referer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="20"
android:hint="@string/referer"
android:inputType="textUri"
tools:ignore="LabelFor" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/hls_switch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:text="@string/hls_playlist"
android:textColor="?attr/textColor"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_gravity="bottom"
android:gravity="bottom|end"
android:layout_width="match_parent"
android:layout_height="60dp">
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="bottom"
android:gravity="bottom|end"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
style="@style/WhiteButton"
android:layout_gravity="center_vertical|end"
android:visibility="visible"
android:text="@string/home_play"
android:id="@+id/apply_btt"
android:layout_width="wrap_content">
android:id="@+id/apply_btt"
style="@style/WhiteButton"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|end"
android:text="@string/home_play"
android:visibility="visible">
<requestFocus />
</com.google.android.material.button.MaterialButton>
<com.google.android.material.button.MaterialButton
style="@style/BlackButton"
android:layout_gravity="center_vertical|end"
android:text="@string/sort_cancel"
android:id="@+id/cancel_btt"
android:layout_width="wrap_content" />
android:id="@+id/cancel_btt"
style="@style/BlackButton"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|end"
android:text="@string/sort_cancel" />
</LinearLayout>
</LinearLayout>

View file

@ -624,4 +624,6 @@
<string name="extension_authors">Authors</string>
<string name="extension_types">Supported</string>
<string name="extension_language">Language</string>
<string name="hls_playlist">HLS Playlist</string>
</resources>