mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	fixed #717 and regex stuff
This commit is contained in:
		
							parent
							
								
									d7ffcbc996
								
							
						
					
					
						commit
						75472f5847
					
				
					 9 changed files with 17 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -35,7 +35,7 @@ class AnimePaheProvider : MainAPI() {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val YTSM = "ysmm = '([^']+)".toRegex()
 | 
			
		||||
        val YTSM = Regex("ysmm = '([^']+)")
 | 
			
		||||
 | 
			
		||||
        val KWIK_PARAMS_RE = Regex("""\("(\w+)",\d+,"(\w+)",(\d+),(\d+),\d+\)""")
 | 
			
		||||
        val KWIK_D_URL = Regex("action=\"([^\"]+)\"")
 | 
			
		||||
| 
						 | 
				
			
			@ -264,11 +264,11 @@ class AnimePaheProvider : MainAPI() {
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            val episodes = generateListOfEpisodes(url)
 | 
			
		||||
            val year = """<strong>Aired:</strong>[^,]*, (\d+)""".toRegex()
 | 
			
		||||
            val year = Regex("""<strong>Aired:</strong>[^,]*, (\d+)""")
 | 
			
		||||
                .find(html)!!.destructured.component1()
 | 
			
		||||
                .toIntOrNull()
 | 
			
		||||
            val status =
 | 
			
		||||
                when ("""<strong>Status:</strong>[^a]*a href=["']/anime/(.*?)["']""".toRegex()
 | 
			
		||||
                when (Regex("""<strong>Status:</strong>[^a]*a href=["']/anime/(.*?)["']""")
 | 
			
		||||
                    .find(html)!!.destructured.component1()) {
 | 
			
		||||
                    "airing" -> ShowStatus.Ongoing
 | 
			
		||||
                    "completed" -> ShowStatus.Completed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -125,9 +125,9 @@ class NineAnimeProvider : MainAPI() {
 | 
			
		|||
 | 
			
		||||
    private fun ze(input: String): String {
 | 
			
		||||
        val t = if (input.replace("""[\t\n\f\r]""".toRegex(), "").length % 4 == 0) {
 | 
			
		||||
            input.replace("""/==?$/""".toRegex(), "")
 | 
			
		||||
            input.replace(Regex("""/==?$/"""), "")
 | 
			
		||||
        } else input
 | 
			
		||||
        if (t.length % 4 == 1 || t.contains("""[^+/0-9A-Za-z]""".toRegex())) throw Exception("bad input")
 | 
			
		||||
        if (t.length % 4 == 1 || t.contains(Regex("""[^+/0-9A-Za-z]"""))) throw Exception("bad input")
 | 
			
		||||
        var i: Int
 | 
			
		||||
        var r = ""
 | 
			
		||||
        var e = 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -284,7 +284,7 @@ class TenshiProvider : MainAPI() {
 | 
			
		|||
                document.selectFirst("span.value > span[title=\"Japanese\"]")?.parent()?.text()
 | 
			
		||||
                    ?.trim()
 | 
			
		||||
 | 
			
		||||
            val pattern = "(\\d{4})".toRegex()
 | 
			
		||||
            val pattern = Regex("(\\d{4})")
 | 
			
		||||
            val yearText = document.selectFirst("li.release-date .value").text()
 | 
			
		||||
            year = pattern.find(yearText)?.groupValues?.get(1)?.toIntOrNull()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,7 +54,7 @@ class WcoProvider : MainAPI() {
 | 
			
		|||
                    val title = nameHeader.text().replace(" (Dub)", "")
 | 
			
		||||
                    val href =
 | 
			
		||||
                        nameHeader.attr("href").replace("/watch/", "/anime/")
 | 
			
		||||
                            .replace("-episode-.*".toRegex(), "/")
 | 
			
		||||
                            .replace(Regex("-episode-.*"), "/")
 | 
			
		||||
                    val isDub =
 | 
			
		||||
                        filmPoster.selectFirst("> div.film-poster-quality")?.text()?.contains("DUB")
 | 
			
		||||
                            ?: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ object M3u8Manifest {
 | 
			
		|||
    // URL = first, QUALITY = second
 | 
			
		||||
    fun extractLinks(m3u8Data: String): ArrayList<Pair<String, String>> {
 | 
			
		||||
        val data: ArrayList<Pair<String, String>> = ArrayList()
 | 
			
		||||
        "\"(.*?)\":\"(.*?)\"".toRegex().findAll(m3u8Data).forEach {
 | 
			
		||||
        Regex("\"(.*?)\":\"(.*?)\"").findAll(m3u8Data).forEach {
 | 
			
		||||
            var quality = it.groupValues[1].replace("auto", "Auto")
 | 
			
		||||
            if (quality != "Auto" && !quality.endsWith('p')) quality += "p"
 | 
			
		||||
            val url = it.groupValues[2]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,8 +20,8 @@ open class WcoStream : ExtractorApi() {
 | 
			
		|||
        val baseUrl = url.split("/e/")[0]
 | 
			
		||||
 | 
			
		||||
        val html = app.get(url, headers = mapOf("Referer" to "https://wcostream.cc/")).text
 | 
			
		||||
        val (Id) = ("/e/(.*?)?domain".toRegex().find(url)?.destructured ?: Regex("""/e/(.*)""").find(url)?.destructured) ?: return emptyList()
 | 
			
		||||
        val (skey) = """skey\s=\s['"](.*?)['"];""".toRegex().find(html)?.destructured ?: return emptyList()
 | 
			
		||||
        val (Id) = (Regex("/e/(.*?)?domain").find(url)?.destructured ?: Regex("""/e/(.*)""").find(url)?.destructured) ?: return emptyList()
 | 
			
		||||
        val (skey) = Regex("""skey\s=\s['"](.*?)['"];""").find(html)?.destructured ?: return emptyList()
 | 
			
		||||
 | 
			
		||||
        val apiLink = "$baseUrl/info/$Id?domain=wcostream.cc&skey=$skey"
 | 
			
		||||
        val referrer = "$baseUrl/e/$Id?domain=wcostream.cc"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,9 +39,9 @@ class HDMProvider : MainAPI() {
 | 
			
		|||
        callback: (ExtractorLink) -> Unit
 | 
			
		||||
    ): Boolean {
 | 
			
		||||
        if (data == "") return false
 | 
			
		||||
        val slug = ".*/(.*?)\\.mp4".toRegex().find(data)?.groupValues?.get(1) ?: return false
 | 
			
		||||
        val slug = Regex(".*/(.*?)\\.mp4").find(data)?.groupValues?.get(1) ?: return false
 | 
			
		||||
        val response = app.get(data).text
 | 
			
		||||
        val key = "playlist\\.m3u8(.*?)\"".toRegex().find(response)?.groupValues?.get(1) ?: return false
 | 
			
		||||
        val key = Regex("playlist\\.m3u8(.*?)\"").find(response)?.groupValues?.get(1) ?: return false
 | 
			
		||||
        callback.invoke(
 | 
			
		||||
            ExtractorLink(
 | 
			
		||||
                this.name,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ class CS3IPlayer : IPlayer {
 | 
			
		|||
        playerPositionChanged: ((Pair<Long, Long>) -> Unit)?,
 | 
			
		||||
        nextEpisode: (() -> Unit)?,
 | 
			
		||||
        prevEpisode: (() -> Unit)?,
 | 
			
		||||
        subtitlesUpdates: (() -> Unit)?
 | 
			
		||||
        subtitlesUpdates: (() -> Unit)?,
 | 
			
		||||
    ) {
 | 
			
		||||
        this.playerUpdated = playerUpdated
 | 
			
		||||
        this.updateIsPlaying = updateIsPlaying
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +218,7 @@ class CS3IPlayer : IPlayer {
 | 
			
		|||
        } ?: false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var currentSubtitleOffset : Long = 0
 | 
			
		||||
    var currentSubtitleOffset: Long = 0
 | 
			
		||||
 | 
			
		||||
    override fun setSubtitleOffset(offset: Long) {
 | 
			
		||||
        currentSubtitleOffset = offset
 | 
			
		||||
| 
						 | 
				
			
			@ -419,7 +419,7 @@ class CS3IPlayer : IPlayer {
 | 
			
		|||
            currentWindow: Int,
 | 
			
		||||
            playbackPosition: Long,
 | 
			
		||||
            playBackSpeed: Float,
 | 
			
		||||
            subtitleOffset : Long,
 | 
			
		||||
            subtitleOffset: Long,
 | 
			
		||||
            playWhenReady: Boolean = true,
 | 
			
		||||
            cacheFactory: CacheDataSource.Factory? = null,
 | 
			
		||||
            trackSelector: TrackSelector? = null,
 | 
			
		||||
| 
						 | 
				
			
			@ -617,10 +617,7 @@ class CS3IPlayer : IPlayer {
 | 
			
		|||
                }
 | 
			
		||||
 | 
			
		||||
                //override fun onCues(cues: MutableList<Cue>) {
 | 
			
		||||
                //    cues.firstOrNull()?.text?.let {
 | 
			
		||||
                //        println("CUE: $it")
 | 
			
		||||
                //    }
 | 
			
		||||
                //    super.onCues(cues)
 | 
			
		||||
                //    super.onCues(cues.map { cue -> cue.buildUpon().setText("Hello world").setSize(Cue.DIMEN_UNSET).build() })
 | 
			
		||||
                //}
 | 
			
		||||
 | 
			
		||||
                override fun onRenderedFirstFrame() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ open class NonFinalTextRenderer @JvmOverloads constructor(
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    private fun invokeUpdateOutputInternal(cues: List<Cue>) {
 | 
			
		||||
        output.onCues(cues)
 | 
			
		||||
        output.onCues(cues.map { cue -> cue.buildUpon().setSize(Cue.DIMEN_UNSET).build() }) // this fixes https://github.com/LagradOst/CloudStream-3/issues/717
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue