In [1]:
import sys
sys.path.append('../../')
from moviegoer.tables import film_id_from_film_directory, load_film_object
from random import choice
In [2]:
film_id = film_id_from_film_directory()
film_id
Out[2]:
'night_train_2009'
In [3]:
film_obj = load_film_object(film_id)
film_obj.print_info()
*Film Information*
Title, Release Year: Night Train (2009)
File Runtime: 01:30:42
Film Runtime (No Credits): 1:23:34

*Technical Details*
Aspect Ratio: 1.78
Avg. Shot Duration: 8.89
Avg. Brightness: 46
Avg. Contrast: 36

*Dialogue Cadence*
Sentences Per Minute: 14
Words Per Sentence 5.40
Questions Per Minute: 2.27
Pct. Questions: 17%

*Emotion*
Pct. Upset Faces: 56%
Laughs Per Minute: 0.02
Profanity Per Minute: 0.34
Words Per Profanity: 221
Exclamations Per Minute: 2.27
In [4]:
print(len(film_obj.scene_objects))
film_obj.display_scenes()
14
*Plot Context*
Establishing Shot Locations: Counter({'train': 2})
Named Participants: Counter({'miles': 1})
Descriptors: ['indoors', 'standing']
Active Actions: Counter({'reading': 66, 'reaching': 1, 'open': 1})
Right Wearing: Counter({'hat': 38, 'hat and a tie': 1})
*Plot Context*
Context Themes: Counter({'drinking': 1})
Establishing Shot Locations: Counter({'train': 2})
Descriptors: ['indoors', 'sitting']
Held Items: Counter({'bottle': 9, 'cigarette': 2, 'something': 2, 'animal': 1, 'bottle of alcohol': 1})
Active Actions: Counter({'smoking': 2, 'laughing': 1})
Left Wearing: Counter({'white shirt': 19, 'tie': 1})
*Plot Context*
Context Themes: Counter({'transit': 4})
Potential Common Locations: Counter({'train': 4})
Potential Other Locations: Counter({'doorway': 2})
Establishing Shot Locations: Counter({'train': 3})
Named Participants: Counter({'chloe': 1, 'miles': 1})
Descriptors: ['indoors', 'standing']
Active Actions: Counter({'open': 5, 'pointing': 4, 'giving': 3, 'making': 2})
Left Wearing: Counter({'tie': 2, 'white shirt': 2})
Right Wearing: Counter({'hat': 3, 'suit': 1})
*Plot Context*
Named Participants: Counter({'chloe': 1})
Descriptors: ['indoors', 'standing']
Active Actions: Counter({'stuffed': 1})
*Plot Context*
Named Participants: Counter({'miles': 2})
Descriptors: ['standing']
*Plot Context*
Descriptors: ['indoors', 'standing', 'snow']
*Plot Context*
Context Themes: Counter({'transit': 1})
Potential Common Locations: Counter({'train': 1})
Establishing Shot Locations: Counter({'train': 18, 'building': 6})
Named Participants: Counter({'mr. gutman': 1})
Descriptors: ['indoors', 'standing', 'snow']
Held Items: Counter({'piece of paper': 3, 'hand': 3, 'cell phone': 3, 'wallet': 2, 'wallet and money': 1, 'hands': 1, 'stack of money': 1, 'cigarette': 1, 'ring with a flower': 1, 'object': 1})
Active Actions: Counter({'open': 1, 'putting': 1})
Left Wearing: Counter({'hat and coat': 36, 'hat and coat with a blue face': 1})
Right Wearing: Counter({'hat and coat': 30, 'hat and coat with a blue face': 20, 'hat and a coat': 2, 'hat': 1})
*Plot Context*
Establishing Shot Locations: Counter({'train': 7})
Descriptors: ['indoors', 'standing']
Held Items: Counter({'hand': 4})
Active Actions: Counter({'lit': 1})
Left Wearing: Counter({'white shirt': 36, 'green shirt': 3})
Right Wearing: Counter({'hat': 40, 'hat and a suit': 1})
*Plot Context*
Context Themes: Counter({'violence': 3, 'dining': 2})
Descriptors: ['indoors', 'standing']
Held Items: Counter({'knife': 2, 'gun': 1})
Active Actions: Counter({'lit': 41, 'putting': 2})
Right Wearing: Counter({'shirt': 25, 'tie standing': 4, 'tie and a white shirt': 3, 'white shirt': 2, 'tie and a button': 1, 'shirt making a face': 1, 'shirt standing': 1})
*Plot Context*
Context Themes: Counter({'intimacy': 41, 'transit': 9})
Potential Common Locations: Counter({'train': 9})
Potential Other Locations: Counter({'hallway': 30, 'doorway': 12})
Named Participants: Counter({'chloe': 1})
Descriptors: ['indoors', 'standing']
Held Items: Counter({'door': 1})
Active Actions: Counter({'kissing': 26, 'hugging': 15, 'adjusting': 4, 'touching': 3, 'embracing': 1, 'lit': 1})
*Plot Context*
Establishing Shot Locations: Counter({'train': 9})
Named Participants: Counter({'detective melville': 1})
Descriptors: ['indoors', 'standing']
Held Items: Counter({'cell phone': 4, 'hand': 3})
Active Actions: Counter({'sleeping': 9, 'crossed': 2})
Left Wearing: Counter({'suit': 58})
Right Wearing: Counter({'white dress': 14, 'bathrobe': 2})
*Plot Context*
Context Themes: Counter({'animal': 26, 'drinking': 22, 'violence': 4, 'dining': 4})
Named Participants: Counter({'franîšie': 1, 'poochie': 1})
Descriptors: ['indoors', 'sitting']
Held Items: Counter({'dog': 19, 'cigarette': 10, 'cat': 7, 'coffee cup': 6, 'drink': 5, 'pen': 5, 'knife': 4, 'cup': 2, 'pipe': 1, 'animal': 1})
Active Actions: Counter({'drinking': 22, 'smoking': 6, 'suspenders': 1})
Right Wearing: Counter({'shirt': 3, 'yellow shirt': 2, 'tie': 2, 'tie and suspenders standing': 1})
*Plot Context*
Context Themes: Counter({'transit': 31, 'driving': 27, 'dining': 13, 'drinking': 11})
Potential Common Locations: Counter({'car': 27, 'bar': 11, 'train': 4})
Potential Other Locations: Counter({'doorway': 1})
Establishing Shot Locations: Counter({'train': 14, 'building': 1})
Named Participants: Counter({'miles': 1})
Descriptors: ['indoors', 'sitting']
Held Items: Counter({'spoon': 9, 'cell phone': 3, 'object': 2, 'hand': 2, 'hat': 2, 'head': 1})
Active Actions: Counter({'adjusts': 4, 'brushing': 4, 'eating': 4, 'covering': 1})
Right Wearing: Counter({'suit': 38})
*Plot Context*
Context Themes: Counter({'violence': 57, 'dining': 8})
Potential Other Locations: Counter({'doorway': 8, 'booth': 8})
Establishing Shot Locations: Counter({'train': 15})
Named Participants: Counter({'frankie': 1, 'miles': 1})
Descriptors: ['indoors']
Held Items: Counter({'gun': 57, 'key': 4, 'cell phone': 2, 'bottle of wine': 1, 'bat': 1, 'bunch of keys': 1, 'cigarette': 1, 'wrench': 1, 'metal door handle': 1, 'door knob with a thumb': 1})
Active Actions: Counter({'laughing': 7, 'open': 4, 'making': 4, 'yelling': 2, 'singing': 1, 'adjusting': 1, 'opening': 1, 'touching': 1, 'putting': 1})
Left Wearing: Counter({'suit': 34})
Right Wearing: Counter({'suit': 177})
Out[4]:
[None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None,
 None]
In [5]:
film_obj.chart_all_dialogue_emotional_indicators()
In [6]:
film_obj.chart_all_dialogue_shape()
In [7]:
film_obj.chart_all_dialogue_question_proportion()
In [8]:
film_obj.display_color_shots()
In [9]:
rand_scene = None
if film_obj.dialogue_objects:
    rand_scene = choice(film_obj.dialogue_objects)
    rand_scene.display_qna_frames()
In [10]:
if rand_scene:
    rand_scene.display_first_p_sentence_frames()
In [11]:
if rand_scene:
    rand_scene.display_second_p_address_frames()
In [12]:
film_obj.display_laughs()
Out[12]:
[]
In [13]:
film_obj.display_unintelligible_language()
Speaking Japanese
Yells out in Japanese
Speaks in Japanese
In [14]:
film_obj.display_self_intros()
In [15]:
film_obj.display_other_intros()