49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import feedparser
|
|
import requests
|
|
import os
|
|
from elevenlabs import ElevenLabs
|
|
|
|
def fetch_news(rss_url):
|
|
"""Fetch the latest news article from a satirical RSS feed."""
|
|
feed = feedparser.parse(rss_url)
|
|
if feed.entries:
|
|
article_title = feed.entries[0].title
|
|
article_summary = feed.entries[0].summary
|
|
return article_title, article_summary
|
|
return None, None
|
|
|
|
def generate_news_script(title, summary):
|
|
"""Generate a humorous news script from the full article."""
|
|
if title and summary:
|
|
script = f"Here is your latest Genesis Radio news update. "
|
|
script += f"Today's story: {title}. {summary} "
|
|
script += "For more news and entertainment keep it locked right here on Genesis Radio, Beginning with Great Music!"
|
|
return script
|
|
return "No new satirical news available at the moment."
|
|
|
|
def text_to_speech(text, output_file="latest_news.mp3"):
|
|
"""Convert text to speech using ElevenLabs and save as an MP3 file."""
|
|
elevenlabs = ElevenLabs(api_key="sk_d2c55a2f1f71cd91fb498a986300e0aaf53879e54f53f5c0")
|
|
audio = elevenlabs.generate(
|
|
text=text,
|
|
voice="David Hertel", # Change to preferred ElevenLabs voice
|
|
model="eleven_multilingual_v2"
|
|
)
|
|
|
|
audio_bytes = b"".join(audio) # Convert generator to bytes
|
|
|
|
with open(output_file, "wb") as f:
|
|
f.write(audio_bytes)
|
|
|
|
print(f"Satirical news update saved as {output_file}")
|
|
|
|
def main():
|
|
rss_url = "https://www.theonion.com/rss" # Satirical news source
|
|
title, summary = fetch_news(rss_url)
|
|
news_script = generate_news_script(title, summary)
|
|
text_to_speech(news_script, "X:/rssnews/latest_news.mp3") # Adjust path as needed
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|