CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-cinemagoer

Python package for retrieving and managing data from the Internet Movie Database (IMDb) about movies, people, characters and companies

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

Cinemagoer

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.

Package Information

  • Package Name: cinemagoer
  • Language: Python
  • Installation: pip install cinemagoer
  • Dependencies: SQLAlchemy, lxml

Core Imports

from imdb import IMDb, Cinemagoer

Import specific classes:

from imdb import Movie, Person, Character, Company, IMDbError

Basic Usage

from 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')}")

Architecture

Cinemagoer uses a modular access system architecture:

  • Factory Function: IMDb() creates appropriate access system instances
  • Access Systems: Multiple parsers (HTTP, SQL, S3) for different data sources
  • Container Classes: Movie, Person, Character, Company objects with dictionary-like access
  • Data Retrieval: Lazy loading through update() method for detailed information
  • Configuration: Flexible configuration system supporting multiple file formats and locations

This 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.

Capabilities

Core Data Access

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."""

Core Data Access

Movie Operations

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."""

Movie Operations

Person Operations

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."""

Person Operations

Character and Company Operations

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

Data Container Classes

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."""

Data Container Classes

Advanced Features

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."""

Advanced Features

Configuration and Utilities

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."""

Configuration and Utilities

Command-Line Interface

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 operations
  • get_movie.py, get_person.py, get_company.py - Data retrieval
  • get_keyword.py, get_movie_list.py - Specialized retrieval
  • get_top_bottom_movies.py - Chart access
  • imdbpy2sql.py - Database conversion utility
  • s32cinemagoer.py - S3 dataset converter

Exception Handling

class IMDbError(Exception):
    """Base exception for IMDb operations."""

class IMDbDataAccessError(IMDbError):
    """Exception for data access problems."""

class IMDbParserError(IMDbError):
    """Exception for parsing errors."""

Constants

VERSION: str  # Package version
encoding: str  # Default character encoding
imdbURL_base: str  # Base IMDb URL

Install with Tessl CLI

npx tessl i tessl/pypi-cinemagoer
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/cinemagoer@2022.12.x
Publish Source
CLI
Badge
tessl/pypi-cinemagoer badge