5 poin oleh GN⁺ 2024-10-22 | 1 komentar | Bagikan ke WhatsApp
  • Epublifier adalah ekstensi browser yang mengekstrak daftar halaman HTML dari situs web, mengompilasinya menjadi buku ePub, lalu memungkinkan pengguna membawanya ke eReader pilihan mereka
  • Pengguna tingkat lanjut yang dapat menulis JavaScript bisa menambahkan definisi parser untuk menyesuaikan cara parsing situs tertentu
  • Yang didukung mencakup Novel Update, Wuxia World, banyak situs dari awesome-read-the-docs, situs kustom berbasis daftar isi UL/OL·regex teks tautan·query selector, serta web app kustom yang memiliki elemen judul dan tombol Next
  • Karena berjalan di dalam browser, alat ini dapat memproses halaman bahkan pada situs yang menghasilkan atau mengambil teks secara dinamis dengan JavaScript, dan menyediakan scraping berbasis UI untuk memilih elemen inti dengan klik mouse
  • Alat ini tidak ditujukan untuk pekerjaan latar belakang yang berjalan berulang atau scraper khusus yang sangat tangguh, dan pada situs yang sudah ditangani dengan baik oleh program lain, sulit mengharapkan kinerja yang lebih baik daripada alat dengan konfigurasi khusus

Apa yang dilakukan Epublifier

  • Epublifier adalah alat untuk mengubah situs web menjadi ePub
  • Alat ini mengekstrak daftar halaman HTML dari situs web, mengompilasinya menjadi buku ePub, lalu memungkinkan pengguna membawanya ke eReader yang diinginkan
  • Pengguna yang bisa menulis JavaScript dapat menambahkan definisi parser tambahan untuk menyesuaikan parsing situs mana pun
  • Cara penggunaan dapat dilihat di wiki

Situs dan struktur halaman yang didukung

  • Saat ini yang didukung adalah sebagai berikut
    • Novel Update

    • Wuxia World

      • Banyak situs yang termasuk dalam awesome-read-the-docs
      • Situs kustom yang menggunakan elemen UL/OL sebagai daftar isi
      • Situs kustom yang menggunakan regex pada teks tautan atau query selector
      • Web app kustom dengan elemen judul (header) yang telah ditentukan dan tombol Next yang bisa diklik

Instalasi

Contoh penggunaan

  • Ada contoh ekstraksi daftar halaman di Novel Update
  • Ada contoh menelusuri web app dengan mengikuti tombol Next di Wuxia World
  • Ada contoh ekstraksi dokumentasi di situs dokumentasi lain seperti dokumentasi FastAPI

Alasan dibuat sebagai ekstensi browser

  • Alat ini ditujukan untuk membuat ePub sementara dari situs web yang tidak mudah di-scrape dengan skrip CLI tradisional berbasis request atau beberapa ekstensi Chrome yang mengambil data berdasarkan tab atau jendela yang terbuka
  • Scraper CLI yang sudah ada atau ekstensi lain umumnya disesuaikan untuk situs yang telah ditentukan sebelumnya, dan mungkin tidak cocok untuk situs di luar cakupan itu
  • Beberapa alat memerlukan konfigurasi yang tidak sedikit atau penulisan kode
  • Sebagian situs menghasilkan atau mengambil teks secara dinamis dengan JavaScript, sehingga browser harus menjalankan JavaScript
    • Inilah celah terbesar yang melatarbelakangi pembuatan Epublifier
  • Karena berjalan di dalam browser, kemungkinan terdeteksi atau diblokir mungkin lebih rendah

Cara pakai yang dimaksudkan dan keterbatasannya

  • Epublifier bukan alat yang ditujukan untuk digunakan sebagai scraper yang tangguh atau pekerjaan terjadwal di latar belakang yang berjalan berulang
  • Alasan elemen inti untuk scraping dipilih lewat UI juga sejalan dengan pola penggunaan ini
  • Tujuannya adalah fleksibilitas, agar dapat melakukan scraping dengan relatif mudah meski tanpa konfigurasi khusus per situs, hanya dengan beberapa klik mouse
  • Jika suatu situs sudah ditangani dengan baik oleh program atau ekstensi lain, alat-alat tersebut sudah dikonfigurasi untuk situs itu sehingga Epublifier tidak akan bekerja lebih baik
  • Alat ini cocok untuk kasus saat Anda ingin melakukan scraping satu atau dua kali pada suatu situs tanpa menghabiskan banyak waktu untuk coding atau konfigurasi

Build

  • Lingkungan build adalah Windows 10 dan NPM 8.1.2
  • Prosedur build adalah sebagai berikut
    • Instal NPM
    • Jalankan npm install di direktori utama
    • Untuk Firefox, jalankan npm run build_ff
    • Untuk Chrome, jalankan npm run build

Komponen yang digunakan

  • jEpub digunakan untuk membuat ePub

1 komentar

 
GN⁺ 2024-10-22
Komentar Hacker News
  • Yang membuat ekstensi ini berbeda dari scraper lain adalah karena ini alat untuk membuat EPUB sementara dari situs yang sulit di-scrape dengan scraper tradisional
    Biasanya scraper command-line atau ekstensi lain sudah punya daftar situs yang didukung, atau membutuhkan cukup banyak konfigurasi/kode
    Selain itu, sebagian situs membuat atau mengambil isi secara dinamis dengan JavaScript, sehingga browser harus menjalankan JavaScript secara langsung; ini adalah celah terbesarnya
    Karena berjalan di dalam browser, kemungkinan terdeteksi atau diblokir juga bisa lebih rendah
    Tujuannya bukan untuk dipakai secara tangguh seperti tugas terjadwal di background yang berjalan berulang, dan karena itu ada UI untuk memilih elemen inti yang akan diambil
    Ini alat untuk mengurangi waktu yang dihabiskan mengambil konten satu-dua kali dengan beberapa klik mouse tanpa konfigurasi khusus per situs; kalau situs itu sudah ditangani dengan baik oleh program/ekstensi lain, kemungkinan opsi itu lebih baik
    Saya membuatnya karena saya bukan tipe yang lama bertahan di situs yang sama

  • Dari sudut pandang orang yang pernah membuat hal serupa sendiri, bagian menarik dari alat ini adalah UI untuk menyesuaikan ekstraksi konten secara berulang di situs sembarang
    Fakta bahwa seluruh proses ekstraksi bisa ditangani lewat GUI membuatnya jauh lebih fleksibel daripada cara umum

  • Akan sangat keren kalau ini bisa menangani situs yang semua bagiannya berada di balik UI akordeon yang harus dibuka agar terlihat, dan ketika satu bagian dibuka bagian lain tertutup

    • Dalam kasus saya, ini berfungsi di situs ini: https://docs.ray.io/en/latest/
    • Bisakah ini menghapus popup seperti newsletter, langganan, login, dan notifikasi cookie? Bisakah membaca halaman yang memerlukan login?
  • Saat ini saya juga sedang membuat sesuatu yang sangat mirip
    Saya membuat web scraper dan parser EPUB untuk blog dan terutama web novel, lalu menyimpan datanya ke database bersama kategori dan tag
    Saya juga membuat PWA untuk membaca offline yang melacak progres baca beberapa karya dan memungkinkan menyimpan beberapa versi dari cerita yang sama (web novel dan EPUB terbitan)

  • Calibre mendukung sangat banyak situs
    https://github.com/JimmXinu/FanFicFare
    https://github.com/JimmXinu/FanFicFare/wiki/SupportedSites

  • Dulu saya membuat Kindle-send[0] yang serupa untuk mengirim blog ke Kindle, dan secara internal memakai readability
    Sekarang saya menggunakannya untuk mengirim blog, buku, dan kadang arsip seluruh situs web, serta bisa dipakai dari skrip
    Karena highlight Kindle bisa diekspor ke Obsidian, membuat EPUB seperti ini punya keuntungan bahwa highlight bisa dikumpulkan di satu tempat
    Namanya kindle-send, tetapi bisa mengirim ke e-reader mana pun yang memakai email sebagai cara pengiriman buku
    [0] https://github.com/nikhil1raghav/kindle-send

  • Saya pernah membuat hal serupa untuk terminal Unix, ditujukan untuk halaman web, Gopher, dan Gemini: Offpunk
    https://sr.ht/~lioploum/offpunk/
    Alih-alih EPUB, Gopher disimpan di cache sebagai file teks, Gemini sebagai file Gemini, dan halaman web sebagai HTML+gambar
    Anda bisa melihat struktur hierarkisnya di ~/.cache/offpunk atau langsung mengunjunginya dari Offpunk
    Dengan fitur tour, alih-alih doomscrolling, Anda membaca semua tulisan secara berurutan sampai selesai dalam mode teks

  • Ada beberapa alat yang mirip dengan Epublifier
    https://epub.press/
    https://github.com/dteviot/WebToEpub
    https://dotepub.com/

  • Rapi
    Dulu saya membuat versi sederhana dari konsep ini, menyimpan file EPUB di sistem file server, lalu menyinkronkannya dengan e-reader saya
    https://github.com/solarkraft/webpub
    Bahan intinya adalah Postlight Parser, yang mengubah situs web menjadi tampilan “dokumen” yang disederhanakan

  • Apakah http://fanfiction.net/ juga didukung? Saya belum menemukan solusi yang mudah untuk situs ini

    • Bisa diekspor sebagai EPUB dari https://fichub.net/
    • Saya memakai add-on Calibre: https://www.mobileread.com/forums/showthread.php?t=259221
      Cukup berfungsi sampai taraf tertentu, tetapi sebagian cerita berjalan baik sementara sebagian lain hanya mengambil halaman pertama
    • Fanfiction.net sendiri sederhana, tetapi pemblokiran bot Cloudflare diaktifkan secara agresif
      Untuk mengambil kontennya, saya belum melihat pendekatan yang berjalan baik selain memakai browser headless
    • Semua tautan chapter bisa diambil sebagai CSV, dan strukturnya tampak seperti hanya menaikkan nomor di URL