es geht 1. um die Methode download_video (glaube ich zumindestens) und habe folgenden Fehler:
Code: Alles auswählen
unsupported operand type(s) for /: 'str' and 'str'
Code: Alles auswählen
from bs4 import BeautifulSoup
from pathlib import Path
import requests
from urllib.parse import urlparse
import subprocess
TAGESSCHAU_URL = "https://www.tagesschau.de/100sekunden/"
DOWNLOAD_PATH = "/home/pi/Desktop/LUNA/Zimmer/modules/resources"
def handle():
try:
print(f"Hole Video-URL von {TAGESSCHAU_URL} ...")
url = get_video_url()
print(f"Lade Video von {url} herunter ...")
path = download_video(url)
print(f"Video wurde gespeichert unter {path}")
print(f"Konvertiere Video in Audio ...")
convert_to_wav(path)
print(f"Video kovertiert")
luna.play(path)
except Exception as e:
print(f"Abbruch durch Fehler: {e}")
def get_content(url):
response = requests.get(url)
response.raise_for_status()
return response.content
def get_video_url():
soup = BeautifulSoup(get_content(TAGESSCHAU_URL), "html.parser")
meta = soup.find("meta", {"name": "twitter:player:stream"})
if not meta or not meta.has_attr("content"):
raise ValueError("Konnte keine Infos zur Video-URL finden")
return meta["content"]
def download_video(url):
filename = 'tagesschau_100sec.mp4'
path = DOWNLOAD_PATH / filename
path.write_bytes(get_content(url))
return path
def convert_to_wav(path):
subprocess.call(["ffmpeg", "-i", path, "-ac", "2", "-f", "wav", "tagesschau_100sec.wav"])
if __name__ == "__main__":
main()
Vielen Dank für eure Hilfe!
Liebe Grüße,
Jakob