mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 05:40:26 +02:00
Fixed ordered list numbers not being included in EPUB content conversion
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user