Merge pull request #354 from AndyBernie/master

图片(漫画)支持导出
pull/357/head
kunfei 4 years ago committed by GitHub
commit f37ccd859a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      app/src/main/assets/updateLog.md
  2. 12
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt
  3. 42
      app/src/main/java/io/legado/app/ui/book/download/DownloadViewModel.kt

@ -6,6 +6,7 @@
**2020/09/03**
* 修复替换中的回车消失的bug
* 所有内容恢复htmlFormat, 在想其它办法解决丢失一些内容的问题
* 图片(漫画)支持导出
**2020/09/02**
* 搜索url支持put,get,js里使用java.put,java.get

@ -434,15 +434,11 @@ class AnalyzeUrl(
}
fun getGlideUrl(): Any? {
var glideUrl: Any = urlHasQuery
if (headerMap.isNotEmpty()) {
val headers = LazyHeaders.Builder()
headerMap.forEach { (key, value) ->
headers.addHeader(key, value)
}
glideUrl = GlideUrl(urlHasQuery, headers.build())
val headers = LazyHeaders.Builder()
headerMap.forEach { (key, value) ->
headers.addHeader(key, value)
}
return glideUrl
return GlideUrl(urlHasQuery, headers.build())
}
data class UrlOption(

@ -5,13 +5,11 @@ import android.net.Uri
import androidx.documentfile.provider.DocumentFile
import io.legado.app.App
import io.legado.app.R
import io.legado.app.constant.AppPattern
import io.legado.app.base.BaseViewModel
import io.legado.app.data.entities.Book
import io.legado.app.help.BookHelp
import io.legado.app.utils.DocumentUtils
import io.legado.app.utils.FileUtils
import io.legado.app.utils.isContentPath
import io.legado.app.utils.writeText
import io.legado.app.utils.*
import java.io.File
@ -38,11 +36,47 @@ class DownloadViewModel(application: Application) : BaseViewModel(application) {
private fun export(doc: DocumentFile, book: Book) {
DocumentUtils.createFileIfNotExist(doc, "${book.name} 作者:${book.author}.txt")
?.writeText(context, getAllContents(book))
App.db.bookChapterDao().getChapterList(book.bookUrl).forEach { chapter ->
BookHelp.getContent(book, chapter).let { content ->
content?.split("\n")?.forEachIndexed { index, text ->
val matcher = AppPattern.imgPattern.matcher(text)
if (matcher.find()) {
var src = matcher.group(1)
src = NetworkUtils.getAbsoluteURL(chapter.url, src)
src?.let {
val vfile = BookHelp.getImage(book, src)
if(vfile.exists()) {
DocumentUtils.createFileIfNotExist(doc, "${index}-${MD5Utils.md5Encode16(src)}.jpg", subDirs = arrayOf("${book.name}_${book.author}", "images", chapter.title))
?.writeBytes(context, vfile.readBytes())
}
}
}
}
}
}
}
private fun export(file: File, book: Book) {
FileUtils.createFileIfNotExist(file, "${book.name} 作者:${book.author}.txt")
.writeText(getAllContents(book))
App.db.bookChapterDao().getChapterList(book.bookUrl).forEach { chapter ->
BookHelp.getContent(book, chapter).let { content ->
content?.split("\n")?.forEachIndexed { index, text ->
val matcher = AppPattern.imgPattern.matcher(text)
if (matcher.find()) {
var src = matcher.group(1)
src = NetworkUtils.getAbsoluteURL(chapter.url, src)
src?.let {
val vfile = BookHelp.getImage(book, src)
if(vfile.exists()) {
FileUtils.createFileIfNotExist(file, "${book.name}_${book.author}", "images", chapter.title, "${index}-${MD5Utils.md5Encode16(src)}.jpg")
.writeBytes(vfile.readBytes())
}
}
}
}
}
}
}
private fun getAllContents(book: Book): String {

Loading…
Cancel
Save