diff --git a/app/libs/umdlib-debug.aar b/app/libs/umdlib-debug.aar deleted file mode 100644 index 1f8be1b3b..000000000 Binary files a/app/libs/umdlib-debug.aar and /dev/null differ diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index ba33ba78e..54c47b323 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -67,6 +67,9 @@ data class Book( fun isEpub(): Boolean { return originName.endsWith(".epub", true) } + fun isUmd(): Boolean { + return originName.endsWith(".umd", true) + } fun isOnLineTxt(): Boolean { return !isLocalBook() && type == 0 diff --git a/app/src/main/java/io/legado/app/help/BookHelp.kt b/app/src/main/java/io/legado/app/help/BookHelp.kt index 6379d4cc3..41dc7376e 100644 --- a/app/src/main/java/io/legado/app/help/BookHelp.kt +++ b/app/src/main/java/io/legado/app/help/BookHelp.kt @@ -190,7 +190,7 @@ object BookHelp { } fun getContent(book: Book, bookChapter: BookChapter): String? { - if (book.isLocalTxt()) { + if (book.isLocalTxt()||book.isUmd()) { return LocalBook.getContext(book, bookChapter) } else if (book.isEpub() && !hasContent(book, bookChapter)) { val string = LocalBook.getContext(book, bookChapter) @@ -203,7 +203,7 @@ object BookHelp { ).writeText(it) } return string - } else { + }else { val file = FileUtils.getFile( downloadDir, cacheFolderName, diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index 3aea6d748..30c9f65db 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -28,6 +28,8 @@ object LocalBook { fun getChapterList(book: Book): ArrayList { return if (book.isEpub()) { EpubFile.getChapterList(book) + }else if(book.isUmd()){ + UmdFile.getChapterList(book) } else { AnalyzeTxtFile().analyze(book) } @@ -36,6 +38,8 @@ object LocalBook { fun getContext(book: Book, chapter: BookChapter): String? { return if (book.isEpub()) { EpubFile.getContent(book, chapter) + }else if (book.isUmd()){ + UmdFile.getContent(book, chapter) } else { AnalyzeTxtFile.getContent(book, chapter) } @@ -121,13 +125,14 @@ object LocalBook { ) ) if (book.isEpub()) EpubFile.upBookInfo(book) + if (book.isUmd()) UmdFile.upBookInfo(book) appDb.bookDao.insert(book) return book } fun deleteBook(book: Book, deleteOriginal: Boolean) { kotlin.runCatching { - if (book.isLocalTxt()) { + if (book.isLocalTxt()||book.isUmd()) { val bookFile = FileUtils.getFile(cacheFolder, book.originName) bookFile.delete() } diff --git a/app/src/main/java/io/legado/app/model/localBook/UmdFile.kt b/app/src/main/java/io/legado/app/model/localBook/UmdFile.kt index bfdf3655f..394072085 100644 --- a/app/src/main/java/io/legado/app/model/localBook/UmdFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/UmdFile.kt @@ -1,6 +1,7 @@ package io.legado.app.model.localBook import android.net.Uri +import android.util.Log import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter @@ -21,12 +22,9 @@ class UmdFile(var book: Book) { @Synchronized private fun getEFile(book: Book): UmdFile { - //BookHelp.getEpubFile(book) if (eFile == null || eFile?.book?.bookUrl != book.bookUrl) { eFile = UmdFile(book) - //对于Epub文件默认不启用替换 - //book.setUseReplaceRule(false) return eFile!! } eFile?.book = book @@ -112,7 +110,7 @@ class UmdFile(var book: Book) { } } private fun getContent(chapter: BookChapter): String? { - return umdBook?.chapters?.getContentString(chapter.index) + return umdBook?.chapters?.getContentString(chapter.index) } private fun getChapterList(): ArrayList { @@ -124,8 +122,11 @@ class UmdFile(var book: Book) { chapter.index = index chapter.bookUrl = book.bookUrl chapter.url = index.toString(); + Log.d("UMD",chapter.url) chapterList.add(chapter) } + book.latestChapterTitle = chapterList.lastOrNull()?.title + book.totalChapterNum = chapterList.size return chapterList } diff --git a/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt index 0bb66218d..5d45d4795 100644 --- a/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt @@ -197,6 +197,7 @@ class ImportBookActivity : VMBaseActivity titles = new ArrayList(); - public List contentLengths = new ArrayList(); + private List titles = new ArrayList<>(); + public List contentLengths = new ArrayList<>(); public ByteArrayOutputStream contents = new ByteArrayOutputStream(); public void addTitle(String s){ @@ -44,7 +44,7 @@ public class UmdChapters { return contentLengths.get(index); } - public byte[] getContent(int index) throws Exception { + public byte[] getContent(int index) { int st=contentLengths.get(index); byte[] b=contents.toByteArray(); int end=index+1 _ZippedContentList = new ArrayList<>(); -// public UmdReader(InputStream inputStream) { -// this.inputStream = inputStream; -// } -// public UmdReader(File file) throws IOException { -// this.inputStream = new FileInputStream(file); -// } + public synchronized UmdBook read(InputStream inputStream) throws Exception { - public UmdBook read(InputStream inputStream) throws Exception { book = new UmdBook(); + this.inputStream=inputStream; StreamReader reader = new StreamReader(inputStream); UmdHeader umdHeader = new UmdHeader(); book.setHeader(umdHeader); @@ -61,7 +61,7 @@ public class UmdReader { num1 = segType; } - //System.out.println(book.getHeader().toString()); + System.out.println(book.getHeader().toString()); return book; } @@ -97,7 +97,6 @@ public class UmdReader { System.out.println(length); book.getChapters().contents.write(UmdUtils.decompress(reader.readBytes(length))); book.getChapters().contents.flush(); - //this._ZippedContentList.add(reader.readBytes(length)); break; } else { for (int i = 0; i < book.getNum(); i++) { @@ -214,10 +213,6 @@ public class UmdReader { } - - - - @Override public String toString() { return "UmdReader{" +