datopy.models.media.IMDbFilm#
- pydantic model IMDbFilm[source]#
Bases:
BaseModelData model for processed imdb metadata.
Example
>>> from pydantic import ValidationError >>> from datopy.models.media import IMDbFilm >>> from datopy._examples import imdb_film_retrieve
>>> valid_film = IMDbFilm( ... title='name 10!', imdb_id='tt1234567', kind='movie', ... year=1990, rating=7.2, votes=122, ... genres='romantic comedy, thriller', cast='mrs smith,mr smith', ... plot='alas! once upon a time, ...', ... budget_mil=1123929)
>>> invalid_film = dict( ... title='name', imdb_id='tt12', year=1975, votes=-2, rating=5.0) >>> try: ... IMDbFilm(**invalid_film) ... except ValidationError as e: ... print(e) # use pprint.pp(e.errors()) for easy-to-read list 3 validation errors for IMDbFilm imdb_id String should match pattern '^tt.*\d{7}$' [type=string_pattern_mismatch, input_value='tt12', input_type=str] For further information visit https://errors.pydantic.dev/2.7/v/string_pattern_mismatch kind Field required [type=missing, input_value={'title': 'name', 'imdb_i...tes': -2, 'rating': 5.0}, input_type=dict] For further information visit https://errors.pydantic.dev/2.7/v/missing votes Input should be greater than or equal to 0 [type=greater_than_equal, input_value=-2, input_type=int] For further information visit https://errors.pydantic.dev/2.7/v/greater_than_equal
Survey available fields and types
>>> import pprint >>> from datopy.models.media import Film >>> from datopy._examples import imdb_film_retrieve >>> from datopy.modeling import apply_recursive >>> film = imdb_film_retrieve(Film('spirited away'))
Show JSON schema
{ "title": "IMDbFilm", "description": "Data model for processed imdb metadata.\n\n\nExample\n-------\n>>> from pydantic import ValidationError\n>>> from datopy.models.media import IMDbFilm\n>>> from datopy._examples import imdb_film_retrieve\n\n>>> valid_film = IMDbFilm(\n... title='name 10!', imdb_id='tt1234567', kind='movie',\n... year=1990, rating=7.2, votes=122,\n... genres='romantic comedy, thriller', cast='mrs smith,mr smith',\n... plot='alas! once upon a time, ...',\n... budget_mil=1123929)\n\n>>> invalid_film = dict(\n... title='name', imdb_id='tt12', year=1975, votes=-2, rating=5.0)\n>>> try:\n... IMDbFilm(**invalid_film)\n... except ValidationError as e:\n... print(e) # use pprint.pp(e.errors()) for easy-to-read list\n3 validation errors for IMDbFilm\nimdb_id\n String should match pattern '^tt.*\\d{7}$' [type=string_pattern_mismatch, input_value='tt12', input_type=str]\n For further information visit https://errors.pydantic.dev/2.7/v/string_pattern_mismatch\nkind\n Field required [type=missing, input_value={'title': 'name', 'imdb_i...tes': -2, 'rating': 5.0}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.7/v/missing\nvotes\n Input should be greater than or equal to 0 [type=greater_than_equal, input_value=-2, input_type=int]\n For further information visit https://errors.pydantic.dev/2.7/v/greater_than_equal\n\nSurvey available fields and types\n\n>>> import pprint\n>>> from datopy.models.media import Film\n>>> from datopy._examples import imdb_film_retrieve\n>>> from datopy.modeling import apply_recursive\n>>> film = imdb_film_retrieve(Film('spirited away'))\n\n..\n # >>> film.keys()\n # >>> pprint.pp(apply_recursive(lambda x: type(x).__name__, film), depth=3)", "type": "object", "properties": { "title": { "description": "Allows numerics", "pattern": "^[a-z0-9,.! ]+$", "title": "Title", "type": "string" }, "imdb_id": { "description": "Unique 7-digit IMDb tt identifier", "pattern": "^tt.*\\d{7}$", "title": "Imdb Id", "type": "string" }, "kind": { "description": "Retrieved from: `type`", "examples": [ "movie", "tv series" ], "pattern": "^[a-z, ]+$", "title": "Kind", "type": "string" }, "year": { "maximum": 3000, "minimum": 1880, "title": "Year", "type": "integer" }, "rating": { "maximum": 10.0, "minimum": 0.0, "title": "Rating", "type": "number" }, "votes": { "minimum": 0, "title": "Votes", "type": "integer" }, "runtime_mins": { "default": null, "exclusiveMinimum": 0.0, "title": "Runtime Mins", "type": "number" }, "genres": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Genres", "type": "string" }, "countries": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Countries", "type": "string" }, "director": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Director", "type": "string" }, "writer": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Writer", "type": "string" }, "composer": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Composer", "type": "string" }, "cast": { "default": null, "description": "Custom lowercase comma-separated string type. Excludes num and special chars", "pattern": "^[a-z, ]+$", "title": "Cast", "type": "string" }, "plot": { "default": null, "pattern": "^[a-z0-9,.! ]+$", "title": "Plot", "type": "string" }, "synopsis": { "default": null, "pattern": "^[a-z0-9,.! ]+$", "title": "Synopsis", "type": "string" }, "plot_outline": { "default": null, "pattern": "^[a-z0-9,.! ]+$", "title": "Plot Outline", "type": "string" }, "budget_mil": { "default": null, "description": "Strip $/, & text after first space", "minimum": 0.0, "title": "Budget Mil", "type": "number" }, "opening_weekend_gross_mil": { "default": null, "minimum": 0.0, "title": "Opening Weekend Gross Mil", "type": "number" }, "cumulative_worldwide_gross_mil": { "default": null, "minimum": 0.0, "title": "Cumulative Worldwide Gross Mil", "type": "number" } }, "required": [ "title", "imdb_id", "kind", "year", "rating", "votes" ] }