mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	subtitles correct scroll
This commit is contained in:
		
							parent
							
								
									e5189a1c7e
								
							
						
					
					
						commit
						9da1ce6032
					
				
					 3 changed files with 35 additions and 13 deletions
				
			
		|  | @ -14,6 +14,7 @@ import com.lagradost.cloudstream3.movieproviders.TrailersToProvider | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import java.util.* | ||||
| import kotlin.collections.ArrayList | ||||
| import kotlin.collections.HashMap | ||||
| 
 | ||||
| const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0" | ||||
| val baseHeader = mapOf("User-Agent" to USER_AGENT) | ||||
|  | @ -48,8 +49,10 @@ object APIHolder { | |||
|     fun Activity.getApiSettings(): HashSet<String> { | ||||
|         val settingsManager = PreferenceManager.getDefaultSharedPreferences(this) | ||||
| 
 | ||||
|         return settingsManager.getStringSet(this.getString(R.string.search_providers_list_key), | ||||
|             setOf(apis[defProvider].name))?.toHashSet() ?: hashSetOf(apis[defProvider].name) | ||||
|         return settingsManager.getStringSet( | ||||
|             this.getString(R.string.search_providers_list_key), | ||||
|             setOf(apis[defProvider].name) | ||||
|         )?.toHashSet() ?: hashSetOf(apis[defProvider].name) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -72,7 +75,12 @@ abstract class MainAPI { | |||
|     } | ||||
| 
 | ||||
|     // callback is fired once a link is found, will return true if method is executed successfully | ||||
|     open fun loadLinks(data: String, isCasting: Boolean, subtitleCallback : (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit): Boolean { | ||||
|     open fun loadLinks( | ||||
|         data: String, | ||||
|         isCasting: Boolean, | ||||
|         subtitleCallback: (SubtitleFile) -> Unit, | ||||
|         callback: (ExtractorLink) -> Unit | ||||
|     ): Boolean { | ||||
|         return false | ||||
|     } | ||||
| } | ||||
|  | @ -103,6 +111,16 @@ fun sortUrls(urls: List<ExtractorLink>): List<ExtractorLink> { | |||
|     return urls.sortedBy { t -> -t.quality } | ||||
| } | ||||
| 
 | ||||
| fun sortSubs(urls: List<SubtitleFile>): List<SubtitleFile> { | ||||
|     val encounteredTimes = HashMap<String, Int>() | ||||
|     return urls.sortedBy { t -> t.lang }.map { | ||||
|         val times = encounteredTimes[it.lang]?.plus(1) ?: 1 | ||||
|         encounteredTimes[it.lang] = times | ||||
| 
 | ||||
|         SubtitleFile("${it.lang} ${if (times > 1) "($times)" else ""}", it.url) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| enum class ShowStatus { | ||||
|     Completed, | ||||
|     Ongoing, | ||||
|  | @ -120,7 +138,7 @@ enum class TvType { | |||
|     ONA, | ||||
| } | ||||
| 
 | ||||
| data class SubtitleFile(val lang : String, val url : String) | ||||
| data class SubtitleFile(val lang: String, val url: String) | ||||
| 
 | ||||
| interface SearchResponse { | ||||
|     val name: String | ||||
|  |  | |||
|  | @ -7,7 +7,6 @@ import android.view.Menu | |||
| import android.view.View.* | ||||
| import android.widget.* | ||||
| import androidx.appcompat.app.AlertDialog | ||||
| import androidx.core.graphics.toColorInt | ||||
| import com.fasterxml.jackson.databind.DeserializationFeature | ||||
| import com.fasterxml.jackson.databind.json.JsonMapper | ||||
| import com.fasterxml.jackson.module.kotlin.KotlinModule | ||||
|  | @ -118,11 +117,20 @@ class SelectSourceController(val view: ImageView, val activity: ControllerActivi | |||
|                     } else { | ||||
|                         val arrayAdapter = ArrayAdapter<String>(view.context, R.layout.sort_bottom_single_choice) | ||||
|                         arrayAdapter.add("No Subtitles") | ||||
|                         arrayAdapter.addAll(subTracks.map { it.name }.filterNotNull()) | ||||
|                         arrayAdapter.addAll(subTracks.mapNotNull { it.name }) | ||||
| 
 | ||||
|                         subtitleList.choiceMode = AbsListView.CHOICE_MODE_SINGLE | ||||
|                         subtitleList.adapter = arrayAdapter | ||||
| 
 | ||||
|                         val currentTracks = remoteMediaClient?.mediaStatus?.activeTrackIds | ||||
| 
 | ||||
|                         val subtitleIndex = | ||||
|                             if (currentTracks == null) 0 else subTracks.map { it.id } | ||||
|                                 .indexOfFirst { currentTracks.contains(it) } + 1 | ||||
| 
 | ||||
|                         subtitleList.setSelection(subtitleIndex) | ||||
|                         subtitleList.setItemChecked(subtitleIndex, true) | ||||
| 
 | ||||
|                         subtitleList.setOnItemClickListener { _, _, which, _ -> | ||||
|                             if (which == 0) { | ||||
|                                 remoteMediaClient.setActiveMediaTracks(longArrayOf()) // NO SUBS | ||||
|  | @ -164,6 +172,7 @@ class SelectSourceController(val view: ImageView, val activity: ControllerActivi | |||
| 
 | ||||
|                     providerList.choiceMode = AbsListView.CHOICE_MODE_SINGLE | ||||
|                     providerList.adapter = arrayAdapter | ||||
|                     providerList.setSelection(sotringIndex) | ||||
|                     providerList.setItemChecked(sotringIndex, true) | ||||
| 
 | ||||
|                     providerList.setOnItemClickListener { _, _, which, _ -> | ||||
|  | @ -359,11 +368,5 @@ class ControllerActivity : ExpandedControllerActivity() { | |||
|         uiMediaController.bindViewToUIController(skipBackButton, SkipTimeController(skipBackButton, false)) | ||||
|         uiMediaController.bindViewToUIController(skipForwardButton, SkipTimeController(skipForwardButton, true)) | ||||
|         uiMediaController.bindViewToUIController(skipOpButton, SkipNextEpisodeController(skipOpButton)) | ||||
| 
 | ||||
| 
 | ||||
|         /*      val progressBar: CastSeekBar? = findViewById(R.id.cast_seek_bar) | ||||
| 
 | ||||
|               progressBar?.backgroundTintList = (UIHelper.adjustAlpha(colorFromAttribute(R.attr.colorPrimary), 0.35f)) | ||||
|       */ | ||||
|     } | ||||
| } | ||||
|  | @ -14,6 +14,7 @@ import com.google.android.gms.cast.framework.media.RemoteMediaClient | |||
| import com.google.android.gms.common.api.PendingResult | ||||
| import com.google.android.gms.common.images.WebImage | ||||
| import com.lagradost.cloudstream3.SubtitleFile | ||||
| import com.lagradost.cloudstream3.sortSubs | ||||
| import com.lagradost.cloudstream3.ui.MetadataHolder | ||||
| import com.lagradost.cloudstream3.ui.result.ResultEpisode | ||||
| import com.lagradost.cloudstream3.utils.Coroutines.main | ||||
|  | @ -50,7 +51,7 @@ object CastHelper { | |||
|         } | ||||
| 
 | ||||
|         var subIndex = 0 | ||||
|         val tracks = subtitles.map { | ||||
|         val tracks = sortSubs(subtitles).map { | ||||
|             MediaTrack.Builder(subIndex++.toLong(), MediaTrack.TYPE_TEXT) | ||||
|                 .setName(it.lang) | ||||
|                 .setSubtype(MediaTrack.SUBTYPE_SUBTITLES) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue