/
Nilabash
/
ai-articles-parser
Обзор
Документация
Войти
/
Nilabash
/
ai-articles-parser
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cli.py
97 строк
4 KB
nilabash
Only Reddit and Medium content parsing
31 июл 2025, 01:33
31 июл 2025, 01:33
f829d51
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Simple CLI Tool for Web Parser """ import asyncio import logging import os import sys from openai_provider import OpenAIProvider from services.parser import WebParser from services.storage import StorageService from utils import get_openai_api_key # Configure logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') async def main(): try: # Get API key api_key = get_openai_api_key() # Initialize services ai_provider = OpenAIProvider(api_key) parser = WebParser(ai_provider) storage = StorageService() print("🚀 Web Parser CLI - Find Hype & Popular Articles") print("=" * 50) print("Enter your search query and press Enter to find articles.") print("Type 'quit' or 'exit' to stop the program.") print("=" * 50) print() while True: try: # Get search query query = input("🔍 Enter your search query: ").strip() if query.lower() in ['quit', 'exit', 'q']: print("\n👋 Goodbye!") break if not query: print("❌ Please enter a search query.") continue # Get number of results try: max_results_input = input("📊 Number of results (default 5): ").strip() max_results = int(max_results_input) if max_results_input else 5 except ValueError: max_results = 5 print(f"\n🔍 Searching for '{query}'...") print("⏳ This may take a few moments...") # Search and save posts blog_posts = await parser.search_and_save_posts(query, max_results) if blog_posts: print(f"\n🎉 Found {len(blog_posts)} hype/popular posts about '{query}':") for i, post in enumerate(blog_posts, 1): print(f"\n{i}. {post.title}") print(f" Platform: {post.platform or 'Unknown'}") print(f" Author: {post.author or 'Unknown'}") print(f" URL: {post.url}") if post.full_content: content_preview = post.full_content[:150] + "..." if len(post.full_content) > 150 else post.full_content print(f" Content: {content_preview}") print(f"\n✅ Found {len(blog_posts)} articles!") print("📁 Results saved to data folder.") else: print(f"\n❌ No articles found for '{query}'") print("💡 Try a different search term or broader topic.") print() except KeyboardInterrupt: print("\n\n👋 Goodbye!") break except Exception as e: logging.error(f"CLI error: {e}") print(f"❌ Error: {e}") print() except ValueError as e: print(f"❌ Configuration error: {e}") print("💡 Please check your .env file and API key.") except Exception as e: logging.error(f"Startup error: {e}") print(f"❌ Startup error: {e}") if __name__ == "__main__": asyncio.run(main())