|  |  | @ -2,41 +2,50 @@ import sys | 
			
		
	
		
		
			
				
					
					|  |  |  | import asyncio |  |  |  | import asyncio | 
			
		
	
		
		
			
				
					
					|  |  |  | from loguru import logger |  |  |  | from loguru import logger | 
			
		
	
		
		
			
				
					
					|  |  |  | from automaton import utils |  |  |  | from automaton import utils | 
			
		
	
		
		
			
				
					
					|  |  |  | from argparse import ArgumentParser |  |  |  | import argparse | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | class Help(object): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     args = ('-h', '--help') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     kwargs = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         'action': 'help', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         'default': argparse.SUPPRESS, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         'help': '显示本帮助并退出' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | async def main(): |  |  |  | async def main(): | 
			
		
	
		
		
			
				
					
					|  |  |  |     parser = ArgumentParser('main.py') |  |  |  |     parser = argparse.ArgumentParser('main.py', add_help=False) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     parser.add_argument(*Help.args, **Help.kwargs) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     # parser.add_argument('-v', dest='level', action='count', help='日志过滤等级,依次为 warning, info, debug, success') |  |  |  |     parser.add_argument('-v', dest='level', action='count', help='日志过滤等级,依次为 WARNING, INFO, DEBUG') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     subparsers = parser.add_subparsers(dest='method', help='模式选择') |  |  |  |     subparsers = parser.add_subparsers(dest='method', help='模式选择', required=True) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     method_list = subparsers.add_parser('list', help='列出所有课程和书籍') |  |  |  |     mode_list = subparsers.add_parser('list', add_help=False, help='列出所有课程和书籍') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     method_list.add_argument('-d', '--detail', action='store_true', help='显示详细信息') |  |  |  |     mode_list.add_argument('-d', '--detail', action='store_true', help='显示详细信息') | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     mode_list.add_argument(*Help.args, **Help.kwargs) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     method_flash = subparsers.add_parser('flash', help='对选定的课程执行刷课') |  |  |  |     mode_flash = subparsers.add_parser('flash', add_help=False, help='对选定的课程执行刷课') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     target = method_flash.add_mutually_exclusive_group() |  |  |  |     target = mode_flash.add_mutually_exclusive_group(required=True) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     target.add_argument('-i', '--id', help='指定书籍ID') |  |  |  |     target.add_argument('-i', '--id', help='指定书籍 ID') | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     target.add_argument('-c', '--current', action='store_true', help='限定为当前课程或书籍') |  |  |  |     target.add_argument('-c', '--current', action='store_true', help='限定为当前课程或书籍') | 
			
		
	
		
		
			
				
					
					|  |  |  |     target.add_argument('-a', '--all', action='store_true', help='刷全部课程(慎用 除非你知道自己在进行什么操作)') |  |  |  |     target.add_argument('-a', '--all', action='store_true', help='刷全部课程(慎用 除非你知道自己在做什么)') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     # method_flash.add_argument('-f', '--filter', help='任务过滤器,设置后只刷匹配的任务(尚未实现)')  # Todo: 实现这个 |  |  |  |     mode_flash.add_argument(*Help.args, **Help.kwargs) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     args = parser.parse_args() |  |  |  |     args = parser.parse_args() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     # logger.remove() |  |  |  |     logger.remove() | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     # logger.add(sys.stdout, level=['WARNING', 'INFO', 'DEBUG'][args.level or 0]) |  |  |  |     logger.add(sys.stdout, level=['WARNING', 'INFO', 'DEBUG'][args.level or 0]) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if args.method == 'list': |  |  |  |     if args.method == 'list': | 
			
		
	
		
		
			
				
					
					|  |  |  |         await utils.list_books(detail=args.detail) |  |  |  |         await utils.list_books(detail=args.detail) | 
			
		
	
		
		
			
				
					
					|  |  |  |     elif args.method == 'flash': |  |  |  |     else: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         if args.id: |  |  |  |         if args.id: | 
			
		
	
		
		
			
				
					
					|  |  |  |             await utils.flash_by_id(args.id) |  |  |  |             await utils.flash_by_id(args.id) | 
			
		
	
		
		
			
				
					
					|  |  |  |         elif args.current: |  |  |  |         elif args.current: | 
			
		
	
		
		
			
				
					
					|  |  |  |             await utils.flash_current() |  |  |  |             await utils.flash_current() | 
			
		
	
		
		
			
				
					
					|  |  |  |         elif args.all: |  |  |  |         elif args.all: | 
			
		
	
		
		
			
				
					
					|  |  |  |             await utils.flash_all() |  |  |  |             await utils.flash_all() | 
			
		
	
		
		
			
				
					
					|  |  |  |     else: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         parser.print_help() |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | if __name__ == '__main__': |  |  |  | if __name__ == '__main__': | 
			
		
	
		
		
			
				
					
					|  |  |  |     loop = asyncio.new_event_loop() |  |  |  |     loop = asyncio.new_event_loop() | 
			
		
	
	
		
		
			
				
					|  |  | 
 |