çok yardımcı oldunuz teşekkürler arkadaşlar aosdfsd. neyse kendim hallettim. nasıl hallettiğimi de yazıyorum buraya. chatgp sağolsun.
httracktan böölümleri indirdiniz ama sadece klasörler bölüm1, bölüm2 vs diey devam ediyor ama index yani html dosyaları hep aynı isimse bu kodu kullanın. PYTHON kullanarak yyaptım araştırın iyice ben sadece temeli yazdım size. chatgptden destek alın.
import os
# Kök dizini belirle (indirilen kitapların bulunduğu ana klasör)
root_directory = "-----------------------" # tireli alana kendi klasör yolunuzu yazın
# Klasörleri taramak için os.walk kullan
for root, dirs, files in os.walk(root_directory):
for dir_name in dirs:
# Klasörün tam yolunu oluştur
folder_path = os.path.join(root, dir_name)
# Klasördeki index.html dosyasının yolunu belirle
index_file_path = os.path.join(folder_path, "index.html")
# Eğer index.html dosyası varsa
if os.path.exists(index_file_path):
# Yeni dosya adını oluştur (klasör ismi + .html)
new_file_name = f"{dir_name}.html"
new_file_path = os.path.join(folder_path, new_file_name)
# Dosyayı yeniden adlandır
os.rename(index_file_path, new_file_path)
print(f"{index_file_path} -> {new_file_path} olarak yeniden adlandırıldı.")
bu kodla index dosyalarınız artık index değil bölüm 1, bölüm 2 bölüm 3 vs diye devam edecek.
sonra tüm bölümleri birleştirip epub yapmak için bu kodu kullanacaksınız
import os
from ebooklib import epub
from bs4 import BeautifulSoup
import re
# HTML dosyalarının bulunduğu klasörün yolunu buraya yaz
html_folder = "html dosyalarının yolunu buraa girin" # Kendi yolunu gir
output_epub = "xxxxxxxx.epub" # Çıktı dosyasının adı
# Yeni EPUB kitabı oluştur
book = epub.EpubBook()
book.set_title("HTML to EPUB")
book.set_language("tr")
book.add_author("Mazlum Çoksu") # Buraya ismini yazabilirsin
# HTML dosyalarını sırayla al ve EPUB içine ekle
chapters = []
for i, filename in enumerate(sorted(os.listdir(html_folder))):
if filename.endswith(".html"):
file_path = os.path.join(html_folder, filename)
with open(file_path, "r", encoding="utf-8") as f:
soup = BeautifulSoup(f, "html.parser")
text_content = soup.get_text() # HTML içindeki sadece metni al
# İstenmeyen cümleyi veya kelimeleri temizle
text_content = text_content.replace(""------------- "") # bu alana istemediğiniz kelimeleri giriyorsunuz
# Düzenli ifade ile temizleme (örneğin, "Bölüm başı metin" cümlesi gibi)
pattern = re.compile(r"Bölüm başı metin.*?") # "Bölüm başı metin" ve sonrasını bulur
text_content = re.sub(pattern, "", text_content)
# Paragrafları düzenle
paragraphs = text_content.split("\n") # Satırları ayır
formatted_text = "".join(f"<p>{p.strip()}</p>" for p in paragraphs if p.strip())
chapter = epub.EpubHtml(title=f"Bölüm {i+1}", file_name=f"chapter_{i+1}.xhtml", lang="tr")
chapter.content = f"<h1>Bölüm {i+1}</h1>{formatted_text}"
book.add_item(chapter)
chapters.append(chapter)
# Kitaba içindekiler ve bölümleri ekleyelim
book.toc = chapters
book.spine = ['nav'] + chapters
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())
# EPUB dosyasını kaydet
epub.write_epub(output_epub, book, {})
print("EPUB dosyası başarıyla oluşturuldu:", output_epub)
tabi en güzel sonucu almak için chatgpt ile ortaklaşa çalışın benim yazamadığım detayları verir size illaki bir kaç şey eksik de yazmışımdır.