GitHub - ykarateke/FlipHTML5-Downloader · GitHub
Skip to content

ykarateke/FlipHTML5-Downloader

Folders and files

Repository files navigation

FlipHTML5 Kitap İndirici - Geliştirilmiş Sürüm v4.1

Bu Python betiği, FlipHTML5 platformunda yayınlanan kitapları, sayfa resimlerini indirip tek bir PDF dosyasında birleştirerek indirmenizi sağlar.

Hazırlayan: Yasin Karateke GitHub: https://github.com/ykarateke

Python Version


Açıklama

FlipHTML5, yayınlarınızı çevrimiçi olarak paylaşmak için kullanılan popüler bir platformdur. Bu betik, belirli bir kitabın kimliğini (ID) kullanarak, o kitaba ait sayfaların resim dosyalarını (.jpg veya .webp formatında arar, .jpg olarak kaydeder) indirir ve ardından bu resimleri sıralı bir şekilde tek bir PDF dosyasında birleştirir.

İşlemler sırasında hız kazanmak için çoklu iş parçacığı (multi-threading) kullanılır ve tqdm kütüphanesi ile indirme ve PDF oluşturma ilerlemesi gösterilir. Betik, olası hatalara karşı (ağ hataları, bulunamayan sayfalar, yapılandırma sorunları vb.) çeşitli kontroller ve hata yakalama mekanizmaları içerir.


Özellikler

  • Kitap ID ile İndirme: kullaniciAdi/kitapKimligi formatındaki ID ile kitapları hedefler.
  • Sayfa Aralığı Belirleme: İndirilecek başlangıç ve bitiş sayfalarını belirleyebilirsiniz (varsayılan olarak tüm kitap indirilir).
  • Özelleştirilebilir Kayıt Yolu: İndirilen resimlerin kaydedileceği klasör adını ve oluşturulacak PDF dosyasının adını belirleyebilirsiniz.
  • Mevcut Dosyaları Atlama: Daha önce indirilmiş olan sayfa resimlerini tekrar indirmeyerek zaman kazandırır (varsayılan olarak etkindir).
  • Eşzamanlı İndirme: Ayarlanabilir sayıda iş parçacığı (thread) kullanarak indirme işlemini hızlandırır.
  • Otomatik Yapılandırma Algılama: Kitabın sayfa bilgilerini içeren config.js dosyasını otomatik olarak bulup ayrıştırır (htmlConfig ve bookConfig formatlarını destekler).
  • Esnek Resim Yolu Algılama: Farklı çözünürlük/formatlardaki resimleri bulmaya çalışır (large, page, mobile yolları ve .webp, .jpg uzantıları denenir). Tüm bulunan resimler .jpg olarak kaydedilir.
  • Hata Yönetimi ve Tekrar Deneme: Ağ hataları, zaman aşımları, 403 (Erişim Engellendi) ve 404 (Bulunamadı) gibi durumlarda bilgilendirme yapar. Başarısız indirmeler için bir tekrar deneme mekanizması içerir.
  • PDF Oluşturma: İndirilen resimleri doğru sırada birleştirerek tek bir PDF dosyası oluşturur (fpdf2 ve PyPDF2 kullanılır).
  • Büyük PDF'ler İçin İyileştirme: Çok sayıda sayfası olan kitaplarda bellek sorunlarını önlemek için PDF oluşturma işlemi parçalar halinde yapılır (chunking).
  • İlerleme Çubukları: İndirme ve PDF oluşturma aşamalarında görsel ilerleme bilgisi sunar (tqdm).
  • Rastgele Kullanıcı Aracısı (User-Agent): Sunucu tarafında basit engellemeleri aşmaya yardımcı olmak için isteklerde rastgele tarayıcı kimlikleri kullanır.
  • Geçici Dosya Temizliği: PDF oluşturma sırasında kullanılan geçici dosyalar işlem sonunda otomatik olarak silinir.

Gereksinimler

  • Python 3.x
  • Gerekli Kütüphaneler:
    • requests: HTTP istekleri göndermek için.
    • Pillow (PIL Fork): Resim dosyalarını işlemek ve dönüştürmek için.
    • tqdm: Konsolda ilerleme çubukları göstermek için.
    • PyPDF2: PDF dosyalarını birleştirmek için.
    • fpdf2: Resimlerden PDF sayfaları oluşturmak için (script'te fpdf olarak import edilse de, genellikle fpdf2 paketi kurulur ve kullanılır).

Kurulum

  1. Python: Henüz kurulu değilse, Python'un resmi web sitesinden Python 3'ü indirip kurun.

  2. Kütüphaneler: Terminal veya komut istemcisini açın ve aşağıdaki komutu çalıştırarak gerekli kütüphaneleri yükleyin:

    pip install requests Pillow tqdm PyPDF2 fpdf2

Kullanım

  1. Betiği (.py uzantılı dosyayı) bilgisayarınıza indirin.

  2. Terminal veya komut istemcisini açın ve betiğin bulunduğu dizine gidin (cd /path/to/script).

  3. Betiği Python ile çalıştırın:

    python fliphtml5_downloader_v4.1.py
  4. Betik sizden aşağıdaki bilgileri isteyecektir:

    • Kitap ID'si: İndirmek istediğiniz kitabın FlipHTML5 üzerindeki ID'si (örn: ornekKullanici/abcd123). Bu formatta girilmesi zorunludur.
    • Başlangıç Sayfası: İndirmeye başlanacak sayfa numarası. Varsayılan olarak 1. Sadece sayı girin.
    • Bitiş Sayfası: İndirmenin biteceği sayfa numarası. Boş bırakırsanız kitabın son sayfasına kadar indirilir. Sadece sayı girin.
    • Klasör Adı: Resimlerin ve PDF'nin kaydedileceği klasör. Varsayılan olarak Kitap ID'sinden türetilen güvenli bir isim (ornekKullanici-abcd123 gibi) kullanılır. Boş bırakırsanız varsayılan kullanılır.
    • PDF Dosya Adı: Oluşturulacak PDF'nin adı. Varsayılan olarak klasör adıyla aynı isimde .pdf uzantılı (ornekKullanici-abcd123.pdf gibi) bir isim kullanılır. Boş bırakırsanız varsayılan kullanılır.
    • Mevcut Resimleri Atla: e (evet) veya h (hayır). Klasörde zaten var olan resim dosyalarının indirilip indirilmeyeceğini sorar. Varsayılan e.
    • Maksimum Eşzamanlı İndirme Sayısı: Aynı anda kaç tane sayfa indirme işleminin yapılacağını belirler. Varsayılan 5. Sunucuyu yormamak adına çok yüksek değerlerden (örn. 20'den fazla) kaçının.
  5. Gerekli bilgileri girdikten sonra betik önce yapılandırma dosyasını bulmaya çalışacak, ardından sayfaları indirmeye başlayacak ve son olarak PDF dosyasını oluşturacaktır.


Nasıl Çalışır?

  1. Yapılandırma Alma: Betik, verilen Kitap ID'si ile ilişkili config.js dosyasını FlipHTML5 sunucusundan çekmeye çalışır. Bu dosya genellikle kitabın sayfaları, ID'leri ve diğer ayarları içeren bir JavaScript nesnesi (htmlConfig veya bookConfig) barındırır.
  2. Yapılandırma Ayrıştırma: JavaScript içeriğinden JSON benzeri yapı regex kullanılarak çıkarılır ve Python'un json modülü ile ayrıştırılır. Sayfa bilgileri (genellikle sayfa numarası ve benzersiz bir resim ID'si veya dosya adı) çıkarılır.
  3. Sayfa Sırası Kaydı: İndirilecek sayfa aralığındaki sayfaların numaraları, PDF oluşturma aşamasında doğru sırayı korumak için page_order.txt dosyasına yazılır.
  4. Resim İndirme: Belirlenen her sayfa için, potansiyel resim URL'leri (/files/large/, /files/page/, /files/mobile/ yolları ve .webp, .jpg uzantıları kombinasyonları denenerek) oluşturulur.
    • URL'lere istek gönderilir. İlk başarılı yanıt (HTTP 200) alındığında resim indirilir.
    • İndirme işlemi hızlandırmak için threading ile eşzamanlı yapılır.
    • İndirilen resimler (WebP formatında olsalar bile) standart .jpg formatına dönüştürülerek kaydedilir.
    • Hata durumları (404, 403, zaman aşımı vb.) yakalanır ve loglanır. Başarısız indirmeler için kısa bir bekleme süresi sonrası bir kez daha deneme yapılır.
  5. PDF Oluşturma:
    • page_order.txt dosyasındaki sıraya göre, indirilen .jpg dosyaları bulunur.
    • İlk resmin boyutları okunarak PDF sayfa boyutu belirlenir (varsayılan A4).
    • Çok sayıda sayfa varsa, işlem parçalara (chunks) ayrılır. Her bir parça için geçici bir PDF dosyası (fpdf2 kullanılarak) oluşturulur. Bu, bellek kullanımını optimize eder.
    • Tüm geçici PDF parçaları oluşturulduktan sonra, PyPDF2 kullanılarak bu parçalar nihai PDF dosyasında birleştirilir.
    • Geçici PDF dosyaları silinir.

Önemli Notlar ve Sorumluluk Reddi

  • Etik Kullanım: Bu betik yalnızca erişim hakkınız olan veya kamuya açık olan içerikleri indirmek için kullanılmalıdır. Telif hakkıyla korunan materyalleri izinsiz indirmek ve dağıtmak yasa dışıdır ve etik değildir. Bu aracın kullanımından doğacak sonuçlardan kullanıcı sorumludur.
  • Platform Değişiklikleri: FlipHTML5 web sitesinin yapısını veya API'lerini değiştirirse, bu betik çalışmayabilir veya hatalar verebilir. Betiğin düzenli olarak güncellenmesi gerekebilir.
  • Erişim Engelleri: Yoğun kullanım veya sunucu tarafı güvenlik önlemleri nedeniyle FlipHTML5 IP adresinizi geçici veya kalıcı olarak engelleyebilir. Düşük sayıda thread kullanmak bu riski azaltabilir. Bazı kitaplar özel korumalarla indirmeye kapalı olabilir.
  • Performans: İndirme hızı internet bağlantınıza, hedef sunucunun yoğunluğuna ve seçtiğiniz thread sayısına bağlıdır.
  • PDF Boyutu: İndirilen resimlerin kalitesi ve sayısı PDF dosyasının boyutunu belirler. Büyük kitaplar önemli ölçüde disk alanı kaplayabilir.

Olası Sorunlar ve Çözümler

  • Yapılandırma Alınamıyor:
    • Kitap ID'sini doğru formatta (kullanici/kitapid) girdiğinizden emin olun.
    • Kitap kaldırılmış veya gizli olabilir.
    • FlipHTML5 sitesinde yapılandırma dosyası formatı değişmiş olabilir.
    • Ağ bağlantınızı veya bir VPN kullanmayı deneyin.
  • Sayfalar İndirilemiyor (404 Not Found):
    • Yapılandırma dosyasındaki resim yolları veya ID'leri geçersiz olabilir.
    • FlipHTML5, resim dosyalarının konumunu veya adlandırma şemasını değiştirmiş olabilir.
    • Kitap eksik veya bozuk yüklenmiş olabilir.
  • Sayfalar İndirilemiyor (403 Forbidden):
    • FlipHTML5 erişiminizi engellemiş olabilir (IP ban). Daha az thread kullanmayı veya bir süre beklemeyi deneyin. VPN kullanmak işe yarayabilir.
    • Kitap korumalı olabilir ve doğrudan resim indirmeye izin vermiyor olabilir.
  • PDF Oluşturulamıyor:
    • Gerekli kütüphanelerin (Pillow, PyPDF2, fpdf2) doğru kurulduğundan emin olun.
    • page_order.txt dosyası bulunamıyor veya boş olabilir (indirme adımında sorun yaşanmış olabilir).
    • Bazı indirilen resim dosyaları bozuk olabilir.
    • Diskte yeterli alan olmayabilir.
    • Klasöre yazma izniniz olmayabilir.
  • Python veya Kütüphane Hataları:
    • Hata mesajını dikkatlice okuyun. Belirli bir kütüphane ile ilgiliyse, pip install --upgrade kütüphane_adı komutuyla güncellemeyi deneyin.
    • Python sürümünüzün uyumlu olduğundan emin olun (Python 3.x önerilir).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages