Skip to content

Commit 509617c

Browse files
author
FunkyMuse
committed
add paging
1 parent 19a7545 commit 509617c

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

latestbooks/latestbooksdata/src/main/java/com/funkymuse/aurora/latestbooksdata/LatestBooksDataSource.kt

+17-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.funkymuse.aurora.latestbooksdata
22

33
import android.content.Context
4+
import android.util.Log
45
import androidx.paging.PagingSource
56
import androidx.paging.PagingState
67
import com.crazylegend.collections.isNotNullOrEmpty
@@ -20,8 +21,6 @@ import it.skrape.fetcher.response
2021
import it.skrape.fetcher.skrape
2122
import kotlinx.coroutines.CoroutineDispatcher
2223
import kotlinx.coroutines.withContext
23-
import org.jsoup.Jsoup
24-
import org.jsoup.nodes.Document
2524

2625
/**
2726
* Created by funkymuse on 5/10/21 to long live and prosper !
@@ -59,7 +58,7 @@ class LatestBooksDataSource @AssistedInject constructor(
5958
}
6059

6160
private suspend fun loadBooks(page: Int): LoadResult.Page<Int, Book> {
62-
val list = fetch()
61+
val list = fetch(page)
6362
return if (list.isNullOrEmpty()) {
6463
canNotLoadMoreContent()
6564
} else {
@@ -69,34 +68,39 @@ class LatestBooksDataSource @AssistedInject constructor(
6968
}
7069
}
7170

72-
private suspend fun fetch(): List<Book> =
71+
private suspend fun fetch(page:Int): List<Book> =
7372
skrape(HttpFetcher) {
7473
request {
7574
timeout = DEFAULT_API_TIMEOUT
76-
url = "$SEARCH_BASE_URL?$SORT_QUERY=$sortQuery&$VIEW_QUERY=$VIEW_QUERY_PARAM&$RES_CONST=$PAGE_CONST&" +
77-
"$LAST_MODE=$LAST_QUERY&$COLUM_QUERY=$FIELD_DEFAULT_PARAM&$SORT_TYPE=$sortType"
75+
url = "$SEARCH_BASE_URL?$SORT_QUERY=$sortQuery&$VIEW_QUERY=$VIEW_QUERY_PARAM&$RES_CONST=$PAGE_SIZE&" +
76+
"$LAST_MODE=$LAST_QUERY&$COLUM_QUERY=$FIELD_DEFAULT_PARAM&$SORT_TYPE=$sortType&"+
77+
"$PAGE_CONST=$page"
78+
Log.d("URL REQUESt", url)
79+
7880
}
7981
response {
8082
htmlDocument {
8183
findAll("table").asSequence().drop(2).map {
8284

83-
val trs =
85+
val elementList =
8486
tryOrNull { it.findAll("tr").filter { it.children.size >= 2 } }
8587
?.map { it.findAll("td") }?.flatten()?.map { it.children }
8688
?.flatten()
8789

88-
val res = if (!trs.isNullOrEmpty()) {
89-
trs.dropLast(1).mapNotNull {
90+
91+
val res = if (!elementList.isNullOrEmpty()) {
92+
elementList.mapNotNull {
93+
9094
val id = tryOrNull {
91-
trs[2].eachLink.values.firstOrNull()?.substringAfter("md5=")
95+
elementList[2].eachLink.values.firstOrNull()?.substringAfter("md5=")
9296
}
9397
if (id == null) {
9498
null
9599
} else {
96100
Book(
97-
image = tryOrNull { trs[0].eachImage.values.firstOrNull() },
98-
title = tryOrNull { trs[2].text },
99-
author = tryOrNull { trs[5].text },
101+
image = tryOrNull { elementList[0].eachImage.values.firstOrNull() },
102+
title = tryOrNull { elementList[2].text },
103+
author = tryOrNull { elementList[5].text },
100104
id = id
101105
)
102106
}

searchresult/searchresultdata/src/main/java/com/funkymuse/aurora/searchresultdata/SearchResultDataSource.kt

+11-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.funkymuse.aurora.searchresultdata
22

33
import android.content.Context
4-
import android.util.Log
54
import androidx.paging.PagingSource
65
import androidx.paging.PagingState
76
import com.crazylegend.collections.isNotNullOrEmpty
@@ -20,10 +19,7 @@ import it.skrape.fetcher.HttpFetcher
2019
import it.skrape.fetcher.response
2120
import it.skrape.fetcher.skrape
2221
import kotlinx.coroutines.CoroutineDispatcher
23-
import kotlinx.coroutines.Dispatchers
2422
import kotlinx.coroutines.withContext
25-
import org.jsoup.Jsoup
26-
import org.jsoup.nodes.Document
2723

2824
/**
2925
* Created by funkymuse on 5/11/21 to long live and prosper !
@@ -67,7 +63,7 @@ class SearchResultDataSource @AssistedInject constructor(
6763

6864

6965
private suspend fun loadBooks(page: Int): LoadResult.Page<Int, Book> {
70-
val list = fetch()
66+
val list = fetch(page)
7167
return if (list.isNullOrEmpty()) {
7268
canNotLoadMoreContent()
7369
} else {
@@ -77,36 +73,36 @@ class SearchResultDataSource @AssistedInject constructor(
7773
}
7874
}
7975

80-
private suspend fun fetch(): List<Book> =
76+
private suspend fun fetch(page:Int): List<Book> =
8177
skrape(HttpFetcher) {
8278
request {
8379
timeout = DEFAULT_API_TIMEOUT
8480
url = "$SEARCH_BASE_URL?$REQ_CONST=${searchQuery.replace(" ", "+")}&$SORT_QUERY=$sortQuery&$VIEW_QUERY=$VIEW_QUERY_PARAM&$RES_CONST=$PAGE_SIZE&" +
8581
"&$COLUM_QUERY=${getFieldParamByPosition(searchInFieldsPosition)}&$SORT_TYPE=$sortType&"+
86-
"$SEARCH_WITH_MASK=${if (maskWord) SEARCH_WITH_MASK_YES else SEARCH_WITH_MASK_NO}"
87-
Log.d("URL REQUESt", url)
82+
"$SEARCH_WITH_MASK=${if (maskWord) SEARCH_WITH_MASK_YES else SEARCH_WITH_MASK_NO}&" +
83+
"$PAGE_CONST=$page"
8884
}
8985
response {
9086
htmlDocument {
9187
findAll("table").asSequence().drop(2).map {
9288

93-
val trs =
89+
val elementList =
9490
tryOrNull { it.findAll("tr").filter { it.children.size >= 2 } }
9591
?.map { it.findAll("td") }?.flatten()?.map { it.children }
9692
?.flatten()
9793

98-
val res = if (!trs.isNullOrEmpty()) {
99-
trs.dropLast(1).mapNotNull {
94+
val res = if (!elementList.isNullOrEmpty()) {
95+
elementList.dropLast(1).mapNotNull {
10096
val id = tryOrNull {
101-
trs[2].eachLink.values.firstOrNull()?.substringAfter("md5=")
97+
elementList[2].eachLink.values.firstOrNull()?.substringAfter("md5=")
10298
}
10399
if (id == null) {
104100
null
105101
} else {
106102
Book(
107-
image = tryOrNull { trs[0].eachImage.values.firstOrNull() },
108-
title = tryOrNull { trs[2].text },
109-
author = tryOrNull { trs[5].text },
103+
image = tryOrNull { elementList[0].eachImage.values.firstOrNull() },
104+
title = tryOrNull { elementList[2].text },
105+
author = tryOrNull { elementList[5].text },
110106
id = id
111107
)
112108
}

0 commit comments

Comments
 (0)