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
..
2025-10-29 23:19:32 +03:00
2026-02-22 20:43:17 +03:00
2025-10-19 02:08:58 +03:00
2026-01-17 23:02:11 +03:00
2026-02-07 22:55:02 +03:00
2025-10-19 17:01:37 +03:00
2026-03-14 23:39:23 +03:00
2026-02-22 22:32:31 +03:00
2026-01-31 21:30:00 +03:00
2026-01-17 17:48:15 +00:00
2026-01-18 00:01:30 +03:00
2026-02-08 13:34:48 +03:00
2026-02-08 14:49:45 +03:00
2026-01-17 23:02:11 +03:00
2026-01-29 22:56:33 +03:00
2026-01-17 23:25:12 +03:00
2026-03-01 10:54:32 +03:00
2026-03-15 02:34:41 +03:00
2026-03-01 22:48:12 +03:00
2026-03-01 10:54:45 +03:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:29:21 +00:00
2026-02-05 21:27:41 +03:00
2026-02-22 20:43:17 +03:00
2026-02-26 22:25:59 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 17:48:15 +00:00
2026-03-01 10:54:32 +03:00
2026-02-22 20:43:17 +03:00
2026-01-17 22:54:40 +03:00
2026-01-17 23:02:11 +03:00
2026-02-08 14:49:45 +03:00
2026-02-08 14:49:45 +03:00
2026-02-22 22:32:31 +03:00
2026-02-26 00:30:40 +03:00
2026-03-15 02:34:41 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 23:02:11 +03:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 23:02:11 +03:00
2026-01-17 23:02:11 +03:00
2026-01-17 23:02:11 +03:00
2026-01-18 00:01:30 +03:00
2026-01-18 00:01:30 +03:00
2026-01-31 21:30:00 +03:00
2026-02-08 14:42:27 +03:00
2026-01-18 00:01:30 +03:00
2026-01-17 17:48:15 +00:00
2026-02-22 22:32:31 +03:00
2026-02-22 20:43:17 +03:00
2026-02-22 20:43:17 +03:00
2026-02-22 20:43:17 +03:00
2026-02-15 20:24:32 +03:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:29:21 +00:00
2026-01-17 23:02:11 +03:00
2026-01-18 00:01:30 +03:00
2026-01-17 17:29:21 +00:00
2026-03-14 23:53:47 +03:00
2026-02-22 20:43:17 +03:00
2026-02-22 20:43:17 +03:00
2026-02-08 14:44:46 +03:00
2026-02-07 20:59:03 +03:00
2026-02-22 22:32:31 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 17:48:15 +00:00
2026-02-08 14:42:27 +03:00
2026-01-17 17:48:15 +00:00
2026-03-01 22:48:12 +03:00
2026-01-17 17:48:15 +00:00
2026-02-15 20:24:32 +03:00
2026-02-08 13:33:15 +03:00
2026-01-17 22:54:40 +03:00
2026-02-04 21:00:49 +03:00
2026-02-22 22:32:31 +03:00
2026-03-01 10:54:32 +03:00
2026-01-17 17:29:21 +00:00
2026-02-22 21:52:04 +03:00
2026-01-17 17:48:15 +00:00
2026-02-08 14:42:27 +03:00
2026-02-22 20:43:17 +03:00
2026-01-17 17:48:15 +00:00
2026-01-17 23:02:11 +03:00
2026-03-14 23:53:47 +03:00
2026-02-08 14:42:27 +03:00
2026-01-18 13:48:37 +03:00
2026-01-18 00:01:30 +03:00
2026-01-17 23:02:11 +03:00
2026-02-15 20:24:32 +03:00
2026-01-17 23:02:11 +03:00
2026-02-08 14:42:27 +03:00
2026-02-22 22:32:31 +03:00
2026-03-15 02:16:32 +03:00
2026-03-15 02:16:32 +03:00
2026-02-22 20:43:17 +03:00
2026-02-02 23:08:25 +03:00
2026-02-22 20:43:17 +03:00
2026-02-26 22:25:59 +03:00
2026-02-18 22:50:05 +03:00
2026-02-22 22:32:31 +03:00
2026-02-22 22:32:31 +03:00
2026-03-01 10:54:32 +03: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-03-01 21:48:21 +03:00
2026-03-01 19:48:02 +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
2026-02-18 22:50:05 +03:00