主函数
()
| 285 | return False |
| 286 | |
| 287 | def main(): |
| 288 | """主函数""" |
| 289 | parser = argparse.ArgumentParser(description="MindSpider每日话题提取工具") |
| 290 | parser.add_argument("--sources", nargs="+", help="指定新闻源平台", |
| 291 | choices=list(SOURCE_NAMES.keys())) |
| 292 | parser.add_argument("--keywords", type=int, default=100, help="最大关键词数量 (默认100)") |
| 293 | parser.add_argument("--quiet", action="store_true", help="简化输出模式") |
| 294 | parser.add_argument("--list-sources", action="store_true", help="显示支持的新闻源") |
| 295 | |
| 296 | args = parser.parse_args() |
| 297 | |
| 298 | # 显示支持的新闻源 |
| 299 | if args.list_sources: |
| 300 | logger.info("支持的新闻源平台:") |
| 301 | for source, name in SOURCE_NAMES.items(): |
| 302 | logger.info(f" {source:<25} {name}") |
| 303 | return |
| 304 | |
| 305 | # 验证参数 |
| 306 | if args.keywords < 1 or args.keywords > 200: |
| 307 | logger.error("关键词数量应在1-200之间") |
| 308 | sys.exit(1) |
| 309 | |
| 310 | # 运行提取 |
| 311 | try: |
| 312 | success = asyncio.run(run_extraction_command( |
| 313 | sources=args.sources, |
| 314 | keywords_count=args.keywords, |
| 315 | show_details=not args.quiet |
| 316 | )) |
| 317 | |
| 318 | sys.exit(0 if success else 1) |
| 319 | |
| 320 | except KeyboardInterrupt: |
| 321 | logger.info("用户中断操作") |
| 322 | sys.exit(1) |
| 323 | |
| 324 | if __name__ == "__main__": |
| 325 | main() |