diff --git a/app/src/main/java/org/mosad/teapod/MainActivity.kt b/app/src/main/java/org/mosad/teapod/MainActivity.kt index de2747d..4372626 100644 --- a/app/src/main/java/org/mosad/teapod/MainActivity.kt +++ b/app/src/main/java/org/mosad/teapod/MainActivity.kt @@ -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") } /** diff --git a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt index bd2dc0a..2a0890b 100644 --- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt +++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt @@ -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() @@ -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 diff --git a/app/src/main/java/org/mosad/teapod/ui/MediaFragment.kt b/app/src/main/java/org/mosad/teapod/ui/MediaFragment.kt index 6bcba4d..169139e 100644 --- a/app/src/main/java/org/mosad/teapod/ui/MediaFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/MediaFragment.kt @@ -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) } diff --git a/app/src/main/java/org/mosad/teapod/ui/search/SearchFragment.kt b/app/src/main/java/org/mosad/teapod/ui/search/SearchFragment.kt index 2c38b37..0fa956f 100644 --- a/app/src/main/java/org/mosad/teapod/ui/search/SearchFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/search/SearchFragment.kt @@ -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) }