yusyus
2e30970dfb
feat: add EPUB input support (#310)
Adds EPUB as a first-class input source for skill generation.
- EpubToSkillConverter (epub_scraper.py, ~1200 lines) following PDF scraper pattern
- Dublin Core metadata, spine items, code blocks, tables, images extraction
- DRM detection (Adobe ADEPT, Apple FairPlay, Readium LCP) with fail-fast
- EPUB 3 NCX TOC bug workaround (ignore_ncx=True)
- ebooklib as optional dep: pip install skill-seekers[epub]
- Wired into create command with .epub auto-detection
- 104 tests, all passing
Review fixes: removed 3 empty test stubs, fixed SVG double-counting in
_extract_images(), added logger.debug to bare except pass.
Based on PR #310 by @christianbaumann.
Co-authored-by: Christian Baumann <mail@chriss-baumann.de>
2026-03-15 02:34:41 +03:00
..
2026-03-01 10:54:45 +03:00
2026-03-15 02:34:41 +03:00
2026-03-15 02:34:41 +03:00
2026-02-22 21:52:04 +03:00
2026-02-08 14:42:27 +03:00
2026-01-31 17:03:40 +03:00
2026-02-03 21:37:54 +03:00
2026-01-17 17:48:15 +00:00
2026-02-08 14:42:27 +03:00
2026-02-08 14:42:27 +03:00
2026-02-08 14:42:27 +03:00
2026-03-14 23:39:23 +03:00
2026-03-14 23:39:23 +03:00
2026-01-17 23:25:12 +03:00
2026-02-03 21:37:54 +03:00
2026-02-22 20:43:17 +03:00
2026-01-31 21:30:00 +03:00
2026-02-22 01:26:19 +03:00
2026-02-27 23:10:19 +03:00
2026-01-17 23:25:12 +03:00
2026-01-17 17:29:21 +00:00
2026-03-15 02:34:41 +03:00
2026-03-14 23:39:23 +03:00
2026-03-14 23:53:47 +03:00
2026-02-08 14:42:27 +03:00
2026-02-22 22:32:31 +03:00
2026-03-01 10:54:32 +03:00
2026-02-27 23:10:19 +03:00
2026-01-17 17:48:15 +00:00
2026-02-18 22:50:05 +03:00
2026-03-15 02:34:41 +03:00
2026-02-22 22:30:52 +03:00
2026-01-17 23:02:11 +03:00
2026-01-17 23:25:12 +03:00
2026-03-14 23:35:39 +03:00
2026-01-27 21:10:40 +03:00
2026-02-26 00:30:40 +03:00
2026-02-08 14:42:27 +03:00
2026-01-17 23:02:11 +03:00
2026-02-22 22:30:52 +03:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:29:21 +00:00
2026-01-17 23:56:24 +03:00
2026-03-14 23:53:47 +03:00
2026-03-15 02:34:41 +03:00
2026-01-17 17:29:21 +00:00
2026-01-17 17:48:15 +00:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:29:21 +00:00
2026-02-28 21:57:59 +03:00
2026-02-08 14:42:27 +03:00
2026-02-24 22:28:11 +03:00
2026-02-25 21:47:30 +03:00
2026-01-17 23:33:34 +03:00
2026-02-08 14:42:27 +03:00
2026-03-01 10:54:45 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 23:02:11 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 23:25:12 +03:00
2026-02-03 21:37:54 +03:00
2026-03-15 02:34:41 +03:00
2026-01-17 17:48:15 +00:00
2026-02-24 22:28:11 +03:00
2026-01-17 17:48:15 +00:00
2026-02-08 14:42:27 +03:00
2026-03-15 02:16:32 +03:00
2026-02-03 21:37:54 +03:00
2026-01-17 23:25:12 +03:00
2026-01-18 00:01:30 +03:00
2026-02-18 22:50:05 +03:00
2026-03-01 12:39:21 +03:00
2026-03-01 10:54:45 +03:00
2026-02-08 14:42:27 +03:00
2026-03-14 23:53:47 +03:00
2026-02-27 23:10:19 +03:00
2026-03-01 18:39:16 +03:00
2026-03-01 21:48:21 +03:00
2026-03-01 18:39:16 +03:00
2026-03-01 19:48:02 +03:00
2026-03-01 12:39:21 +03:00
2026-03-01 21:48:21 +03:00
2026-03-01 10:54:32 +03:00
2026-02-18 22:50:05 +03:00
2026-02-18 22:50:05 +03:00