fix movie parsing

regression in 5b7d2cd26e
This commit is contained in:
Jannik 2020-10-15 18:51:29 +02:00
parent 4ae23c4380
commit 6100533c4d
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
4 changed files with 22 additions and 10 deletions

View File

@ -26,10 +26,10 @@ import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@ -41,7 +41,10 @@ import org.mosad.teapod.ui.components.LoginDialog
import org.mosad.teapod.ui.home.HomeFragment
import org.mosad.teapod.ui.library.LibraryFragment
import org.mosad.teapod.ui.search.SearchFragment
import org.mosad.teapod.util.*
import org.mosad.teapod.util.LoadingFragment
import org.mosad.teapod.util.Media
import org.mosad.teapod.util.TMDBApiController
import kotlin.system.measureTimeMillis
class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
@ -109,7 +112,11 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
}
// TODO save last loginSuccess, if false show login dialog even if credentials are present
AoDParser().listAnimes()
// running login and list in parallel does not bring any speed improvements
val time = measureTimeMillis {
AoDParser().listAnimes()
}
Log.i(javaClass.name, "login and list in $time ms")
}
/**

View File

@ -22,6 +22,8 @@ class AoDParser {
private val loginPath = "/users/sign_in"
private val libraryPath = "/animes"
private val userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
companion object {
private var csrfToken: String = ""
private var sessionCookies = mutableMapOf<String, String>()
@ -32,8 +34,6 @@ class AoDParser {
fun login(): Boolean = runBlocking {
val userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
withContext(Dispatchers.Default) {
// get the authenticity token
val resAuth = Jsoup.connect(baseUrl + loginPath)
@ -64,7 +64,6 @@ class AoDParser {
//println(resLogin.body())
sessionCookies = resLogin.cookies()
loginSuccess = resLogin.body().contains("Hallo, du bist jetzt angemeldet.")
Log.i(javaClass.name, "Status: ${resLogin.statusCode()} (${resLogin.statusMessage()}), login successful: $loginSuccess")
loginSuccess
@ -207,9 +206,10 @@ class AoDParser {
MediaType.MOVIE -> {
val movie = JsonParser.parseString(res.body()).asJsonObject
.get("playlist").asJsonArray
.first().asJsonObject
movie.first().asJsonObject.get("sources").asJsonArray.toList().forEach {
episodes.first().streamUrl = it.asJsonObject.get("file").asString
movie.get("sources").asJsonArray.first().apply {
episodes.first().streamUrl = this.asJsonObject.get("file").asString
}
}
@ -217,7 +217,6 @@ class AoDParser {
val episodesJson = JsonParser.parseString(res.body()).asJsonObject
.get("playlist").asJsonArray
episodesJson.forEach { jsonElement ->
val episodeId = jsonElement.asJsonObject.get("mediaid")
val episodeStream = jsonElement.asJsonObject.get("sources").asJsonArray

View File

@ -46,7 +46,6 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
// generic gui
val backdropUrl = if (tmdb.backdropUrl.isNotEmpty()) tmdb.backdropUrl else media.info.posterLink
val posterUrl = if (tmdb.posterUrl.isNotEmpty()) tmdb.posterUrl else media.info.posterLink
val posterCornerRadius = if (tmdb.posterUrl.isNotEmpty()) 60 else 30
Glide.with(requireContext()).load(backdropUrl)
.apply(RequestOptions.placeholderOf(ColorDrawable(Color.DKGRAY)))
@ -82,6 +81,9 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
private fun initActions() {
button_play.setOnClickListener {
println(media.episodes)
when (media.type) {
MediaType.MOVIE -> playStream(media.episodes.first().streamUrl)
MediaType.TVSHOW -> playStream(media.episodes.first().streamUrl)
@ -104,6 +106,9 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
private fun playStream(url: String) {
val mainActivity = activity as MainActivity
println("url is: $url")
mainActivity.startPlayer(url)
}

View File

@ -39,6 +39,7 @@ class SearchFragment : Fragment() {
layoutManager = GridLayoutManager(context, 2)
adapter = MediaItemAdapter(AoDParser.mediaList)
adapter!!.onItemClick = { media, _ ->
search_text.clearFocus()
(activity as MainActivity).showMediaFragment(media)
}