diff --git a/app/src/debug/res/drawable-v24/ic_launcher.xml b/app/src/debug/res/drawable-v24/ic_launcher.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/debug/res/drawable-v24/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug/res/drawable-v24/ic_launcher_round.xml b/app/src/debug/res/drawable-v24/ic_launcher_round.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/debug/res/drawable-v24/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug/res/drawable/ic_launcher.xml b/app/src/debug/res/drawable/ic_launcher.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/debug/res/drawable/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug/res/drawable/ic_launcher_round.xml b/app/src/debug/res/drawable/ic_launcher_round.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/debug/res/drawable/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..ae61ca18
Binary files /dev/null and b/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..5a435d02
Binary files /dev/null and b/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..3c8e7041
Binary files /dev/null and b/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..cd02af0f
Binary files /dev/null and b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..03e5e773
Binary files /dev/null and b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/java/com/lagradost/cloudstream3/TamilYogiProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/TamilYogiProvider.kt
deleted file mode 100644
index 6ead76cb..00000000
--- a/app/src/main/java/com/lagradost/cloudstream3/TamilYogiProvider.kt
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.likdev256
-
-import com.lagradost.cloudstream3.*
-import com.lagradost.cloudstream3.LoadResponse.Companion.addActors
-import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer
-import com.lagradost.cloudstream3.mvvm.safeApiCall
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.loadExtractor
-import org.jsoup.nodes.Element
-
-class TamilYogiProvider : MainAPI() { // all providers must be an instance of MainAPI
- override var mainUrl = "https://tamilyogi.tube"
- override var name = "TamilYogi"
- override val hasMainPage = true
- override var lang = "ta"
- override val hasDownloadSupport = true
- override val supportedTypes = setOf(
- TvType.Movie,
- TvType.TvSeries
- )
-
- override val mainPage = mainPageOf(
- "$mainUrl/category/tamilyogi-full-movie-online/" to "New Movies",
- "$mainUrl/category/tamil-hd-movies/" to "HD Movies",
- "$mainUrl/category/tamilyogi-dubbed-movies-online/" to "Dubbed Movies",
- "$mainUrl/category/tamil-web-series/" to "TV Series"
- )
-
- override suspend fun getMainPage(
- page: Int,
- request: MainPageRequest
- ): HomePageResponse {
- print("request")
- println(request)
- print("Check")
- println(request.data.removeSuffix("page/"))
- val document = if (page == 1) {
- app.get(request.data.removeSuffix("page/")).document
- } else {
- app.get(request.data + page).document
- }
- val home = document.select("div.cover").mapNotNull {
- it.toSearchResult()
- }
- return newHomePageResponse(request.name, home)
- }
-
- private fun Element.toSearchResult(): SearchResponse? {
- val title = this.selectFirst("div.postcontent h2 a[title]")?.text()?.trim() ?: return null
- println(title)
- val href = fixUrl(this.selectFirst("a")?.attr("href").toString())
- println(href)
- val posterUrl = fixUrlNull(this.selectFirst("img")?.attr("src"))
- println(posterUrl)
-
- return newMovieSearchResponse(title, href, TvType.Movie) {
- this.posterUrl = posterUrl
- }
- }
-
- override suspend fun search(query: String): List {
- val document = app.get("$mainUrl/?s=$query").document
-
- return document.select("div.cover").mapNotNull {
- it.toSearchResult()
- }
- }
-
- override suspend fun load(url: String): LoadResponse? {
- val document = app.get(url).document
-
- val title = document.selectFirst("div.postcontent h2 a[title]")?.text()?.trim() ?: return null
- println(title)
- //val titleRegex = Regex()
- //val title =
- val poster = fixUrlNull(document.selectFirst("img")?.attr("src"))
- println(poster)
- //val tags = document.select("div.mvici-left p:nth-child(1) a").map { it.text() }
- val yearRegex = Regex("\"(?<=\\()[\\d\\(\\]]+(?!=\\))\"")
- val year = yearRegex.find(title)?.groups?.get(1)?.value
- ?.toIntOrNull()
- val tvType = if (document.selectFirst("div.les-content")
- ?.select("a")?.size!! > 1 || document.selectFirst("ul.idTabs li strong")?.text()
- ?.contains(Regex("(?i)(EP\\s?[0-9]+)|(episode\\s?[0-9]+)")) == true
- ) TvType.TvSeries else TvType.Movie
- //val description = document.selectFirst("p.f-desc")?.text()?.trim()
- //val trailer = fixUrlNull(document.select("iframe#iframe-trailer").attr("src"))
- //val rating = document.select("div.mvici-right > div.imdb_r span").text().toRatingInt()
- //val actors = document.select("div.mvici-left p:nth-child(3) a").map { it.text() }
- val recommendations = document.select("div.ml-item").mapNotNull {
- it.toSearchResult()
- }
-
- return if (tvType == TvType.TvSeries) {
- val episodes = if (document.selectFirst("div.les-title strong")?.text().toString()
- .contains(Regex("(?i)EP\\s?[0-9]+|Episode\\s?[0-9]+"))
- ) {
- document.select("ul.idTabs li").map {
- val id = it.select("a").attr("href")
- Episode(
- data = fixUrl(document.select("div$id iframe").attr("src")),
- name = it.select("strong").text().replace("Server Ep", "Episode")
- )
- }
- } else {
- document.select("div.les-content a").map {
- Episode(
- data = it.attr("href"),
- name = it.text().replace("Server Ep", "Episode").trim(),
- )
- }
- }
-
- newTvSeriesLoadResponse(title, url, TvType.TvSeries, episodes) {
- this.posterUrl = poster
- this.year = year
- //this.plot = description
- //this.tags = tags
- //this.rating = rating
- //addActors(actors)
- this.recommendations = recommendations
- //addTrailer(trailer)
- }
- } else {
- newMovieLoadResponse(title, url, TvType.Movie, url) {
- this.posterUrl = poster
- this.year = year
- //this.plot = description
- //this.tags = tags
- //this.rating = rating
- //addActors(actors)
- this.recommendations = recommendations
- //addTrailer(trailer)
- }
- }
- }
-
- override suspend fun loadLinks(
- data: String,
- isCasting: Boolean,
- subtitleCallback: (SubtitleFile) -> Unit,
- callback: (ExtractorLink) -> Unit
- ): Boolean {
-
- if (data.startsWith(mainUrl)) {
- app.get(data).document.select("div.movieplay iframe").map { fixUrl(it.attr("src")) }
- .apmap { source ->
- safeApiCall {
- when {
- source.startsWith("https://membed.net") -> app.get(
- source,
- referer = "$mainUrl/"
- ).document.select("ul.list-server-items li")
- .apmap {
- loadExtractor(
- it.attr("data-video").substringBefore("=https://msubload"),
- "$mainUrl/",
- subtitleCallback,
- callback
- )
- }
- else -> loadExtractor(source, "$mainUrl/", subtitleCallback, callback)
- }
- }
- }
- } else {
- loadExtractor(data, "$mainUrl/", subtitleCallback, callback)
- }
-
- return true
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..ae61ca18
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..5a435d02
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..3c8e7041
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..cd02af0f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..03e5e773
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ