mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	Add isM3u8 to raw stream button
This commit is contained in:
		
							parent
							
								
									6f3e9891c5
								
							
						
					
					
						commit
						afb35f73b3
					
				
					 4 changed files with 90 additions and 53 deletions
				
			
		|  | @ -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 | ||||
|                             ) | ||||
|                         ) | ||||
|                     ) | ||||
|  |  | |||
|  | @ -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 | ||||
|                 ) | ||||
|             } | ||||
|  |  | |||
|  | @ -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> | ||||
|  | @ -615,4 +615,5 @@ | |||
|     <string name="safe_mode_title">Safe Mode enabled</string> | ||||
|     <string name="safe_mode_description">An unrecoverable crash occurred and we\'ve automatically disabled all extensions, so you can find and remove the extension which is causing trouble.</string> | ||||
|     <string name="safe_mode_crash_info">View crash info</string> | ||||
|     <string name="hls_playlist">HLS Playlist</string> | ||||
| </resources> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue