forked from recloudstream/cloudstream
fixed arab site
This commit is contained in:
parent
ad3b775787
commit
ef9d6e11a7
8 changed files with 215 additions and 30 deletions
|
@ -7,7 +7,6 @@ import com.lagradost.cloudstream3.utils.Qualities
|
|||
import org.jsoup.nodes.Element
|
||||
|
||||
class AkwamProvider : MainAPI() {
|
||||
|
||||
override val lang = "ar"
|
||||
override val mainUrl = "https://akwam.io"
|
||||
override val name = "Akwam"
|
||||
|
@ -15,8 +14,9 @@ class AkwamProvider : MainAPI() {
|
|||
override val hasMainPage = true
|
||||
override val supportedTypes = setOf(TvType.TvSeries, TvType.Movie, TvType.Anime, TvType.Cartoon)
|
||||
|
||||
private fun Element.toSearchResponse(): SearchResponse {
|
||||
val url = select("a.box").attr("href")
|
||||
private fun Element.toSearchResponse(): SearchResponse? {
|
||||
val url = select("a.box")?.attr("href") ?: return null
|
||||
if(url.contains("/games/") || url.contains("/programs/")) return null
|
||||
val poster = select("picture > img")
|
||||
val title = poster.attr("alt")
|
||||
val posterUrl = poster.attr("data-src")
|
||||
|
@ -34,12 +34,16 @@ class AkwamProvider : MainAPI() {
|
|||
)
|
||||
}
|
||||
|
||||
override fun getMainPage(): HomePageResponse? {
|
||||
override fun getMainPage(): HomePageResponse {
|
||||
// Title, Url
|
||||
val moviesUrl = listOf("Movies" to "$mainUrl/movies", "Series" to "$mainUrl/series", "Shows" to "$mainUrl/shows")
|
||||
val moviesUrl = listOf(
|
||||
"Movies" to "$mainUrl/movies",
|
||||
"Series" to "$mainUrl/series",
|
||||
"Shows" to "$mainUrl/shows"
|
||||
)
|
||||
val pages = moviesUrl.pmap {
|
||||
val doc = app.get(it.second).document
|
||||
val list = doc.select("div.col-lg-auto.col-md-4.col-6.mb-12").map { element ->
|
||||
val list = doc.select("div.col-lg-auto.col-md-4.col-6.mb-12").mapNotNull { element ->
|
||||
element.toSearchResponse()
|
||||
}
|
||||
HomePageList(it.first, list)
|
||||
|
@ -50,7 +54,7 @@ class AkwamProvider : MainAPI() {
|
|||
override fun search(query: String): List<SearchResponse> {
|
||||
val url = "$mainUrl/search?q=$query"
|
||||
val doc = app.get(url).document
|
||||
return doc.select("div.col-lg-auto").map {
|
||||
return doc.select("div.col-lg-auto").mapNotNull {
|
||||
it.toSearchResponse()
|
||||
}
|
||||
}
|
||||
|
@ -122,11 +126,8 @@ class AkwamProvider : MainAPI() {
|
|||
rating,
|
||||
tags,
|
||||
duration,
|
||||
null,
|
||||
null
|
||||
)
|
||||
} else {
|
||||
|
||||
val episodes = doc.select("div.bg-primary2.p-4.col-lg-4.col-md-6.col-12").map {
|
||||
it.toTvSeriesEpisode()
|
||||
}.let {
|
||||
|
@ -136,23 +137,14 @@ class AkwamProvider : MainAPI() {
|
|||
else it
|
||||
}
|
||||
|
||||
TvSeriesLoadResponse(
|
||||
title,
|
||||
url,
|
||||
this@AkwamProvider.name,
|
||||
TvType.Movie,
|
||||
episodes,
|
||||
posterUrl,
|
||||
year,
|
||||
synopsis,
|
||||
null,
|
||||
null,
|
||||
rating,
|
||||
tags,
|
||||
duration,
|
||||
null,
|
||||
null
|
||||
)
|
||||
newTvSeriesLoadResponse(title, url, TvType.TvSeries, episodes) {
|
||||
this.duration = duration
|
||||
this.posterUrl = posterUrl
|
||||
this.tags = tags.filterNotNull()
|
||||
this.rating = rating
|
||||
this.year = year
|
||||
this.plot = synopsis
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
14
app/src/main/res/drawable/custom_rating_bar.xml
Normal file
14
app/src/main/res/drawable/custom_rating_bar.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:id="@android:id/background"
|
||||
android:drawable="@drawable/rating_empty"/>
|
||||
|
||||
<item android:id="@android:id/secondaryProgress"
|
||||
android:drawable="@drawable/rating_empty"
|
||||
/>
|
||||
<item android:id="@android:id/progress"
|
||||
android:drawable="@drawable/rating_fill"
|
||||
/>
|
||||
|
||||
</layer-list>
|
5
app/src/main/res/drawable/ic_baseline_star_border_24.xml
Normal file
5
app/src/main/res/drawable/ic_baseline_star_border_24.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
|
||||
</vector>
|
18
app/src/main/res/drawable/rating_empty.xml
Normal file
18
app/src/main/res/drawable/rating_empty.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:state_pressed="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_border_24"/>
|
||||
|
||||
<item android:state_focused="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_border_24"/>
|
||||
|
||||
<item android:state_selected="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_border_24"/>
|
||||
|
||||
<item
|
||||
android:drawable="@drawable/ic_baseline_star_border_24"/>
|
||||
</selector>
|
18
app/src/main/res/drawable/rating_fill.xml
Normal file
18
app/src/main/res/drawable/rating_fill.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:state_pressed="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_24"/>
|
||||
|
||||
<item android:state_focused="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_24"/>
|
||||
|
||||
<item android:state_selected="true"
|
||||
android:state_window_focused="true"
|
||||
android:drawable="@drawable/ic_baseline_star_24"/>
|
||||
|
||||
<item
|
||||
android:drawable="@drawable/ic_baseline_star_24"/>
|
||||
</selector>
|
5
app/src/main/res/drawable/rounded_progress.xml
Normal file
5
app/src/main/res/drawable/rounded_progress.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="?attr/colorPrimary" />
|
||||
<corners android:radius="5dp" />
|
||||
</shape>
|
|
@ -204,6 +204,7 @@
|
|||
android:visibility="gone"
|
||||
app:mediaRouteButtonTint="?attr/textColor" />
|
||||
|
||||
<!--
|
||||
<ImageView
|
||||
android:visibility="gone"
|
||||
android:nextFocusUp="@id/result_back"
|
||||
|
@ -221,7 +222,7 @@
|
|||
android:src="@drawable/ic_baseline_add_24"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:contentDescription="@string/add_sync"
|
||||
app:tint="?attr/textColor" />
|
||||
app:tint="?attr/textColor" />-->
|
||||
|
||||
<ImageView
|
||||
android:nextFocusUp="@id/result_back"
|
||||
|
@ -398,6 +399,7 @@
|
|||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
tools:visibility="gone"
|
||||
android:layout_marginTop="0dp"
|
||||
android:paddingTop="0dp"
|
||||
android:layout_marginStart="0dp"
|
||||
|
@ -451,12 +453,135 @@
|
|||
android:textStyle="normal"
|
||||
android:textColor="?attr/textColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="gone"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:textStyle="bold"
|
||||
android:textSize="16sp"
|
||||
android:text="MyAnimeList"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<LinearLayout
|
||||
android:visibility="visible"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:padding="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:src="@drawable/ic_baseline_add_24"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:contentDescription="@string/result_share"
|
||||
app:tint="?attr/textColor" />
|
||||
|
||||
<TextView
|
||||
android:layout_gravity="center_vertical"
|
||||
android:padding="10dp"
|
||||
android:textSize="17sp"
|
||||
android:textColor="?attr/textColor"
|
||||
android:text="24/30"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<androidx.core.widget.ContentLoadingProgressBar
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"
|
||||
android:progress="50"
|
||||
android:indeterminate="false"
|
||||
android:progressBackgroundTint="?attr/colorPrimary"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:max="100"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
tools:visibility="visible" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:layout_gravity="center_vertical"
|
||||
android:padding="10dp"
|
||||
android:textSize="17sp"
|
||||
android:textColor="?attr/textColor"
|
||||
android:text="Rated:"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_height="30dp"
|
||||
android:text="7/10"
|
||||
android:minWidth="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="0dp"
|
||||
style="@style/BlackButton" />
|
||||
<TextView
|
||||
android:layout_gravity="center_vertical"
|
||||
android:padding="10dp"
|
||||
android:textSize="17sp"
|
||||
android:textColor="?attr/textColor"
|
||||
android:text="Status:"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_height="30dp"
|
||||
android:text="Watching"
|
||||
android:minWidth="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="0dp"
|
||||
style="@style/BlackButton" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:visibility="gone"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:id="@+id/home_parent_item_title"
|
||||
style="@style/WatchHeaderText"
|
||||
tools:text="Recommended"
|
||||
/>
|
||||
<ImageView
|
||||
app:tint="?attr/textColor"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:src="@drawable/ic_baseline_arrow_forward_24"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/home_more_info">
|
||||
</ImageView>
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.lagradost.cloudstream3.widget.FlowLayout
|
||||
android:id="@+id/result_tag"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:visibility="gone"
|
||||
android:text="@string/add_sync"
|
||||
android:layout_width="match_parent"
|
||||
app:icon="@drawable/ic_baseline_add_24"
|
||||
android:id="@+id/result_add_sync"
|
||||
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
style="@style/WhiteButton" />
|
||||
<LinearLayout
|
||||
tools:visibility="gone"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/result_movie_parent"
|
||||
|
@ -503,6 +628,7 @@
|
|||
android:id="@+id/result_movie_progress_downloaded"
|
||||
android:indeterminate="false"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:progressBackgroundTint="?attr/colorPrimary"
|
||||
android:max="100"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:progress="0"
|
||||
|
@ -632,8 +758,9 @@
|
|||
android:id="@+id/result_episodes_text"
|
||||
tools:text="8 Episodes"
|
||||
android:textSize="17sp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textStyle="normal"
|
||||
android:textColor="?attr/textColor" />
|
||||
</LinearLayout>
|
||||
|
|
|
@ -174,6 +174,12 @@
|
|||
<item name="android:colorAccent">@color/colorPrimaryPink</item>
|
||||
</style>
|
||||
|
||||
<style name="customRatingBar" parent="@style/Widget.AppCompat.RatingBar">
|
||||
|
||||
<item name="android:progressDrawable">@drawable/abc_ratingbar_indicator_material</item>
|
||||
<item name="android:indeterminateDrawable">@drawable/abc_ratingbar_indicator_material</item>
|
||||
</style>
|
||||
|
||||
<style name="LoadedStyle">
|
||||
<item name="android:navigationBarColor">?attr/primaryGrayBackground</item>
|
||||
<item name="android:windowBackground">?attr/primaryBlackBackground</item>
|
||||
|
|
Loading…
Reference in a new issue