Skip to content

Commit

Permalink
- patch for mangapark not working currently. They updated the design,…
Browse files Browse the repository at this point in the history
… will update to fix
  • Loading branch information
jakepurple13 committed Apr 27, 2021
1 parent 7136f32 commit 9cafb74
Show file tree
Hide file tree
Showing 7 changed files with 393 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .idea/render.experimental.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ enum class Sources(private val api: ApiService) : ApiService by api {
GOGOANIME(GogoAnimeApi),
YTS(Yts),
ANIMETOON(AnimeToonApi),

//DUBBED_ANIME_BIZ(DubbedAnimeBiz),
//WCO_DUBBED(WcoDubbed),
DUBBED_ANIME(AnimeToonDubbed),
ANIMETOON_MOVIES(AnimeToonMovies);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
package com.programmersbox.anime_sources.anime

import com.programmersbox.anime_sources.ShowApi
import com.programmersbox.models.ChapterModel
import com.programmersbox.models.InfoModel
import com.programmersbox.models.ItemModel
import com.programmersbox.models.Storage
import io.reactivex.Single
import org.jsoup.Jsoup
import org.jsoup.nodes.Document

object WcoDubbed : WcoStream("dubbed-anime-list")

abstract class WcoStream(allPath: String) : ShowApi(
baseUrl = "https://www.wcostream.com",
allPath = allPath,
recentPath = ""
) {

/*override fun recentPage(page: Int): String = page.toString()*/

override fun getRecent(doc: Document): Single<List<ItemModel>> = Single.create { emitter ->
doc
.select("ul.items")
.select("li")
.map {
ItemModel(
title = it.select("div.img").select("img").attr("alt"),
description = "",
imageUrl = it.select("div.img").select("img").attr("abs:src"),
url = it.select("div.release").select("a").attr("abs:href"),
source = this
)
}
.let(emitter::onSuccess)
}

override fun getList(doc: Document): Single<List<ItemModel>> = Single.create { emitter ->
doc
.select("div.ddmcc")
.select("li")
.map {
ItemModel(
title = it.select("a").text(),
description = "",
imageUrl = "",
url = it.select("a").attr("abs:href"),
source = this
)
}
.let(emitter::onSuccess)
}

override fun getItemInfo(source: ItemModel, doc: Document): Single<InfoModel> = Single.create { emitter ->
InfoModel(
source = this,
url = source.url,
title = source.title,
description = doc.select("div.iltext").text(),
imageUrl = doc.select("div#cat-img-desc").select("img").attr("abs:src"),
genres = doc.select("div#cat-genre").select("div.wcobtn").eachText(),
chapters = doc.select("div#catlist-listview").select("ul").select("li")
.map {
ChapterModel(
name = it.select("a").text(),
url = it.select("a").attr("abs:href"),
uploaded = "",
source = this
)
},
alternativeNames = emptyList()
)
.let(emitter::onSuccess)
}

private fun <T> T.alsoPrint() = also { println(it) }

override fun getChapterInfo(chapterModel: ChapterModel): Single<List<Storage>> = Single.create { emitter ->

val f = Jsoup.connect(chapterModel.url)
.header("X-Requested-With", "XMLHttpRequest")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win 64; x64; rv:69.0) Gecko/20100101 Firefox/69.0")
.followRedirects(true)
.get()
//.also { println(it) }
.let {
val f1 = it.select("div.kaynak_star_rating").let {
Triple(it.attr("data-id"), it.attr("data-token"), it.attr("data-time"))
}

//https://www.wcostream.com/playlist-cat/zaion-i-wish-you-were-here

///inc/embed/getvidlink.php?v=Zaion/Zaion%20I%20Wish%20You%20Were%20Here%20-%2004%20-%20HerePresence%20%5BDr-Love55%5D.mp4&embed=anime

/*
return Base64.encodeToString(clientInfo.toByteArray(), Base64.DEFAULT).removeSurrounding("\n").replace("\n", "")
//return java.util.Base64.getEncoder().encodeToString(clientInfo.toByteArray())
*/

val scriptUrl = it
.select("meta[itemprop=embedURL]")
.attr("content")
.alsoPrint()

val list = it
.select("meta[itemprop=embedURL]")
.alsoPrint()
.next()
.alsoPrint()
.let { it.toString() }
.let { "var (.*?) = \\[(.*?)\\];".toRegex().find(it)?.groups?.get(2)?.value }
.alsoPrint()

val ending = " - ([0-9]+)".toRegex().find(scriptUrl)?.groups?.get(1)?.value
.alsoPrint()

val letters = list
?.split(",")
?.map { it.removeSurrounding("\"") }
?.lastOrNull()
.alsoPrint()
//?.let { Base64.getDecoder().decode(it) }
//.alsoPrint()

/*.attr("content")
.also { println(it) }
.let { "$baseUrl$it&pid=${f1.first}&h=${f1.second}&t=${f1.third}" }
.also { println(it) }
.let {
Jsoup
.connect(it)
.header("X-Requested-With", "XMLHttpRequest")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win 64; x64; rv:69.0) Gecko/20100101 Firefox/69.0")
.get()
}*/
}
//.also { println(it) }
/*.select("script")
.also { println(it) }
.eachAttr("abs:src")
.filter { !it.contains("firebase") }
.map { getApi(it) }*//*
//.filter { it.toString().contains("getvidlink") }
//.also { println(it) }
*//* .select("meta[itemprop=embedURL]")
.also { println(it) }
.attr("content")
.also { println(it) }
.let { getApi("$baseUrl$it") }*/
.also { println("-".repeat(50)) }
.also { println(it) }
//.let { getApi("$baseUrl$it") }
//.also { println(it) }

/*.map {
Storage(
link = "",
source = chapterModel.url,
quality = "Good",
sub = "Yes"
)
}*/

/*
Storage(
link = link,
source = chapterModel.url,
quality = "Good",
sub = "Yes"
)
*/

emitter.onSuccess(emptyList())
}

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
package com.programmersbox.anime_sources

import com.programmersbox.anime_sources.anime.AnimeToonDubbed
import com.programmersbox.anime_sources.anime.WcoDubbed
import com.programmersbox.anime_sources.anime.YTSQuery
import com.programmersbox.anime_sources.anime.YtsService
import com.programmersbox.gsonutils.getApi
import com.programmersbox.models.ChapterModel
import com.programmersbox.models.InfoModel
import com.programmersbox.models.ItemModel
import com.programmersbox.models.Storage
import io.reactivex.Single
import kotlinx.coroutines.runBlocking
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.junit.Test

/**
Expand All @@ -12,6 +21,24 @@ import org.junit.Test
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {

@Test
fun wcostreamTest() {

val f = WcoDubbed.getList().blockingGet()

println(f.size)

val i = f.random().toInfoModel().blockingGet()

println(i)

val e = i.chapters.first().getChapterInfo().blockingGet()

println(e)

}

@Test
fun addition_isCorrect() = runBlocking {
val f = YtsService.build()//getJsonApi<Base>("https://yts.mx/api/v2/list_movies.json")
Expand Down Expand Up @@ -44,4 +71,136 @@ class ExampleUnitTest {
println(v)
}

}
@Test
fun dubbedAnime() {
val f = DubbedAnimeBiz.getRecent()

//println(info.joinToString("\n"))

val v = f.blockingGet().first()
.also { println(it) }
.toInfoModel()
.blockingGet()

println(v)

val c = v.chapters.last()
.getChapterInfo()
.blockingGet()

println(c)
/*val x = c.first().link?.let { getApi(it) }
println(x)
val b = x?.let { getApi("https:$it") }
println(b)*/

}

}


object DubbedAnimeBiz : ShowApi(
baseUrl = "https://www.dubbedanime.biz",
allPath = "topic/series/page/",
recentPath = "status/ongoing/page/"
) {

override fun recentPage(page: Int): String = page.toString()
override fun allPage(page: Int): String = page.toString()

override fun getRecent(doc: Document): Single<List<ItemModel>> = Single.create { emitter ->
doc
.select("div.ml-item")
.map {
ItemModel(
title = it.select("a.ml-mask").attr("oldtitle"),
description = "",
imageUrl = it.select("img").attr("abs:src"),
url = it.select("a.ml-mask").attr("abs:href"),
source = this
)
}
.let(emitter::onSuccess)
}

override fun getList(doc: Document): Single<List<ItemModel>> = Single.create { emitter ->
doc
.select("div.ml-item")
.map {
ItemModel(
title = it.select("a.ml-mask").attr("oldtitle"),
description = "",
imageUrl = it.select("img").attr("abs:src"),
url = it.select("a.ml-mask").attr("abs:href"),
source = this
)
}
.let(emitter::onSuccess)
}

override fun getItemInfo(source: ItemModel, doc: Document): Single<InfoModel> = Single.create { emitter ->
InfoModel(
source = this,
url = source.url,
title = source.title,
description = "",
imageUrl = source.imageUrl,
genres = doc.select("div.mvic-info").select("div.mvici-left").select("a[rel=tag]").eachText(),
chapters = doc.select("div#seasonss").select("div.les-title").map {
ChapterModel(
name = it.select("a").text(),
url = it.select("a").attr("abs:href"),
uploaded = "",
source = this
)
},
alternativeNames = emptyList()
)
.let(emitter::onSuccess)
}

private val serverList = listOf(
"rapidvideo",
"vip",
"drive",
"drives",
"photo",
"openload",
"streamango"
)
.map { "$baseUrl/ajax-get-link-stream/?server=$it&filmId=" }

override fun getChapterInfo(chapterModel: ChapterModel): Single<List<Storage>> = Single.create { emitter ->

val f = Jsoup.connect(chapterModel.url).get()
//.also { println(it) }
.select("div.list-episodes")
.select("select.form-control")
.select("option")
.map { it.attr("abs:href") to it.attr("episodeid") }
.first { it.first == chapterModel.url }
.second
.let {
val link = Jsoup.parse(getApi("https:${getApi("$baseUrl/ajax-get-link-stream/?server=rapidvideo&filmId=$it")}"))
.select("li.linkserver")
.eachAttr("data-video")
//.also { println(it) }
.first { it.contains(".mp4") }
.let { Jsoup.connect(it).get().select("div#videolink").text().let { "https:$it" } }
/*serverList.map { s -> "$s$it" }
.first { }*/
Storage(
link = link,
source = chapterModel.url,
quality = "Good",
sub = "Yes"
)
}

emitter.onSuccess(listOf(f))
}

}
4 changes: 4 additions & 0 deletions manga_sources/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

testImplementation 'org.mockito:mockito-core:3.7.7'
// required if you want to use Mockito for Android tests
androidTestImplementation 'org.mockito:mockito-android:3.7.7'

implementation "com.squareup.okhttp3:okhttp:4.9.1"
implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.1"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import java.util.*

object MangaPark : ApiService {

override val baseUrl = "https://mangapark.net"
override val baseUrl = "https://v2.mangapark.net"

override val serviceName: String get() = "MANGA_PARK"

Expand Down
Loading

0 comments on commit 9cafb74

Please sign in to comment.