@@ -9,36 +9,57 @@ import {
99 selectChapterByInput
1010} from './utils'
1111import ora from 'ora'
12- import input from '@inquirer/input'
13- import select from '@inquirer/select'
14- import checkbox from '@inquirer/checkbox'
12+ import Input from '@inquirer/input'
13+ import Password from '@inquirer/password'
14+ import Select from '@inquirer/select'
15+ import Checkbox from '@inquirer/checkbox'
1516import ProgressBar from 'progress'
1617import { Comic } from './types'
1718import pLimit from 'p-limit'
1819import pico from 'picocolors'
1920
2021loadEnv ( )
2122
23+ const keysTip = [
24+ `${ pico . cyan ( '<space>' ) } 选中` ,
25+ `${ pico . cyan ( '<a>' ) } 全选` ,
26+ `${ pico . cyan ( '<i>' ) } 反选` ,
27+ `${ pico . cyan ( '<enter>' ) } 确认`
28+ ]
29+ const checkboxHelpTip = ` (${ keysTip . join ( ', ' ) } )`
30+
2231async function main ( ) {
2332 const {
33+ PICA_ACCOUNT ,
34+ PICA_PASSWORD ,
2435 PICA_DL_CONTENT ,
2536 PICA_DL_CHAPTER ,
2637 PICA_DL_CONCURRENCY ,
2738 PICA_IN_GITHUB
2839 } = process . env
2940 const PICA_DL_SEARCH_KEYWORDS = process . env . PICA_DL_SEARCH_KEYWORDS ?. trim ( )
3041
31- const keysTip = [
32- `${ pico . cyan ( '<space>' ) } 选中` ,
33- `${ pico . cyan ( '<a>' ) } 全选` ,
34- `${ pico . cyan ( '<i>' ) } 反选` ,
35- `${ pico . cyan ( '<enter>' ) } 确认`
36- ]
37- const checkboxHelpTip = ` (${ keysTip . join ( ', ' ) } )`
42+ const account =
43+ PICA_ACCOUNT ||
44+ ( await Input ( {
45+ message : '请输入账户名称' ,
46+ transformer : ( val ) => val . trim ( )
47+ } ) )
48+ const password =
49+ PICA_PASSWORD ||
50+ ( await Password ( {
51+ message : '请输入账户密码' ,
52+ mask : true
53+ } ) )
54+
55+ const spinner = ora ( '正在登录哔咔' ) . start ( )
56+ const pica = new Pica ( )
57+ await pica . login ( account , password )
58+ spinner . stop ( )
3859
3960 const answer =
4061 PICA_DL_CONTENT ||
41- ( await select ( {
62+ ( await Select ( {
4263 message : '想下载哪些漫画?' ,
4364 choices : [
4465 { name : '去搜索' , value : 'search' } ,
@@ -47,11 +68,6 @@ async function main() {
4768 ]
4869 } ) )
4970
50- const spinner = ora ( '正在登录哔咔' ) . start ( )
51- const pica = new Pica ( )
52- await pica . login ( )
53- spinner . stop ( )
54-
5571 const comics : Comic [ ] = [ ]
5672 if ( answer === 'leaderboard' ) {
5773 const res = await pica . leaderboard ( )
@@ -73,7 +89,7 @@ async function main() {
7389
7490 const inputStr =
7591 PICA_DL_SEARCH_KEYWORDS ||
76- ( await input ( {
92+ ( await Input ( {
7793 message : '请输入关键字或者漫画ID (多个用 # 隔开)' ,
7894 transformer : ( val ) => val . trim ( )
7995 } ) )
@@ -111,7 +127,7 @@ async function main() {
111127
112128 const selected = PICA_DL_SEARCH_KEYWORDS
113129 ? searchRes
114- : await checkbox ( {
130+ : await Checkbox ( {
115131 message : '请选择要下载的漫画' ,
116132 pageSize : 10 ,
117133 loop : false ,
@@ -127,6 +143,11 @@ async function main() {
127143 }
128144 }
129145
146+ if ( comics . length === 0 ) {
147+ log . log ( '没有找到相应的漫画' )
148+ return
149+ }
150+
130151 for ( const comic of comics ) {
131152 const title = comic . title . trim ( )
132153 const cid = comic . _id
@@ -146,7 +167,7 @@ async function main() {
146167 ? selectChapterByInput ( PICA_DL_CHAPTER , episodes )
147168 : PICA_IN_GITHUB
148169 ? episodes
149- : await checkbox ( {
170+ : await Checkbox ( {
150171 message : '请选择要下载的章节' ,
151172 pageSize : 10 ,
152173 instructions : checkboxHelpTip ,
0 commit comments