diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index fdc4ad0..4d9d0cf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,23 +12,28 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout repo + uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 + - name: Install pnpm + uses: pnpm/action-setup@v2 with: version: 8 - - uses: actions/setup-node@v4 + - name: Install node + uses: actions/setup-node@v4 with: node-version: 20 registry-url: https://registry.npmjs.org cache: 'pnpm' - - run: | + - name: Install deps and build + run: | pnpm install pnpm build - - run: npm publish + - name: Publish to npmjs.com + run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index eb630ce..336f0d6 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -40,23 +40,24 @@ env: PICA_DL_SEARCH_KEYWORDS: ${{ inputs.PICA_DL_SEARCH_KEYWORDS }} jobs: - download_and_compress: + download: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout repo + uses: actions/checkout@v4 - - name: install pnpm + - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 - - name: install node + - name: Install node uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' - - name: install and build + - name: Install deps and build run: | pnpm install pnpm run build @@ -65,15 +66,15 @@ jobs: run: pnpm start - if: inputs.OUTPUT_ZIP - name: compress + name: Compress run: pnpm start:zip - - name: upload to github + - name: Upload to github uses: actions/upload-artifact@v4 with: name: pica-comics path: ${{ inputs.OUTPUT_ZIP && 'comics-zip/' || 'comics/' }} retention-days: 7 - - name: upload to file.io + - name: Upload to file.io run: node scripts/upload.js \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8b7e345 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["github.vscode-github-actions"] +} diff --git a/readme.md b/readme.md index f5d6ba1..e9d93bf 100644 --- a/readme.md +++ b/readme.md @@ -12,9 +12,10 @@ - 关键词搜索:支持多选 - 自动过滤已下载的章节和图片,不会重复下载 - 如果没有相关环境变量,则启动交互命令界面;若有则直接执行 -- 通过 `pica-zip` 命令分章节批量压缩,配合支持 zip 包的漫画阅读软件使用,比如 [Perfect Viewer](https://play.google.com/store/apps/details?id=com.rookiestudio.perfectviewer)。 +- 通过 `pica-zip` 命令分章节批量压缩,配合支持 zip 包的漫画阅读软件使用,比如 [Perfect Viewer](https://play.google.com/store/apps/details?id=com.rookiestudio.perfectviewer)。
不限于 `pica-cli` 下载的漫画使用,只要符合 [cmoics/漫画标题/漫画章节/漫画图片](#) 的目录结构即可。 -- 借助 github action 实现飞速下载,同时将下好的漫画包上传到 github artifact 和 file.io(无需注册和科学上网) +- 借助 github action 实现飞速下载,支持从 github artifact 和 file.io(无需注册和科学上网)两种方式下载完整漫画包。
+ file.io 文件保存两周,单文件最大 2GB,注意链接只能下载**一次**,下载后文件会自动删除 如果用的开心,求个 star 支持一下,比心 ~ ❤️ @@ -42,11 +43,13 @@ fork 一份本仓库,将上面三个环境变量,设置为仓库密钥: ![action run](https://s2.loli.net/2024/01/30/PmfublZKLFQrth9.png) -等执行完之后,进入执行详情,点击 Summary,在最下方有漫画的完整压缩包,下载即可。 +等执行完之后,进入详情,在最下方有漫画的完整压缩包,下载即可。 -![action summary](https://s2.loli.net/2024/01/30/eiRu2B9hovJxOzQ.png) +![artifact](https://s2.loli.net/2024/01/31/rIlTGfy8O5HiFcV.png) -![artifact](https://s2.loli.net/2024/01/30/MJBxVe9UtszNmiv.png) +点击 job 详情查看日志,可以看到 file.io 的下载地址: + +![file.io](https://s2.loli.net/2024/01/31/UT4i6zpGjYvDxL3.png) 如果你想自定义过程,请自行修改 [.github/workflows/task.yaml](.github/workflows/task.yaml)。 diff --git a/resource/2-4.png b/resource/2-4.png index 49f6188..cab1289 100644 Binary files a/resource/2-4.png and b/resource/2-4.png differ diff --git a/resource/2-5.png b/resource/2-5.png new file mode 100644 index 0000000..f64095a Binary files /dev/null and b/resource/2-5.png differ diff --git a/scripts/upload.js b/scripts/upload.js index e5a053c..6e2aad4 100644 --- a/scripts/upload.js +++ b/scripts/upload.js @@ -26,11 +26,12 @@ async function main() { const task = comics.map(async (comic) => { try { const zip = new AdmZip() - await zip.addLocalFolderPromise(path.join(root, comic)) + // don't use addLocalFolderPromise, it has bug + zip.addLocalFolder(path.join(root, comic)) const zipBuffer = await zip.toBufferPromise() + const filename = `${comic}.zip` if (zipBuffer.byteLength < MAX_SIZE) { - const filename = `${comic}.zip` const file = new File([zipBuffer], filename, { type: mime.getType('zip') }) @@ -41,8 +42,10 @@ async function main() { form ) console.log( - `${pico.cyan(comic)} 已上传到 file.io. 下载地址:${pico.green(data.link)}` + `${pico.cyan(filename)} 已上传到 file.io. 下载地址:${pico.green(data.link)}` ) + } else { + console.log(pico.yellow(`${filename} 大小超过了 2GB`)) } } catch (error) { console.error(error)