From 41d958031c1d12d059da35fb462b7f2019de0daf Mon Sep 17 00:00:00 2001 From: okxlin Date: Mon, 4 Sep 2023 01:46:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0koodo-reader=E5=88=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8(=E6=84=9F=E8=B0=A2=E7=BD=91=E5=8F=8B?= =?UTF-8?q?=E5=8C=85=E5=AD=90=E5=8F=94=E7=9A=84=E6=8A=95=E7=A8=BF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/koodo-reader/README.md | 136 ++++++++++++++++++++ apps/koodo-reader/data.yml | 20 +++ apps/koodo-reader/latest/.env.sample | 2 + apps/koodo-reader/latest/data.yml | 10 ++ apps/koodo-reader/latest/docker-compose.yml | 16 +++ apps/koodo-reader/logo.png | Bin 0 -> 8819 bytes 6 files changed, 184 insertions(+) create mode 100644 apps/koodo-reader/README.md create mode 100644 apps/koodo-reader/data.yml create mode 100644 apps/koodo-reader/latest/.env.sample create mode 100644 apps/koodo-reader/latest/data.yml create mode 100644 apps/koodo-reader/latest/docker-compose.yml create mode 100644 apps/koodo-reader/logo.png diff --git a/apps/koodo-reader/README.md b/apps/koodo-reader/README.md new file mode 100644 index 00000000..4842fe5a --- /dev/null +++ b/apps/koodo-reader/README.md @@ -0,0 +1,136 @@ +
+ +简体中文 | [Português](https://github.com/troyeguo/koodo-reader/blob/master/README_pt.md) | [English](https://github.com/troyeguo/koodo-reader/blob/master/README.md) + +
+ +
+ +
+ +

+ Koodo Reader +

+ +

+ 一个跨平台的电子书阅读器 +

+ +
+ +[下载客户端](https://koodo.960960.xyz/zh) | [在线预览](https://reader.960960.xyz) | [开发计划](https://troyeguo.notion.site/215baeda57804fd29dbb0e91d1e6a021?v=360c00183d944b598668f34c255edfd7) | [帮助文档](https://troyeguo.notion.site/Koodo-Reader-0c9c7ccdc5104a54825dfc72f1c84bea) + +
+ + +## 特色 + +- 支持阅读格式: + - EPUB (**.epub**) + - 扫描文档 (**.pdf**) + - Kindle (**.azw3**, **.mobi**, **.azw**) + - 纯文本 (**.txt**) + - 漫画 (**.cbr**, **.cbz**, **.cbt**, **.cb7**) + - 富文本 (**.md**, **.docx**) + - FB2 (**.fb2**) + - 超文本 (**.html**, **.xml**, **.xhtml**, **.mhtml**, **.htm**, **.htm**) +- 支持 **Windows**,**macOS**,**Linux** 和 **网页版** +- 备份数据到 **Dropbox** 和 **Webdav** +- 自定义源文件夹,利用 OneDrive、百度网盘、iCloud、Dropbox 等进行多设备同步 +- 双页模式,单页模式,滚动模式 +- 听书功能,翻译功能,触控屏支持,批量导入图书 +- 支持目录,书签,笔记,高亮,书架,标签 +- 自定义字体,字体大小,行间距,段落间距,阅读背景色,文字颜色,屏幕亮度,文字下划线、斜体、文字阴影、字体粗细 +- 黑夜模式和主题色设置 + +## 使用方法 + +- 桌面端: + - 稳定版 (推荐下载):[官网](https://koodo.960960.xyz/zh)(感谢 [@Stille](https://www.ioiox.com/donate.html) 提供下载加速服务) + - 开发版:[Github Release](https://github.com/troyeguo/koodo-reader/releases/latest) (包含新功能和 bug 修复,但也可能引入更多未知 bug) +- 网页版:[前往](https://reader.960960.xyz) +- 使用 Scoop 安装: + +```shell +scoop bucket add extras +scoop install dorado/koodo-reader +``` + +- 使用 Winget 安装: + +```shell +winget install -e AppbyTroye.KoodoReader +``` + +- 使用 Homebrew 安装: + +```shell +brew install --cask koodo-reader +``` + +- 使用 Docker 安装: + +```bash +docker-compose up -d +``` + +- 使用 Flathub 安装: + +```shell +flatpak install flathub io.github.troyeguo.koodo-reader +flatpak run io.github.troyeguo.koodo-reader +``` + +Download on Flathub + +## 预览 + +
+ + +
+ +## 截图 + +
+ 列表模式 + + 封面模式 + + 阅读菜单 + + 备份和恢复 + + 黑夜模式和主题色 + + 笔记管理 + +
+ +## 运行源码 + +请确保您电脑已配置好 yarn,git 的运行环境。 + +1. 将项目源码下载到本地 + + ``` + git clone https://github.com/troyeguo/koodo-reader.git + ``` + +2. cd 到项目文件夹,运行以下代码进入客户端模式 + + ``` + yarn + yarn dev + ``` + +3. 运行以下代码进入网页模式 + + ``` + yarn + yarn start + ``` + +## 贡献翻译 + +您可以通过 Koodo Reader 的[在线翻译工具](https://poeditor.com/join/project?hash=fk4qbQTlsk),完善现有翻译,也可以添加新的语言。 \ No newline at end of file diff --git a/apps/koodo-reader/data.yml b/apps/koodo-reader/data.yml new file mode 100644 index 00000000..bce427a0 --- /dev/null +++ b/apps/koodo-reader/data.yml @@ -0,0 +1,20 @@ +name: Koodo Reader +tags: + - 工具 +title: 一个跨平台的电子书阅读器 +type: 工具 +description: 一个跨平台的电子书阅读器 +additionalProperties: + key: koodo-reader + name: Koodo Reader + tags: + - Tool + shortDescZh: 一个跨平台的电子书阅读器 + shortDescEn: A cross-platform ebook reader + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://koodo.960960.xyz + github: https://github.com/troyeguo/koodo-reader + document: https://troyeguo.notion.site/Koodo-Reader-0c9c7ccdc5104a54825dfc72f1c84bea diff --git a/apps/koodo-reader/latest/.env.sample b/apps/koodo-reader/latest/.env.sample new file mode 100644 index 00000000..6f23c245 --- /dev/null +++ b/apps/koodo-reader/latest/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="koodo-reader" +PANEL_APP_PORT_HTTP="40146" diff --git a/apps/koodo-reader/latest/data.yml b/apps/koodo-reader/latest/data.yml new file mode 100644 index 00000000..c48a7adf --- /dev/null +++ b/apps/koodo-reader/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40146 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/koodo-reader/latest/docker-compose.yml b/apps/koodo-reader/latest/docker-compose.yml new file mode 100644 index 00000000..9dd03bf2 --- /dev/null +++ b/apps/koodo-reader/latest/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3' +services: + koodo-reader: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + image: liwangsheng/koodo-reader:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/koodo-reader/logo.png b/apps/koodo-reader/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ae34559cae985cdfb4609c20258a097ef060717f GIT binary patch literal 8819 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 literal 0 HcmV?d00001