Skip to content
This repository was archived by the owner on Jul 18, 2026. It is now read-only.

Commit 81582fa

Browse files
authored
Merge pull request #239 from misaka10032w/develop
[Improved] 调整内置Hosts映射,覆盖四个域名
2 parents 2f03275 + 2743bde commit 81582fa

4 files changed

Lines changed: 31 additions & 30 deletions

File tree

app/src/main/java/com/yenaly/han1meviewer/logic/Parser.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ object Parser {
5252
}
5353

5454
fun homePageVer2(body: String): WebsiteState<HomePage> {
55+
val isAVSite = Preferences.baseUrl == HANIME_URL[3]
5556
val parseBody = Jsoup.parse(body).body()
5657
val csrfToken = parseBody.selectFirst("input[name=_token]")?.attr("value") // csrf token
5758

@@ -107,10 +108,10 @@ object Parser {
107108
val thereDWorkClass = homePageParse.getOrNull(8)
108109
val douJinWorkClass = homePageParse.getOrNull(9)
109110
val cosplayClass = homePageParse.getOrNull(10)
110-
val newAnimeTrailerClass = homePageParse.getOrNull(if (Preferences.baseUrl == HANIME_URL[3]) 13 else 12)
111+
val newAnimeTrailerClass = homePageParse.getOrNull(if (isAVSite) 13 else 12)
111112
// for latest hanime
112113
val latestHanimeList = mutableListOf<HanimeInfo>()
113-
if (Preferences.baseUrl == HANIME_URL[3]){
114+
if (isAVSite){
114115
val latestHanimeItems = latestHanimeClass?.select("div[class^=card-mobile-panel]")
115116
latestHanimeItems?.forEachStep2 { latestHanimeItems ->
116117
hanimeNormalItemVer2(latestHanimeItems)?.let(latestHanimeList::add)
@@ -181,7 +182,7 @@ object Parser {
181182
}
182183

183184
val animeShortList = mutableListOf<HanimeInfo>()
184-
if (Preferences.baseUrl == HANIME_URL[3]){
185+
if (isAVSite){
185186
val animeShortItems = animeShortClass?.select("div[class^=card-mobile-panel]")
186187
animeShortItems?.forEachStep2 { animeShortItems ->
187188
hanimeNormalItemVer2(animeShortItems)?.let(animeShortList::add)
@@ -234,7 +235,7 @@ object Parser {
234235
hanimeNormalItemVer2(cosplayItem)?.let(cosplayList::add)
235236
}
236237
val newAnimeTrailerList = mutableListOf<HanimeInfo>()
237-
if (Preferences.baseUrl == HANIME_URL[3]){
238+
if (isAVSite){
238239
val newAnimeTrailerItems = newAnimeTrailerClass?.select("div[class^=card-mobile-panel]")
239240
newAnimeTrailerItems?.forEachStep2 { newAnimeTrailerItems ->
240241
hanimeNormalItemVer2(newAnimeTrailerItems)?.let(newAnimeTrailerList::add)

app/src/main/java/com/yenaly/han1meviewer/logic/network/HDns.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,13 @@ class HDns : Dns {
1818

1919
init {
2020
if (useBuiltInHosts) {
21-
dnsMap[HANIME_HOSTNAME[0]] = listOf(
22-
"104.25.254.167", "172.67.75.184", "172.64.229.154",
23-
"2606:4700:8dd1::2a46:47f8"
24-
)
25-
dnsMap[HANIME_HOSTNAME[1]] = listOf(
26-
"104.25.254.167", "172.67.75.184", "172.64.229.154",
27-
"2606:4700:8dd1::2a46:47f8"
21+
val cloudFlareIps = listOf(
22+
"172.64.229.154", "104.25.254.167", "172.67.75.184", "104.21.7.20", "172.67.187.141",
23+
"2606:4700:8dd1::2a46:47f8", "2606:4700:3031::ac43:bb8d", "2606:4700:3030::6815:746"
2824
)
25+
HANIME_HOSTNAME.forEach { host ->
26+
dnsMap[host] = cloudFlareIps
27+
}
2928
}
3029
}
3130

app/src/main/java/com/yenaly/han1meviewer/ui/fragment/home/HomePageFragment.kt

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,14 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
122122
}
123123
private var announcementCardAdapter: AnnouncementCardAdapter? = null
124124
private lateinit var onBackPressedCallback: OnBackPressedCallback
125+
private val isAVSite = Preferences.baseUrl == HANIME_URL[3]
125126
private val concatAdapter by lazy {
126127
ConcatAdapter(
127128
VideoColumnTitleAdapter(requireContext(),
128-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.latest_av else R.string.latest_hanime).apply {
129+
if (isAVSite) R.string.latest_av else R.string.latest_hanime).apply {
129130
onMoreHanimeListener = {
130131
showSearchFragment(
131-
advancedSearchMapOf(HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "日本AV" else "裏番"))
132+
advancedSearchMapOf(HAdvancedSearch.GENRE to if (isAVSite) "日本AV" else "裏番"))
132133
}
133134
},
134135
latestHanimeAdapter
@@ -227,10 +228,10 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
227228
}
228229
},
229230
VideoColumnTitleAdapter(requireContext(),
230-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.ranking_this_month else R.string.ranking_today).apply {
231+
if (isAVSite) R.string.ranking_this_month else R.string.ranking_today).apply {
231232
onMoreHanimeListener = {
232233
showSearchFragment(
233-
advancedSearchMapOf(HAdvancedSearch.SORT to if (Preferences.baseUrl == HANIME_URL[3]) "本月排行" else "本日排行"))
234+
advancedSearchMapOf(HAdvancedSearch.SORT to if (isAVSite) "本月排行" else "本日排行"))
234235
}
235236
},
236237
hanimeCurrentAdapter
@@ -249,9 +250,9 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
249250
}
250251
},
251252
VideoColumnTitleAdapter(requireContext(),
252-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.view_count else R.string.ranking_this_month).apply {
253+
if (isAVSite) R.string.view_count else R.string.ranking_this_month).apply {
253254
onMoreHanimeListener = {
254-
showSearchFragment(advancedSearchMapOf(HAdvancedSearch.SORT to if (Preferences.baseUrl == HANIME_URL[3]) "觀看次數" else "本月排行"))
255+
showSearchFragment(advancedSearchMapOf(HAdvancedSearch.SORT to if (isAVSite) "觀看次數" else "本月排行"))
255256
}
256257
},
257258
hotHanimeMonthlyAdapter
@@ -270,9 +271,9 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
270271
}
271272
},
272273
VideoColumnTitleAdapter(requireContext(),
273-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.ranking_today else R.string.new_anime_trailers).apply {
274+
if (isAVSite) R.string.ranking_today else R.string.new_anime_trailers).apply {
274275
onMoreHanimeListener = {
275-
if (Preferences.baseUrl == HANIME_URL[3]){
276+
if (isAVSite){
276277
showSearchFragment(advancedSearchMapOf(HAdvancedSearch.SORT to "本日排行"))
277278
} else {
278279
findNavController().navigate(R.id.action_nv_home_page_to_nv_preview)
@@ -296,11 +297,11 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
296297
}
297298
},
298299
VideoColumnTitleAdapter(requireContext(),
299-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.amateur_nomask else R.string.category_instant_noodle).apply {
300+
if (isAVSite) R.string.amateur_nomask else R.string.category_instant_noodle).apply {
300301
onMoreHanimeListener = {
301302
showSearchFragment(
302303
advancedSearchMapOf(
303-
HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "素人業餘" else "泡麵番",
304+
HAdvancedSearch.GENRE to if (isAVSite) "素人業餘" else "泡麵番",
304305
HAdvancedSearch.SORT to "最新上傳"
305306
)
306307
)
@@ -323,11 +324,11 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
323324
}
324325
},
325326
VideoColumnTitleAdapter(requireContext(),
326-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.hd_uncensored else R.string.category_motion_anime).apply {
327+
if (isAVSite) R.string.hd_uncensored else R.string.category_motion_anime).apply {
327328
onMoreHanimeListener = {
328329
showSearchFragment(
329330
advancedSearchMapOf(
330-
HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "高清無碼" else "Motion Anime",
331+
HAdvancedSearch.GENRE to if (isAVSite) "高清無碼" else "Motion Anime",
331332
HAdvancedSearch.SORT to "最新上傳"
332333
)
333334
)
@@ -350,11 +351,11 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
350351
}
351352
},
352353
VideoColumnTitleAdapter(requireContext(),
353-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.ai_decensored else R.string.category_3d_animation).apply {
354+
if (isAVSite) R.string.ai_decensored else R.string.category_3d_animation).apply {
354355
onMoreHanimeListener = {
355356
showSearchFragment(
356357
advancedSearchMapOf(
357-
HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "AI解碼" else "3DCG",
358+
HAdvancedSearch.GENRE to if (isAVSite) "AI解碼" else "3DCG",
358359
HAdvancedSearch.SORT to "最新上傳"
359360
)
360361
)
@@ -377,11 +378,11 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
377378
}
378379
},
379380
VideoColumnTitleAdapter(requireContext(),
380-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.china_av else R.string.animation_2d).apply {
381+
if (isAVSite) R.string.china_av else R.string.animation_2d).apply {
381382
onMoreHanimeListener = {
382383
showSearchFragment(
383384
advancedSearchMapOf(
384-
HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "國產AV" else "2D動畫",
385+
HAdvancedSearch.GENRE to if (isAVSite) "國產AV" else "2D動畫",
385386
HAdvancedSearch.SORT to "最新上傳"
386387
)
387388
)
@@ -404,11 +405,11 @@ class HomePageFragment : YenalyFragment<FragmentHomePageBinding>(),
404405
}
405406
},
406407
VideoColumnTitleAdapter(requireContext(),
407-
if (Preferences.baseUrl == HANIME_URL[3]) R.string.chinese_amateur else R.string.category_cosplay).apply {
408+
if (isAVSite) R.string.chinese_amateur else R.string.category_cosplay).apply {
408409
onMoreHanimeListener = {
409410
showSearchFragment(
410411
advancedSearchMapOf(
411-
HAdvancedSearch.GENRE to if (Preferences.baseUrl == HANIME_URL[3]) "國產素人" else "Cosplay",
412+
HAdvancedSearch.GENRE to if (isAVSite) "國產素人" else "Cosplay",
412413
HAdvancedSearch.SORT to "最新上傳"
413414
)
414415
)

app/src/main/java/com/yenaly/han1meviewer/ui/fragment/settings/NetworkSettingsFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ class NetworkSettingsFragment : YenalySettingsFragment(R.xml.settings_network) {
226226
return try {
227227
val start = System.currentTimeMillis()
228228
val address = InetAddress.getByName(ip)
229-
val reachable = address.isReachable(1000)
229+
val reachable = address.isReachable(2000)
230230
if (reachable) (System.currentTimeMillis() - start).toInt() else -1
231231
} catch (e: Exception) {
232232
-1

0 commit comments

Comments
 (0)