import requests # API Key provided by the user API_KEY = "9311701ee4cc5d2a470e41e8be09f6d5" POCKETBASE_URL = "http://localhost:9090" COLLECTION_NAME = "genres" def get_movie_genres(): """ Fetches all available movie genres from TMDB API using requests. Returns: list: A list of dictionaries representing genres. """ url = f"https://api.themoviedb.org/3/genre/movie/list?api_key={API_KEY}&language=en-US" try: response = requests.get(url) response.raise_for_status() data = response.json() return data.get("genres", []) except requests.exceptions.RequestException as e: print(f"Error fetching genres: {e}") return [] def save_genres_to_pocketbase(genres): """ Stores genres in the PocketBase 'genres' collection. Checks if a genre with the same name already exists before creating it. Args: genres (list): A list of dictionaries with 'id' and 'name'. """ base_url = f"{POCKETBASE_URL}/api/collections/{COLLECTION_NAME}/records" print(f"Processing {len(genres)} genres for PocketBase at {base_url}...") for genre in genres: genre_name = genre["name"] # Check if genre already exists try: # PocketBase filter syntax: name='GenreName' # We use params to let requests handle URL encoding properly check_response = requests.get( base_url, params={"filter": f"name='{genre_name}'"} ) check_response.raise_for_status() existing_data = check_response.json() # PocketBase list response structure has 'items' and 'totalItems' if existing_data.get("totalItems", 0) > 0: print(f"Skipped (already exists): {genre_name}") continue except requests.exceptions.RequestException as e: print(f"Error checking existence for {genre_name}: {e}") continue # Create new record if it doesn't exist payload = {"name": genre_name} try: response = requests.post(base_url, json=payload) if response.status_code == 200: print(f"Saved: {genre_name}") else: # Log failure details print( f"Failed to save {genre_name}: {response.status_code} - {response.text}" ) except requests.exceptions.RequestException as e: print(f"Error saving {genre_name}: {e}") if __name__ == "__main__": genres = get_movie_genres() if genres: print(f"Found {len(genres)} genres:") for genre in genres: print(f"ID: {genre['id']}, Name: {genre['name']}") print("-" * 30) save_genres_to_pocketbase(genres) else: print("No genres found or an error occurred.")