57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
import argparse
|
|
import logging
|
|
from vibe.orchestrator import process_articles
|
|
from vibe.tts import text_to_speech
|
|
from vibe.config import DEFAULT_ARXIV_URL
|
|
|
|
logging.basicConfig(
|
|
level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s"
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="vibe: Article Summarization & TTS Pipeline")
|
|
parser.add_argument("--serve", action="store_true", help="Run as a Flask server.")
|
|
parser.add_argument("--generate", action="store_true", help="Run the pipeline once and generate a summary MP3, then exit.")
|
|
parser.add_argument("--prompt", type=str, default="", help="User info for LLM filtering & summaries.")
|
|
parser.add_argument("--max-articles", type=int, default=5, help="Maximum articles to process in the pipeline.")
|
|
parser.add_argument("--new-only", action="store_true", help="Only process articles newer than cached.")
|
|
parser.add_argument("--arxiv-url", type=str, default=DEFAULT_ARXIV_URL, help="URL for fetching arXiv articles.")
|
|
parser.add_argument("--output", type=str, default="final_output.mp3", help="Output path for the generated MP3 file.")
|
|
|
|
# New: LLM Level
|
|
parser.add_argument("--llm-level", type=str, default="medium", choices=["low","medium","high"],
|
|
help="Desired LLM quality level: low, medium, or high. Defaults to medium.")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.serve:
|
|
from vibe.server import app
|
|
logger.info("Starting Flask server.")
|
|
app.run(host='0.0.0.0', port='14200', debug=True)
|
|
elif args.generate:
|
|
logger.info("Running pipeline in CLI mode.")
|
|
user_info = args.prompt
|
|
final_summary = process_articles(
|
|
user_info,
|
|
arxiv_url=args.arxiv_url,
|
|
max_articles=args.max_articles,
|
|
new_only=args.new_only,
|
|
llm_level=args.llm_level
|
|
)
|
|
if not final_summary.strip():
|
|
logger.error("No summaries generated.")
|
|
exit(1)
|
|
try:
|
|
text_to_speech(final_summary, args.output)
|
|
logger.info(f"Generated MP3 at: {args.output}")
|
|
except Exception as e:
|
|
logger.exception("TTS conversion failed: %s", e)
|
|
exit(1)
|
|
else:
|
|
logger.info("No mode specified; defaulting to Flask server.")
|
|
from vibe.server import app
|
|
app.run(host='0.0.0.0', port='14200', debug=True)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|