Fixed ordered list numbers not being included in EPUB content conversion

This commit is contained in:
Deniz Şafak
2025-09-17 19:47:52 +03:00
parent a2dc28f4d4
commit a074b8b0ad
2 changed files with 31 additions and 0 deletions
+1
View File
@@ -5,6 +5,7 @@
- Improved the markdown logic to better handle various markdown structures and cases.
- Fixed save options not working correctly in queue mode, mentioned by @jborza in #78
- Fixed `No Qt platform plugin could be initialized` error, mentioned by @sunrainxyz in #59
- Fixed ordered list numbers not being included in EPUB content conversion. The numbers are now properly included in the converted content, mentioned by @jefro108 in #47
- Potentially fixed subtitle generation stucks at 9:59:59, mentioned by @bolaykim in #73
- Improvements in code and documentation.
+30
View File
@@ -321,9 +321,23 @@ class HandlerDialog(QDialog):
html_content = self.doc_content.get(doc_href, "")
if html_content:
soup = BeautifulSoup(html_content, "html.parser")
# Handle ordered lists by prepending numbers to list items
for ol in soup.find_all("ol"):
# Get start attribute or default to 1
start = int(ol.get("start", 1))
for i, li in enumerate(ol.find_all("li", recursive=False)):
# Insert the number at the beginning of the list item
number_text = f"{start + i}) "
if li.string:
li.string.replace_with(number_text + li.string)
else:
li.insert(0, NavigableString(number_text))
# Remove sup and sub tags
for tag in soup.find_all(["sup", "sub"]):
tag.decompose()
text = clean_text(soup.get_text()).strip()
if text:
self.content_texts[doc_href] = text
@@ -627,10 +641,26 @@ class HandlerDialog(QDialog):
slice_html = current_doc_html
if slice_html.strip():
slice_soup = BeautifulSoup(slice_html, "html.parser")
# Add line breaks after paragraphs and divs
for tag in slice_soup.find_all(["p", "div"]):
tag.append("\n\n")
# Handle ordered lists by prepending numbers to list items
for ol in slice_soup.find_all("ol"):
# Get start attribute or default to 1
start = int(ol.get("start", 1))
for i, li in enumerate(ol.find_all("li", recursive=False)):
# Insert the number at the beginning of the list item
number_text = f"{start + i}) "
if li.string:
li.string.replace_with(number_text + li.string)
else:
li.insert(0, NavigableString(number_text))
# Remove sup and sub tags that might contain footnotes
for tag in slice_soup.find_all(["sup", "sub"]):
tag.decompose()
text = clean_text(slice_soup.get_text()).strip()
if text:
self.content_texts[current_src] = text