5 Commits

Author SHA1 Message Date
AaronBenDaniel 3f5cd7985d fix(api): Carry over paragraph styling (#51) 2025-04-12 23:22:14 +05:30
AaronBenDaniel 52faaf54c2 fix(api): Stopped extra newlines from appearing with bold/italics (#40) 2025-04-04 07:46:05 +05:30
AaronBenDaniel e79453ab5f fix(api): Strip control characters from chapter titles (#47) 2025-02-15 16:34:28 +05:30
AaronBenDaniel d30f15a254 fix(api): Remove unused class (#43 - @AaronBenDaniel)
* fix(api): Typo fix

* fix(api): Remove chapitre/chapter class
2025-01-24 17:20:21 +05:30
AaronBenDaniel 08ff95d686 fix(api): Fix PDF ToC page number formatting 2025-01-01 06:07:36 +05:30
3 changed files with 26 additions and 54 deletions
+24 -30
View File
@@ -133,7 +133,7 @@ def generate_clean_part_html(part: Part, content: str) -> bs4.Tag:
clean = BeautifulSoup(
f"""
<section id="section_{chapter_id}" class="chapitre">
<section id="section_{chapter_id}">
<h1 id="{chapter_id}" class="chapter-title">{chapter_title}</h1>
</section>
""",
@@ -151,6 +151,14 @@ def generate_clean_part_html(part: Part, content: str) -> bs4.Tag:
raise Exception()
for child in html.find_all("p"):
current_paragraph = clean.new_tag("p")
# Attempt to carry over paragraph styling
try:
current_paragraph["style"] = child["style"]
except:
current_paragraph["style"] = "text-align: left;"
for p_child in list(child.children):
if not p_child:
continue
@@ -161,37 +169,22 @@ def generate_clean_part_html(part: Part, content: str) -> bs4.Tag:
src = p_child["src"]
img_tag = clean.new_tag("img")
img_tag["src"] = src
break_tag = clean.new_tag("br")
section.append(img_tag)
section.append(break_tag)
elif p_child.name == "b":
content = p_child.text
p_tag = clean.new_tag("p")
bold_tag = clean.new_tag("b")
bold_content = clean.new_string(content)
bold_tag.append(bold_content)
p_tag.append(bold_tag)
section.append(p_tag)
elif p_child.name == "i":
content = p_child.text
p_tag = clean.new_tag("p")
italic_tag = clean.new_tag("i")
italic_content = clean.new_string(content)
italic_tag.append(italic_content)
p_tag.append(italic_tag)
section.append(p_tag)
section.append(clean.new_tag("br"))
elif p_child.name in ["b", "i"]:
styled_tag = clean.new_tag(p_child.name)
styled_content = clean.new_string(p_child.text)
styled_tag.append(styled_content)
current_paragraph.append(styled_tag)
else:
# Append any other tags as-is
current_paragraph.append(p_child)
elif isinstance(p_child, bs4.element.NavigableString):
content = p_child.text
p_tag = clean.new_tag("p")
p_content = clean.new_string(content)
p_tag.append(p_content)
section.append(p_tag)
content = clean.new_string(p_child)
current_paragraph.append(content)
if current_paragraph.contents:
section.append(current_paragraph)
if not list(child.children):
# Some p tags only contain brs, once brs are removed, they are empty and can be removed as well.
@@ -461,6 +454,7 @@ class EPUBGenerator:
for cidx, (part, content) in enumerate(zip(self.data["parts"], contents)):
title = part["title"]
title = re.sub(r'[\x00-\x1F\x7F]', '', title) # Remove control characters
# Thanks https://eu17.proxysite.com/process.php?d=5VyWYcoQl%2BVF0BYOuOavtvjOloFUZz2BJ%2Fepiusk6Nz7PV%2B9i8rs7cFviGftrBNll%2B0a3qO7UiDkTt4qwCa0fDES&b=1
chapter = epub.EpubHtml(
+2
View File
@@ -205,6 +205,8 @@ section {
#contents a {
color: inherit;
text-decoration: none;
display: flex;
justify-content: space-between;
}
#contents a::before {
content: target-counter(attr(href), h2-counter) '. ' target-text(attr(href));
-24
View File
@@ -95,30 +95,6 @@
>
Wattpad Downloader
</h1>
<div
role="alert"
class="alert bg-amber-200 mt-10 break-words max-w-md"
>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
class="h-6 w-6 shrink-0 stroke-current"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
></path>
</svg>
<div>
<p>
Hey everyone, have a great new year! You're now on the Donator
version for a few days :)
</p>
</div>
</div>
<!-- <div role="alert" class="alert bg-cyan-300 mt-5">
<svg
xmlns="http://www.w3.org/2000/svg"