|
|
@ -3,6 +3,7 @@ package io.legado.app.model.rss |
|
|
|
import io.legado.app.data.entities.RssArticle |
|
|
|
import io.legado.app.data.entities.RssArticle |
|
|
|
import io.legado.app.data.entities.RssSource |
|
|
|
import io.legado.app.data.entities.RssSource |
|
|
|
import io.legado.app.help.coroutine.Coroutine |
|
|
|
import io.legado.app.help.coroutine.Coroutine |
|
|
|
|
|
|
|
import io.legado.app.help.http.StrResponse |
|
|
|
import io.legado.app.model.Debug |
|
|
|
import io.legado.app.model.Debug |
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeRule |
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeRule |
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeUrl |
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeUrl |
|
|
@ -42,8 +43,9 @@ object Rss { |
|
|
|
ruleData = ruleData, |
|
|
|
ruleData = ruleData, |
|
|
|
headerMapF = rssSource.getHeaderMap() |
|
|
|
headerMapF = rssSource.getHeaderMap() |
|
|
|
) |
|
|
|
) |
|
|
|
val body = analyzeUrl.getStrResponseAwait().body |
|
|
|
val res = analyzeUrl.getStrResponseAwait() |
|
|
|
return RssParserByRule.parseXML(sortName, sortUrl, body, rssSource, ruleData) |
|
|
|
checkRedirect(rssSource, res) |
|
|
|
|
|
|
|
return RssParserByRule.parseXML(sortName, sortUrl, res.body, rssSource, ruleData) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun getContent( |
|
|
|
fun getContent( |
|
|
@ -70,12 +72,26 @@ object Rss { |
|
|
|
ruleData = rssArticle, |
|
|
|
ruleData = rssArticle, |
|
|
|
headerMapF = rssSource.getHeaderMap() |
|
|
|
headerMapF = rssSource.getHeaderMap() |
|
|
|
) |
|
|
|
) |
|
|
|
val body = analyzeUrl.getStrResponseAwait().body |
|
|
|
val res = analyzeUrl.getStrResponseAwait() |
|
|
|
|
|
|
|
checkRedirect(rssSource, res) |
|
|
|
Debug.log(rssSource.sourceUrl, "≡获取成功:${rssSource.sourceUrl}") |
|
|
|
Debug.log(rssSource.sourceUrl, "≡获取成功:${rssSource.sourceUrl}") |
|
|
|
Debug.log(rssSource.sourceUrl, body, state = 20) |
|
|
|
Debug.log(rssSource.sourceUrl, res.body, state = 20) |
|
|
|
val analyzeRule = AnalyzeRule(rssArticle, rssSource) |
|
|
|
val analyzeRule = AnalyzeRule(rssArticle, rssSource) |
|
|
|
analyzeRule.setContent(body) |
|
|
|
analyzeRule.setContent(res.body) |
|
|
|
.setBaseUrl(NetworkUtils.getAbsoluteURL(rssArticle.origin, rssArticle.link)) |
|
|
|
.setBaseUrl(NetworkUtils.getAbsoluteURL(rssArticle.origin, rssArticle.link)) |
|
|
|
return analyzeRule.getString(ruleContent) |
|
|
|
return analyzeRule.getString(ruleContent) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 检测重定向 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private fun checkRedirect(rssSource: RssSource, response: StrResponse) { |
|
|
|
|
|
|
|
response.raw.priorResponse?.let { |
|
|
|
|
|
|
|
if (it.isRedirect) { |
|
|
|
|
|
|
|
Debug.log(rssSource.sourceUrl, "≡检测到重定向(${it.code})") |
|
|
|
|
|
|
|
Debug.log(rssSource.sourceUrl, "┌重定向后地址") |
|
|
|
|
|
|
|
Debug.log(rssSource.sourceUrl, "└${response.url}") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |