Files
MyMovieDB/imdb_suche.py
jonnybravo 370974a57d
Some checks failed
Deploy to ras-dan-01 / deploy (push) Has been cancelled
init
2025-08-26 14:35:48 +02:00

60 lines
2.1 KiB
Python

# Benötigt die Installation von 'requests' und 'beautifulsoup4'
# pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup
import sys
import re
def suche_film_url(film_titel):
"""
Sucht auf IMDb nach einem Film und gibt die deutsche URL der Filmseite zurück.
Args:
film_titel: Der Titel des Films, nach dem gesucht werden soll.
Returns:
Die deutsche URL der Filmseite oder None, wenn nichts gefunden wurde.
"""
such_url = f"https://www.imdb.com/find?q={film_titel.replace(' ', '+')}"
# Header, um die deutsche Seite zu bevorzugen
headers = {
'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
try:
response = requests.get(such_url, headers=headers)
response.raise_for_status() # Löst eine Ausnahme für HTTP-Fehler aus
soup = BeautifulSoup(response.text, 'html.parser')
# Finden des ersten Links im Titel-Ergebnisbereich
ergebnis_bereich = soup.find('section', {'data-testid': 'find-results-section-title'})
if ergebnis_bereich:
link_tag = ergebnis_bereich.find('a', href=re.compile(r'/title/tt\d+'))
if link_tag and 'href' in link_tag.attrs:
pfad = link_tag['href']
# Extrahieren der Titel-ID (z.B. tt0133093)
match = re.search(r'(tt\d+)', pfad)
if match:
titel_id = match.group(1)
return f"https://www.imdb.com/de/title/{titel_id}"
except requests.exceptions.RequestException as e:
print(f"Ein Fehler bei der Anfrage ist aufgetreten: {e}")
return None
return None
if __name__ == "__main__":
if len(sys.argv) > 1:
film_name = " ".join(sys.argv[1:])
url = suche_film_url(film_name)
if url:
print(f"URL für '{film_name}' gefunden: {url}")
else:
print(f"Konnte keinen Film mit dem Titel '{film_name}' finden.")
else:
print("Benutzung: python imdb_suche.py <film_titel>")