🛠️ Replace HTM parser
* Removed HTM parser and replaced it with HTML parser (they are the same)
This commit is contained in:
parent
2a153dd80d
commit
ff1a43d444
5 changed files with 3 additions and 105 deletions
|
|
@ -3,7 +3,6 @@ package ua.acclorite.book_story.data.parser
|
|||
import android.util.Log
|
||||
import ua.acclorite.book_story.data.parser.epub.EpubFileParser
|
||||
import ua.acclorite.book_story.data.parser.fb2.Fb2FileParser
|
||||
import ua.acclorite.book_story.data.parser.htm.HtmFileParser
|
||||
import ua.acclorite.book_story.data.parser.html.HtmlFileParser
|
||||
import ua.acclorite.book_story.data.parser.pdf.PdfFileParser
|
||||
import ua.acclorite.book_story.data.parser.txt.TxtFileParser
|
||||
|
|
@ -19,7 +18,6 @@ class FileParserImpl @Inject constructor(
|
|||
private val epubFileParser: EpubFileParser,
|
||||
private val fb2FileParser: Fb2FileParser,
|
||||
private val htmlFileParser: HtmlFileParser,
|
||||
private val htmFileParser: HtmFileParser,
|
||||
) : FileParser {
|
||||
override suspend fun parse(file: File): BookWithCover? {
|
||||
if (!file.exists()) {
|
||||
|
|
@ -54,7 +52,7 @@ class FileParserImpl @Inject constructor(
|
|||
}
|
||||
|
||||
".htm" -> {
|
||||
htmFileParser.parse(file)
|
||||
htmlFileParser.parse(file)
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import android.util.Log
|
|||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.data.parser.epub.EpubTextParser
|
||||
import ua.acclorite.book_story.data.parser.fb2.Fb2TextParser
|
||||
import ua.acclorite.book_story.data.parser.htm.HtmTextParser
|
||||
import ua.acclorite.book_story.data.parser.html.HtmlTextParser
|
||||
import ua.acclorite.book_story.data.parser.pdf.PdfTextParser
|
||||
import ua.acclorite.book_story.data.parser.txt.TxtTextParser
|
||||
|
|
@ -22,7 +21,6 @@ class TextParserImpl @Inject constructor(
|
|||
private val epubTextParser: EpubTextParser,
|
||||
private val fb2TextParser: Fb2TextParser,
|
||||
private val htmlTextParser: HtmlTextParser,
|
||||
private val htmTextParser: HtmTextParser,
|
||||
) : TextParser {
|
||||
override suspend fun parse(file: File): Resource<List<ChapterWithText>> {
|
||||
if (!file.exists()) {
|
||||
|
|
@ -59,7 +57,7 @@ class TextParserImpl @Inject constructor(
|
|||
}
|
||||
|
||||
".htm" -> {
|
||||
htmTextParser.parse(file)
|
||||
htmlTextParser.parse(file)
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
package ua.acclorite.book_story.data.parser.htm
|
||||
|
||||
import org.jsoup.Jsoup
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.data.parser.FileParser
|
||||
import ua.acclorite.book_story.domain.model.Book
|
||||
import ua.acclorite.book_story.domain.model.BookWithCover
|
||||
import ua.acclorite.book_story.domain.model.Category
|
||||
import ua.acclorite.book_story.domain.util.UIText
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class HtmFileParser @Inject constructor() : FileParser {
|
||||
|
||||
override suspend fun parse(file: File): BookWithCover? {
|
||||
return try {
|
||||
val document = Jsoup.parse(file)
|
||||
|
||||
val title = document.select("head > title").text().trim().run {
|
||||
ifBlank {
|
||||
file.nameWithoutExtension.trim()
|
||||
}
|
||||
}
|
||||
|
||||
BookWithCover(
|
||||
book = Book(
|
||||
title = title,
|
||||
author = UIText.StringResource(R.string.unknown_author),
|
||||
description = null,
|
||||
textPath = "",
|
||||
scrollIndex = 0,
|
||||
scrollOffset = 0,
|
||||
progress = 0f,
|
||||
filePath = file.path,
|
||||
lastOpened = null,
|
||||
category = Category.entries[0],
|
||||
coverImage = null
|
||||
),
|
||||
coverImage = null
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
package ua.acclorite.book_story.data.parser.htm
|
||||
|
||||
import android.util.Log
|
||||
import kotlinx.coroutines.yield
|
||||
import org.jsoup.Jsoup
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.data.parser.DocumentParser
|
||||
import ua.acclorite.book_story.data.parser.TextParser
|
||||
import ua.acclorite.book_story.domain.model.Chapter
|
||||
import ua.acclorite.book_story.domain.model.ChapterWithText
|
||||
import ua.acclorite.book_story.domain.util.Resource
|
||||
import ua.acclorite.book_story.domain.util.UIText
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val HTM_TAG = "HTM Parser"
|
||||
|
||||
class HtmTextParser @Inject constructor(
|
||||
private val documentParser: DocumentParser
|
||||
) : TextParser {
|
||||
|
||||
override suspend fun parse(file: File): Resource<List<ChapterWithText>> {
|
||||
Log.i(HTM_TAG, "Started HTM parsing: ${file.name}.")
|
||||
|
||||
return try {
|
||||
val lines = documentParser.run { Jsoup.parse(file).parseDocument() }
|
||||
|
||||
yield()
|
||||
|
||||
if (lines.isEmpty()) {
|
||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||
}
|
||||
|
||||
Log.i(HTM_TAG, "Successfully finished HTM parsing.")
|
||||
Resource.Success(
|
||||
listOf(
|
||||
ChapterWithText(
|
||||
chapter = Chapter(title = "", startIndex = 0, endIndex = 0),
|
||||
text = lines
|
||||
)
|
||||
)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
Resource.Error(
|
||||
UIText.StringResource(
|
||||
R.string.error_query,
|
||||
e.message?.take(40)?.trim() ?: ""
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@ class HtmlTextParser @Inject constructor(
|
|||
yield()
|
||||
|
||||
if (lines.isEmpty()) {
|
||||
Log.e(HTML_TAG, "Could not extract text from HTML.")
|
||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue