Epublifier - ऑफलाइन पढ़ने के लिए पेज (किताबें, मैनुअल) scraping टूल
(github.com/maoserr)- Epublifier एक browser extension टूल है जो वेबसाइटों के HTML पेजों की सूची निकालकर उन्हें ePub किताब में compile करता है, ताकि यूज़र उसे अपनी पसंद के eReader में ले जा सके
- JavaScript लिख सकने वाले advanced यूज़र parser definitions जोड़कर किसी खास साइट की parsing विधि को customize कर सकते हैं
- समर्थित targets में Novel Update, Wuxia World, awesome-read-the-docs की कई साइटें, UL/OL table of contents·link text regex·query selector आधारित custom sites, और title element व Next button वाली custom web apps शामिल हैं
- यह browser के अंदर चलता है, इसलिए JavaScript से dynamically text generate या fetch करने वाली साइटों के पेज भी process कर सकता है, और mouse click से core elements चुनने वाली UI-based scraping देता है
- इसका उद्देश्य बार-बार चलने वाले background jobs या मजबूत dedicated scraper बनना नहीं है; और जिन साइटों को दूसरे programs पहले से अच्छी तरह handle करते हैं, वहाँ dedicated settings वाले tools से बेहतर performance की उम्मीद करना मुश्किल है
Epublifier क्या करता है
- Epublifier वेबसाइटों को ePub में बदलने वाला टूल है
- यह वेबसाइट से HTML पेजों की सूची निकालता है और उन्हें ePub किताब में compile करता है, ताकि यूज़र उसे अपनी पसंद के eReader में import कर सके
- JavaScript लिख सकने वाले यूज़र अतिरिक्त parser definitions डालकर किसी भी साइट की parsing को customize कर सकते हैं
- इस्तेमाल का तरीका wiki में देखा जा सकता है
समर्थित साइटें और page structures
- फिलहाल समर्थित targets ये हैं
-
Novel Update
-
Wuxia World
- awesome-read-the-docs में शामिल कई साइटें
- custom sites जो UL/OL elements को table of contents के रूप में इस्तेमाल करती हैं
- custom sites जो link text के लिए regex या query selector का इस्तेमाल करती हैं
- पहले से define किए गए title (header) element और clickable Next button वाली custom web apps
-
इंस्टॉलेशन
- Firefox extension Firefox Add-ons से install किया जा सकता है
- Chrome extension Chrome Web Store से install किया जा सकता है
इस्तेमाल के उदाहरण
- Novel Update में page list extraction का उदाहरण है
- Wuxia World में Next button को follow करते हुए web app traverse करने का उदाहरण है
- FastAPI docs जैसी दूसरी documentation sites से document extraction का उदाहरण है
इसे browser extension के रूप में बनाने की वजह
- यह टूल उन वेबसाइटों से temporary ePub creation के लिए है जिन्हें traditional request-based CLI scripts या खुले tabs/windows के आधार पर scrape करने वाले कुछ Chrome extensions से अच्छी तरह scrape नहीं किया जा सकता
- मौजूदा CLI scrapers या दूसरे extensions आमतौर पर pre-defined sites के हिसाब से बने होते हैं, और उस scope से बाहर की sites पर fit नहीं बैठ सकते
- कुछ tools में काफी settings या code writing की जरूरत होती है
- कुछ sites JavaScript से text dynamically generate या fetch करती हैं, इसलिए browser को JavaScript चलाना पड़ता है
- यही Epublifier बनाने की सबसे बड़ी gap थी
- Browser के अंदर चलने से detect या block होने की संभावना कम भी हो सकती है
Intended usage और सीमाएँ
- Epublifier को मजबूत scraper या बार-बार चलने वाले background scheduled job के रूप में इस्तेमाल करने के लिए नहीं बनाया गया है
- Scrape करने के लिए core elements को UI में चुनवाने की वजह भी इसी usage pattern से जुड़ी है
- लक्ष्य generality है, ताकि site-specific settings के बिना भी कुछ mouse clicks में अपेक्षाकृत आसानी से scrape किया जा सके
- अगर कोई site पहले से किसी दूसरे program या extension से अच्छी तरह handle होती है, तो वे tools उस site के लिए configure होते हैं, इसलिए Epublifier उनसे बेहतर काम नहीं करेगा
- यह उन cases के लिए है जहाँ आप coding या settings में ज्यादा समय लगाए बिना किसी site को एक-दो बार scrape करना चाहते हैं
Build
- Build environment Windows 10 और NPM 8.1.2 है
- Build प्रक्रिया इस प्रकार है
- NPM install करें
- base directory में
npm installचलाएँ - Firefox के लिए
npm run build_ffचलाएँ - Chrome के लिए
npm run buildचलाएँ
इस्तेमाल किए गए components
- ePub creation के लिए jEpub का इस्तेमाल किया गया है
1 टिप्पणियां
Hacker News की राय
यह extension दूसरे scrapers से अलग इसलिए है, क्योंकि यह उन sites से अस्थायी रूप से EPUB बनाने के लिए बना tool है जिन्हें traditional scrapers ठीक से scrape नहीं कर पाते
आम तौर पर command-line scrapers या दूसरे extensions में supported sites पहले से तय होती हैं, या फिर काफी configuration/code चाहिए होता है
साथ ही कुछ sites JavaScript से body content को dynamically generate या fetch करती हैं, इसलिए browser को खुद JavaScript चलाना पड़ता है—यही सबसे बड़ा gap था
Browser के अंदर चलने के कारण detection/blocking की संभावना भी कम हो सकती है
इसका मकसद बार-बार चलने वाले background scheduled job की तरह robust इस्तेमाल नहीं है, इसलिए इसमें scrape किए जाने वाले मुख्य elements चुनने के लिए UI है
यह tool बिना किसी site-specific configuration के, mouse के कुछ clicks में एक-दो बार scrape करने में समय बचाने के लिए है; और अगर कोई site पहले से ही किसी दूसरे program/extension से अच्छी तरह handle होती है, तो वही बेहतर होगा
मैंने इसे इसलिए बनाया क्योंकि मैं अक्सर एक ही site पर लंबे समय तक नहीं रहता
किसी मिलते-जुलते tool को खुद बना चुके व्यक्ति के तौर पर, इस tool में दिलचस्प हिस्सा arbitrary sites से content extraction को बार-बार adjust करने वाला UI है
Extraction process को पूरी GUI से handle कर पाना आम तरीकों से कहीं ज्यादा flexible है
अगर यह उन sites को भी handle कर सके जहां सभी sections accordion UI के पीछे छिपे होते हैं और एक section खोलने पर दूसरा section बंद हो जाता है, तो वाकई शानदार होगा
अभी मैं भी बहुत मिलता-जुलता कुछ बना रहा हूं
Blogs और खासकर web novels आदि के लिए web scraper और EPUB parser बना रहा हूं, और categories/tags के साथ data को database में store करता हूं
साथ में offline reading के लिए एक PWA भी बना रहा हूं, जो कई works की reading progress track कर सके और एक ही story के कई versions (web novel और published EPUB) सहेज सके
Calibre बहुत बड़ी संख्या में sites support करता है
https://github.com/JimmXinu/FanFicFare
https://github.com/JimmXinu/FanFicFare/wiki/SupportedSites
पहले blogs को Kindle पर भेजने के लिए मैंने मिलता-जुलता Kindle-send[0] बनाया था, और internally यह readability का इस्तेमाल करता है
अब मैं इसका इस्तेमाल blogs, books, और कभी-कभी पूरी website archives भेजने के लिए भी करता हूं, और इसे scripts से भी use किया जा सकता है
Kindle highlights को Obsidian में export किया जा सकता है, इसलिए ऐसे EPUB बनाने का फायदा यह है कि highlights एक जगह इकट्ठे किए जा सकते हैं
नाम kindle-send है, लेकिन अगर कोई ebook reader books भेजने के तरीके के तौर पर email इस्तेमाल करता है, तो इसे कहीं भी भेजा जा सकता है
[0] https://github.com/nikhil1raghav/kindle-send
मैंने Unix terminal के लिए भी कुछ ऐसा ही बनाया था, web pages, Gopher और Gemini के लिए: Offpunk
https://sr.ht/~lioploum/offpunk/
EPUB के बजाय Gopher को text files, Gemini को Gemini files, और web pages को HTML+images के रूप में cache में store करता है
~/.cache/offpunkमें hierarchy देख सकते हैं या Offpunk से सीधे visit कर सकते हैंtourfeature इस्तेमाल करने पर doomscrolling की जगह text mode में सभी posts को क्रम से अंत तक पढ़ते हैंEpublifier जैसे कुछ और tools भी हैं
https://epub.press/
https://github.com/dteviot/WebToEpub
https://dotepub.com/
साफ-सुथरा है
पहले मैंने इस concept का एक simple version बनाया था, जो server file system पर EPUB files save करता था और उन्हें मेरे ebook reader के साथ sync करता था
https://github.com/solarkraft/webpub
इसकी मुख्य सामग्री Postlight Parser है, जो websites को simplified “document” view में बदल देता है
क्या http://fanfiction.net/ भी support है? इस site के लिए मुझे कोई आसान solution नहीं मिला
कुछ हद तक काम करता है, लेकिन कुछ stories ठीक आती हैं और कुछ में सिर्फ पहला page ही fetch होता है
Content fetch करने के लिए headless browser इस्तेमाल करने के अलावा कोई अच्छी तरह काम करने वाला approach मैंने नहीं देखा