[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9027":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},9027,"eHunter","hanFengSan\u002FeHunter","hanFengSan","For the best reading experience","",null,"Vue",1032,59,17,81,0,1,8,54.63,"MIT License",false,"master",true,[25,26],"typescript","vue","2026-06-12 04:00:42","[中文版](https:\u002F\u002Fgithub.com\u002FhanFengSan\u002FeHunter\u002Fblob\u002Fmaster\u002FREADME_CN.md)\n\n# eHunter\nProvide scroll mode and book mode for a better reading experience.\n\n# Preview\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FhanFengSan\u002FeHunter\u002Fmaster\u002Fgithub_image\u002Fgithub_preview_4.png\" style=\"width: 800px; display: block; padding: 10px;\"\u002F>\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FhanFengSan\u002FeHunter\u002Fmaster\u002Fgithub_image\u002Fgithub_preview_5_1.png\" style=\"width: 800px; display: block; padding: 10px;\"\u002F>\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FhanFengSan\u002FeHunter\u002Fmaster\u002Fgithub_image\u002Fgithub_preview_3.jpg\" style=\"width: 800px; display: block; padding: 10px;\"\u002F>\n\n# Use on iPhone and iPad\neHunter can run on iPhone and iPad. See the guides below:\n\nCN: [Link](https:\u002F\u002Fgithub.com\u002FhanFengSan\u002FeHunter\u002Fblob\u002Fmaster\u002Fmisc\u002Fiphone_ipad_cn.md)\nEN: [Link](https:\u002F\u002Fgithub.com\u002FhanFengSan\u002FeHunter\u002Fblob\u002Fmaster\u002Fmisc\u002Fiphone_ipad_en.md)\nJP: [Link](https:\u002F\u002Fgithub.com\u002FhanFengSan\u002FeHunter\u002Fblob\u002Fmaster\u002Fmisc\u002Fiphone_ipad_jp.md)\n\n## Implementation Overview\neHunter creates a new node on the original page and mounts Vue to that node.\nContent crawling\u002Fparsing is handled by fetch-based logic.\nThe architecture isolates platform-specific behavior from reader UI logic, making migration to other comic platforms easier.\n\n## Install\nTampermonkey\u002Fuserscript: [openuserjs](https:\u002F\u002Fopenuserjs.org\u002Fscripts\u002Falexchen\u002FeHunter)\n\n## Run\n1. Run `npm install`, then `npm run dev` for development mode.\n2. Run `npm run build-prod` to generate the userscript build.\n\n## Project Architecture\nThe current project is based on `Vite + Vue 3 + TypeScript`, with two main goals:\n1. Inject a reader UI into target site pages.\n2. Keep platform parsing logic and reader rendering logic layered for maintainability and extension.\n\nMain directory responsibilities:\n\n```\n|-eHunter\n  |-src\n  |  |-main.ts               \u002F\u002F Entry: initialize and mount app (currently test mounting by default)\n  |  |-config.ts             \u002F\u002F Runtime config\n  |  |-platform\u002F             \u002F\u002F Platform layer (site detection, initialization, service factory)\n  |     |-detector.ts        \u002F\u002F Host\u002Fenvironment detection\n  |     |-initializer.ts     \u002F\u002F Platform initialization flow\n  |     |-factory.ts         \u002F\u002F Platform service creation\n  |     |-eh\u002F                \u002F\u002F EH\u002FEXH implementation\n  |     |-nh\u002F                \u002F\u002F NH implementation\n  |     |-base\u002F              \u002F\u002F Cross-platform base capabilities (request, queue, retry)\n  |\n  |-core\n  |  |-App.vue               \u002F\u002F Reader root component\n  |  |-components\u002F           \u002F\u002F View layer: book mode, scroll mode, thumbnails, top bar, dialogs\n  |  |-service\u002F              \u002F\u002F Business services (album data, download, retry policy)\n  |  |-store\u002F                \u002F\u002F State management (app state, event bus, i18n, layout preference)\n  |  |-model\u002F                \u002F\u002F Domain models (layout, book spread, thumb expand)\n  |  |-utils\u002F                \u002F\u002F Utilities\n  |  |-style\u002F                \u002F\u002F Global styles and theme variables\n  |\n  |-public\u002F                  \u002F\u002F Static assets\n  |-dist\u002F                    \u002F\u002F Build output\n  |-specs\u002F                   \u002F\u002F Feature\u002Fdesign specs\n  |-misc\u002F                    \u002F\u002F Docs and supporting materials\n```\n\nSimplified call flow:\n`main.ts -> platform initialization (detect site + create platform services) -> core reader mount -> component rendering\u002Finteraction -> service\u002Fstore coordinate data loading and state updates`.\n","eHunter 是一个旨在提供更佳阅读体验的项目，通过在网页上添加滚动模式和书籍模式来优化阅读界面。该项目基于 Vue 3 和 TypeScript 构建，利用 Vite 进行开发，并采用模块化设计将平台特定逻辑与阅读器UI逻辑分离，便于维护和扩展。它特别适合用于漫画或图文内容丰富的网站，以提升用户在移动设备（如iPhone和iPad）上的阅读体验。通过Tampermonkey等用户脚本管理器安装后，eHunter能够直接嵌入目标站点页面中运行，无需额外应用。",2,"2026-06-11 03:20:49","top_language"]