| @ -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") | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -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) | ||||
|                     } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user