60 lines
2.1 KiB
Python
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>")
|