🛠️ Replace HTM parser

* Removed HTM parser and replaced it with HTML parser (they are the same)
This commit is contained in:
Acclorite 2024-10-05 09:50:16 +03:00
parent 2a153dd80d
commit ff1a43d444
5 changed files with 3 additions and 105 deletions

View file

@ -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 -> {

View file

@ -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 -> {

View file

@ -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
}
}
}

View file

@ -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() ?: ""
)
)
}
}
}

View file

@ -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))
}