Python package for retrieving and managing data from the Internet Movie Database (IMDb) about movies, people, characters and companies
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
A comprehensive Python library for accessing and managing data from the Internet Movie Database (IMDb). Cinemagoer provides a complete API for retrieving information about movies, people, characters, and companies from IMDb's database through multiple access methods including web scraping, direct SQL database access, and S3 dataset integration.
pip install cinemagoerfrom imdb import IMDb, CinemagoerImport specific classes:
from imdb import Movie, Person, Character, Company, IMDbErrorfrom imdb import IMDb
# Create IMDb instance (default HTTP access)
ia = IMDb()
# Search for movies
movies = ia.search_movie('The Matrix')
movie = movies[0]
print(f"Title: {movie['title']}")
print(f"Year: {movie['year']}")
# Get detailed movie information
ia.update(movie)
print(f"Director: {movie['director'][0]['name']}")
print(f"Cast: {[actor['name'] for actor in movie['cast'][:5]]}")
# Search for people
people = ia.search_person('Keanu Reeves')
person = people[0]
ia.update(person)
print(f"Name: {person['name']}")
print(f"Birth date: {person.get('birth date')}")Cinemagoer uses a modular access system architecture:
IMDb() creates appropriate access system instancesupdate() method for detailed informationThis design allows seamless switching between data sources while maintaining a consistent API for accessing IMDb data across different use cases from simple web scraping to enterprise database applications.
Primary functions for creating IMDb access instances and retrieving basic system information. These form the foundation for all IMDb data operations.
def IMDb(accessSystem=None, *arguments, **keywords):
"""Create IMDb access system instance."""
def available_access_systems():
"""Return list of available access systems."""Comprehensive movie search, retrieval, and information management including search functionality, detailed information retrieval, and specialized movie lists and charts.
def search_movie(title, results=None):
"""Search for movies by title."""
def get_movie(movieID, info=('main', 'plot'), modFunct=None):
"""Get movie by ID with specified information sets."""
def get_top250_movies():
"""Get top 250 movies list."""Person search, retrieval, and biographical information management including comprehensive filmography and career details.
def search_person(name, results=None):
"""Search for people by name."""
def get_person(personID, info=('main', 'filmography', 'biography'), modFunct=None):
"""Get person by ID with specified information sets."""Character and company search and retrieval functionality for accessing information about fictional characters and production companies.
def search_character(name, results=None):
"""Search for characters by name."""
def search_company(name, results=None):
"""Search for companies by name."""
def get_character(characterID, info=('main', 'filmography', 'biography'), modFunct=None):
"""Get character by ID."""
def get_company(companyID, info=('main',), modFunct=None):
"""Get company by ID."""Character and Company Operations
Core classes for representing and manipulating IMDb data objects with dictionary-like access and specialized methods.
class Movie:
"""Movie data container with dictionary-like access."""
class Person:
"""Person data container with dictionary-like access."""
class Character:
"""Character data container with dictionary-like access."""
class Company:
"""Company data container with dictionary-like access."""Advanced functionality including URL/ID conversion, specialized charts, keyword operations, and data updates.
def get_imdbID(mop):
"""Get IMDb ID for Movie/Person/Character/Company object."""
def search_keyword(keyword, results=None):
"""Search for existing keywords."""
def update(mop, info=None, override=0):
"""Update object with additional information."""Configuration management, utility functions, and helper methods for customizing behavior and processing IMDb data.
class ConfigParserWithCase:
"""Case-sensitive configuration parser."""
def canonicalName(name):
"""Convert name to canonical format."""
def canonicalTitle(title, lang=None, imdbIndex=None):
"""Convert title to canonical format."""Command-line tools and console scripts for interactive IMDb data access and batch operations.
def main():
"""Main entry point for imdbpy command-line interface."""Console Script: imdbpy (installed with package)
CLI Tools (in bin/ directory):
search_movie.py, search_person.py, search_company.py - Search operationsget_movie.py, get_person.py, get_company.py - Data retrievalget_keyword.py, get_movie_list.py - Specialized retrievalget_top_bottom_movies.py - Chart accessimdbpy2sql.py - Database conversion utilitys32cinemagoer.py - S3 dataset converterclass IMDbError(Exception):
"""Base exception for IMDb operations."""
class IMDbDataAccessError(IMDbError):
"""Exception for data access problems."""
class IMDbParserError(IMDbError):
"""Exception for parsing errors."""VERSION: str # Package version
encoding: str # Default character encoding
imdbURL_base: str # Base IMDb URLInstall with Tessl CLI
npx tessl i tessl/pypi-cinemagoer