Initial commit
This commit is contained in:
88
_scratch/moviedb.py
Normal file
88
_scratch/moviedb.py
Normal file
@@ -0,0 +1,88 @@
|
||||
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.")
|
||||
Reference in New Issue
Block a user