diff --git a/data/normalization/build/character/aj.json b/data/normalization/build/character/aj.json new file mode 100644 index 0000000..c1ed2ff --- /dev/null +++ b/data/normalization/build/character/aj.json @@ -0,0 +1 @@ +{"name": "aj", "summary": "", "actor": "", "appearances": 31} \ No newline at end of file diff --git a/data/normalization/build/character/andy.json b/data/normalization/build/character/andy.json new file mode 100644 index 0000000..1f76faa --- /dev/null +++ b/data/normalization/build/character/andy.json @@ -0,0 +1 @@ +{"name": "Andy Bernard", "summary": "Andy joined the sales staff at Dunder Mifflin after spending time at the Stamford Branch before it was closed due to downsizing. Andy did later become manager of Dunder Mifflin for a time, but for most of the series he acts as a salesman. His early appearances displayed him as a one-upping suckup employee with a tendency to loose one's temper. Andy is also unusually talented when it comes to singing, often boasting of his education at Cornell University in a capella group.", "actor": "Ed Helms", "appearances": 3963} \ No newline at end of file diff --git a/data/normalization/build/character/angela.json b/data/normalization/build/character/angela.json new file mode 100644 index 0000000..7c4448f --- /dev/null +++ b/data/normalization/build/character/angela.json @@ -0,0 +1 @@ +{"name": "Angela Martin", "summary": "Angela is one of the lead accountants in The Office who has a tremendous affection for cats and tends to be a bit judgmental. Her no nonsense approach to how things should be done in the office appeals to Dwight.", "actor": "Angela Kinsey", "appearances": 1665} \ No newline at end of file diff --git a/data/normalization/build/character/ben-franklin.json b/data/normalization/build/character/ben-franklin.json new file mode 100644 index 0000000..6d113e7 --- /dev/null +++ b/data/normalization/build/character/ben-franklin.json @@ -0,0 +1 @@ +{"name": "ben-franklin", "summary": "", "actor": "", "appearances": 24} \ No newline at end of file diff --git a/data/normalization/build/character/ben-nugent.json b/data/normalization/build/character/ben-nugent.json new file mode 100644 index 0000000..79172f6 --- /dev/null +++ b/data/normalization/build/character/ben-nugent.json @@ -0,0 +1 @@ +{"name": "ben-nugent", "summary": "", "actor": "", "appearances": 4} \ No newline at end of file diff --git a/data/normalization/build/character/bert.json b/data/normalization/build/character/bert.json new file mode 100644 index 0000000..d96eb67 --- /dev/null +++ b/data/normalization/build/character/bert.json @@ -0,0 +1 @@ +{"name": "bert", "summary": "", "actor": "", "appearances": 23} \ No newline at end of file diff --git a/data/normalization/build/character/billy-merchant.json b/data/normalization/build/character/billy-merchant.json new file mode 100644 index 0000000..0e8b9e2 --- /dev/null +++ b/data/normalization/build/character/billy-merchant.json @@ -0,0 +1 @@ +{"name": "Billy Merchant", "summary": "", "actor": "", "appearances": 9} \ No newline at end of file diff --git a/data/normalization/build/character/billy.json b/data/normalization/build/character/billy.json new file mode 100644 index 0000000..8c03e72 --- /dev/null +++ b/data/normalization/build/character/billy.json @@ -0,0 +1 @@ +{"name": "Billy", "summary": "", "actor": "", "appearances": 10} \ No newline at end of file diff --git a/data/normalization/build/character/bob-vance.json b/data/normalization/build/character/bob-vance.json new file mode 100644 index 0000000..75d8027 --- /dev/null +++ b/data/normalization/build/character/bob-vance.json @@ -0,0 +1 @@ +{"name": "Bob V ance", "summary": "", "actor": "", "appearances": 20} \ No newline at end of file diff --git a/data/normalization/build/character/brian.json b/data/normalization/build/character/brian.json new file mode 100644 index 0000000..887288b --- /dev/null +++ b/data/normalization/build/character/brian.json @@ -0,0 +1 @@ +{"name": "brian", "summary": "", "actor": "", "appearances": 53} \ No newline at end of file diff --git a/data/normalization/build/character/broccoli-rob.json b/data/normalization/build/character/broccoli-rob.json new file mode 100644 index 0000000..b40116c --- /dev/null +++ b/data/normalization/build/character/broccoli-rob.json @@ -0,0 +1 @@ +{"name": "broccoli-rob", "summary": "", "actor": "", "appearances": 11} \ No newline at end of file diff --git a/data/normalization/build/character/captain-jack.json b/data/normalization/build/character/captain-jack.json new file mode 100644 index 0000000..9c3d50d --- /dev/null +++ b/data/normalization/build/character/captain-jack.json @@ -0,0 +1 @@ +{"name": "Captain Jack", "summary": "", "actor": "", "appearances": 35} \ No newline at end of file diff --git a/data/normalization/build/character/carla-fern.json b/data/normalization/build/character/carla-fern.json new file mode 100644 index 0000000..0bfeacc --- /dev/null +++ b/data/normalization/build/character/carla-fern.json @@ -0,0 +1 @@ +{"name": "Carla Fern", "summary": "", "actor": "", "appearances": 15} \ No newline at end of file diff --git a/data/normalization/build/character/carrol.json b/data/normalization/build/character/carrol.json new file mode 100644 index 0000000..4e14250 --- /dev/null +++ b/data/normalization/build/character/carrol.json @@ -0,0 +1 @@ +{"name": "Carrol Stills", "summary": "", "actor": "", "appearances": 106} \ No newline at end of file diff --git a/data/normalization/build/character/cathy.json b/data/normalization/build/character/cathy.json new file mode 100644 index 0000000..b28f93f --- /dev/null +++ b/data/normalization/build/character/cathy.json @@ -0,0 +1 @@ +{"name": "Cathy Simms", "summary": "", "actor": "Lindsey Broad", "appearances": 50} \ No newline at end of file diff --git a/data/normalization/build/character/cece.json b/data/normalization/build/character/cece.json new file mode 100644 index 0000000..1fbab6a --- /dev/null +++ b/data/normalization/build/character/cece.json @@ -0,0 +1 @@ +{"name": "Cece", "summary": "Jim and Pam's first child", "actor": "Mia Cavolic, then Bailey and Sienna Strull", "appearances": 12} \ No newline at end of file diff --git a/data/normalization/build/character/charles.json b/data/normalization/build/character/charles.json new file mode 100644 index 0000000..6c97fc4 --- /dev/null +++ b/data/normalization/build/character/charles.json @@ -0,0 +1 @@ +{"name": "charles", "summary": "", "actor": "", "appearances": 153} \ No newline at end of file diff --git a/data/normalization/build/character/cindy.json b/data/normalization/build/character/cindy.json new file mode 100644 index 0000000..c71ba5c --- /dev/null +++ b/data/normalization/build/character/cindy.json @@ -0,0 +1 @@ +{"name": "cindy", "summary": "", "actor": "", "appearances": 15} \ No newline at end of file diff --git a/data/normalization/build/character/clark.json b/data/normalization/build/character/clark.json new file mode 100644 index 0000000..eb7bbf4 --- /dev/null +++ b/data/normalization/build/character/clark.json @@ -0,0 +1 @@ +{"name": "Clark Green", "summary": "", "actor": "Clark Duke", "appearances": 0} \ No newline at end of file diff --git a/data/normalization/build/character/concierge-marie.json b/data/normalization/build/character/concierge-marie.json new file mode 100644 index 0000000..bab424a --- /dev/null +++ b/data/normalization/build/character/concierge-marie.json @@ -0,0 +1 @@ +{"name": "concierge-marie", "summary": "", "actor": "", "appearances": 10} \ No newline at end of file diff --git a/data/normalization/build/character/creed.json b/data/normalization/build/character/creed.json new file mode 100644 index 0000000..d9b34e0 --- /dev/null +++ b/data/normalization/build/character/creed.json @@ -0,0 +1 @@ +{"name": "Creed Bratton", "summary": "Creed is ostensibly in charge of quality control for Dunder Mifflin paper. Creed is a highly unusual among the employees of Dunder Mifflin, showing a questionable history and affiliation with a complete lack of morals.", "actor": "Creed Bratton", "appearances": 452} \ No newline at end of file diff --git a/data/normalization/build/character/darryl.json b/data/normalization/build/character/darryl.json new file mode 100644 index 0000000..f593938 --- /dev/null +++ b/data/normalization/build/character/darryl.json @@ -0,0 +1 @@ +{"name": "Darryl Philbin", "summary": "", "actor": "Craig Robinson", "appearances": 1281} \ No newline at end of file diff --git a/data/normalization/build/character/david-brent.json b/data/normalization/build/character/david-brent.json new file mode 100644 index 0000000..fce76ef --- /dev/null +++ b/data/normalization/build/character/david-brent.json @@ -0,0 +1 @@ +{"name": "David Brent", "summary": "", "actor": "Ricky Gervais", "appearances": 2} \ No newline at end of file diff --git a/data/normalization/build/character/david-wallace.json b/data/normalization/build/character/david-wallace.json new file mode 100644 index 0000000..89b714a --- /dev/null +++ b/data/normalization/build/character/david-wallace.json @@ -0,0 +1 @@ +{"name": "David Wallace", "summary": "", "actor": "Andy Buckley", "appearances": 470} \ No newline at end of file diff --git a/data/normalization/build/character/deangelo.json b/data/normalization/build/character/deangelo.json new file mode 100644 index 0000000..9f9355e --- /dev/null +++ b/data/normalization/build/character/deangelo.json @@ -0,0 +1 @@ +{"name": "DeAngelo", "summary": "", "actor": "", "appearances": 240} \ No newline at end of file diff --git a/data/normalization/build/character/devon.json b/data/normalization/build/character/devon.json new file mode 100644 index 0000000..1045ccc --- /dev/null +++ b/data/normalization/build/character/devon.json @@ -0,0 +1 @@ +{"name": "Devon White", "summary": "", "actor": "", "appearances": 9} \ No newline at end of file diff --git a/data/normalization/build/character/donna.json b/data/normalization/build/character/donna.json new file mode 100644 index 0000000..d03361a --- /dev/null +++ b/data/normalization/build/character/donna.json @@ -0,0 +1 @@ +{"name": "Donna", "summary": "", "actor": "", "appearances": 81} \ No newline at end of file diff --git a/data/normalization/build/character/dwight.json b/data/normalization/build/character/dwight.json new file mode 100644 index 0000000..799f04e --- /dev/null +++ b/data/normalization/build/character/dwight.json @@ -0,0 +1 @@ +{"name": "Dwight Schrute", "summary": "Dwight is unofficially the assistant (to the) regional manager at Dunder Mifflin. Dwight is extremely passionate about paper and is constantly trying to impress Michael. Dwight is also the leading salesman in the Scranton office.", "actor": "Rainn Wilson", "appearances": 7387} \ No newline at end of file diff --git a/data/normalization/build/character/erin.json b/data/normalization/build/character/erin.json new file mode 100644 index 0000000..b0a53a6 --- /dev/null +++ b/data/normalization/build/character/erin.json @@ -0,0 +1 @@ +{"name": "Erin Hannon", "summary": "Erin Hannon replaces Pam Beasley (Halpert) as the receptionist at Dunder Mifflin Scranton. Erin is cheerful and loves being a receptionist. She is typically positive and supportive of Michael which she demonstrates in the \"Nepotism\" scene. Erin could be described as the employee who is the least likely to quit her job in search of a better opportunity because she is very content at Dunder Mifflin.", "actor": "Ellie Kemper", "appearances": 1477} \ No newline at end of file diff --git a/data/normalization/build/character/ernesto.json b/data/normalization/build/character/ernesto.json new file mode 100644 index 0000000..57bbb20 --- /dev/null +++ b/data/normalization/build/character/ernesto.json @@ -0,0 +1 @@ +{"name": "ernesto", "summary": "", "actor": "", "appearances": 4} \ No newline at end of file diff --git a/data/normalization/build/character/esther.json b/data/normalization/build/character/esther.json new file mode 100644 index 0000000..2547aa2 --- /dev/null +++ b/data/normalization/build/character/esther.json @@ -0,0 +1 @@ +{"name": "esther", "summary": "", "actor": "", "appearances": 21} \ No newline at end of file diff --git a/data/normalization/build/character/fannie.json b/data/normalization/build/character/fannie.json new file mode 100644 index 0000000..0e7cf84 --- /dev/null +++ b/data/normalization/build/character/fannie.json @@ -0,0 +1 @@ +{"name": "fannie", "summary": "", "actor": "", "appearances": 19} \ No newline at end of file diff --git a/data/normalization/build/character/frank.json b/data/normalization/build/character/frank.json new file mode 100644 index 0000000..62fa7ca --- /dev/null +++ b/data/normalization/build/character/frank.json @@ -0,0 +1 @@ +{"name": "frank", "summary": "", "actor": "", "appearances": 8} \ No newline at end of file diff --git a/data/normalization/build/character/gabe.json b/data/normalization/build/character/gabe.json new file mode 100644 index 0000000..c88ae75 --- /dev/null +++ b/data/normalization/build/character/gabe.json @@ -0,0 +1 @@ +{"name": "Gabe Lewis", "summary": "After Dunder Mifflin was taken over by Sabre Corporation, Gabe was assigned by the corporate headquarters to report on the activities at Scranton.", "actor": "Zach Woods", "appearances": 431} \ No newline at end of file diff --git a/data/normalization/build/character/gil.json b/data/normalization/build/character/gil.json new file mode 100644 index 0000000..6229ce6 --- /dev/null +++ b/data/normalization/build/character/gil.json @@ -0,0 +1 @@ +{"name": "Gil", "summary": "Oscar Martinez's boyfriend in the early seasons of the office. The two travel ", "actor": "Tom W. Chick", "appearances": 6} \ No newline at end of file diff --git a/data/normalization/build/character/hank.json b/data/normalization/build/character/hank.json new file mode 100644 index 0000000..dccbbea --- /dev/null +++ b/data/normalization/build/character/hank.json @@ -0,0 +1 @@ +{"name": "Hank", "summary": "The security guard.", "actor": "", "appearances": 51} \ No newline at end of file diff --git a/data/normalization/build/character/helene.json b/data/normalization/build/character/helene.json new file mode 100644 index 0000000..1d204dd --- /dev/null +++ b/data/normalization/build/character/helene.json @@ -0,0 +1 @@ +{"name": "Helene Beesly", "summary": "", "actor": "", "appearances": 87} \ No newline at end of file diff --git a/data/normalization/build/character/here-comes-treble.json b/data/normalization/build/character/here-comes-treble.json new file mode 100644 index 0000000..692884d --- /dev/null +++ b/data/normalization/build/character/here-comes-treble.json @@ -0,0 +1 @@ +{"name": "here-comes-treble", "summary": "", "actor": "", "appearances": 14} \ No newline at end of file diff --git a/data/normalization/build/character/hide.json b/data/normalization/build/character/hide.json new file mode 100644 index 0000000..99361a0 --- /dev/null +++ b/data/normalization/build/character/hide.json @@ -0,0 +1 @@ +{"name": "Hide", "summary": "", "actor": "", "appearances": 12} \ No newline at end of file diff --git a/data/normalization/build/character/holly.json b/data/normalization/build/character/holly.json new file mode 100644 index 0000000..e85d036 --- /dev/null +++ b/data/normalization/build/character/holly.json @@ -0,0 +1 @@ +{"name": "Holly Flax", "summary": "", "actor": "Amy Ryan", "appearances": 606} \ No newline at end of file diff --git a/data/normalization/build/character/irene.json b/data/normalization/build/character/irene.json new file mode 100644 index 0000000..67d474a --- /dev/null +++ b/data/normalization/build/character/irene.json @@ -0,0 +1 @@ +{"name": "irene", "summary": "", "actor": "", "appearances": 23} \ No newline at end of file diff --git a/data/normalization/build/character/jada.json b/data/normalization/build/character/jada.json new file mode 100644 index 0000000..1aec7e2 --- /dev/null +++ b/data/normalization/build/character/jada.json @@ -0,0 +1 @@ +{"name": "Jada Philbin", "summary": "The daughter of Darryl and Justine (divorced).", "actor": "", "appearances": 22} \ No newline at end of file diff --git a/data/normalization/build/character/jake.json b/data/normalization/build/character/jake.json new file mode 100644 index 0000000..aa00aee --- /dev/null +++ b/data/normalization/build/character/jake.json @@ -0,0 +1 @@ +{"name": "Jake Palmer", "summary": "Meredith's son.", "actor": "Spencer Daniels", "appearances": 32} \ No newline at end of file diff --git a/data/normalization/build/character/jan.json b/data/normalization/build/character/jan.json new file mode 100644 index 0000000..019c61f --- /dev/null +++ b/data/normalization/build/character/jan.json @@ -0,0 +1 @@ +{"name": "Jan Levinson", "summary": "", "actor": "Melora Hardin", "appearances": 913} \ No newline at end of file diff --git a/data/normalization/build/character/jim.json b/data/normalization/build/character/jim.json new file mode 100644 index 0000000..6f03ce2 --- /dev/null +++ b/data/normalization/build/character/jim.json @@ -0,0 +1 @@ +{"name": "Jim Halpert", "summary": "Jim is also in sales and is considered to be one of the \"heroes\" of the show because of his laid back attitude and ability to get along with people. During the course of the series, Jim marries Pam Beasley and subsequently becomes quite motivated to succeed as a paper salesman. There are many instances in The Office where Jim spends very little time attempting to increase his paper sales instead spending considerable time trying to win the affections of Pam. Jim also spends an inordinate amount of time playing tricks on Dwight or entertaining his co-workers which he primarily does to entertain Pam.", "actor": "John Krakinski", "appearances": 6664} \ No newline at end of file diff --git a/data/normalization/build/character/jo.json b/data/normalization/build/character/jo.json new file mode 100644 index 0000000..16f5e90 --- /dev/null +++ b/data/normalization/build/character/jo.json @@ -0,0 +1 @@ +{"name": "Jo Bennett", "summary": "", "actor": "Kathy Bates", "appearances": 186} \ No newline at end of file diff --git a/data/normalization/build/character/josh.json b/data/normalization/build/character/josh.json new file mode 100644 index 0000000..c91c626 --- /dev/null +++ b/data/normalization/build/character/josh.json @@ -0,0 +1 @@ +{"name": "Josh Porter", "summary": "The Stamford Branch's manager who ends up leveraging his pending promotion to Dunder Mifflin Northeast to win a job offer at Staples.", "actor": "Charles Esten", "appearances": 65} \ No newline at end of file diff --git a/data/normalization/build/character/karen.json b/data/normalization/build/character/karen.json new file mode 100644 index 0000000..b63c0be --- /dev/null +++ b/data/normalization/build/character/karen.json @@ -0,0 +1 @@ +{"name": "Karen Filippelli", "summary": "", "actor": "Rashida Jones", "appearances": 340} \ No newline at end of file diff --git a/data/normalization/build/character/katy.json b/data/normalization/build/character/katy.json new file mode 100644 index 0000000..c3f5250 --- /dev/null +++ b/data/normalization/build/character/katy.json @@ -0,0 +1 @@ +{"name": "Katy", "summary": "", "actor": "", "appearances": 99} \ No newline at end of file diff --git a/data/normalization/build/character/kelly.json b/data/normalization/build/character/kelly.json new file mode 100644 index 0000000..9b81274 --- /dev/null +++ b/data/normalization/build/character/kelly.json @@ -0,0 +1 @@ +{"name": "Kelly Kapoor", "summary": "Kelly Kapoor is in charge of customer relations at Dunder Mifflin Scranton. She is a very competent employee but she is extremely talkative and a bit of a gossip. She enjoys talking about trivial matters such as celebrity gossip and could certainly be accused of being obsessed about getting married (particularly to her on again off again boyfriend Ryan).", "actor": "Mindy Kaling", "appearances": 936} \ No newline at end of file diff --git a/data/normalization/build/character/kevin.json b/data/normalization/build/character/kevin.json new file mode 100644 index 0000000..3183036 --- /dev/null +++ b/data/normalization/build/character/kevin.json @@ -0,0 +1 @@ +{"name": "Kevin Malone", "summary": "Kevin is the third accountant in the office and he is less adept at accounting than one might expect. Kevin was given his job by Michael despite being under qualified and that helps to explain why he occasionally becomes confused about fairly simple concepts.", "actor": "Brian Baumgartner", "appearances": 1686} \ No newline at end of file diff --git a/data/normalization/build/character/lonny.json b/data/normalization/build/character/lonny.json new file mode 100644 index 0000000..fd42459 --- /dev/null +++ b/data/normalization/build/character/lonny.json @@ -0,0 +1 @@ +{"name": "Lonny", "summary": "", "actor": "", "appearances": 22} \ No newline at end of file diff --git a/data/normalization/build/character/madge.json b/data/normalization/build/character/madge.json new file mode 100644 index 0000000..147e617 --- /dev/null +++ b/data/normalization/build/character/madge.json @@ -0,0 +1 @@ +{"name": "Madge", "summary": "", "actor": "", "appearances": 7} \ No newline at end of file diff --git a/data/normalization/build/character/martin.json b/data/normalization/build/character/martin.json new file mode 100644 index 0000000..6b1c4a0 --- /dev/null +++ b/data/normalization/build/character/martin.json @@ -0,0 +1 @@ +{"name": "martin", "summary": "", "actor": "", "appearances": 18} \ No newline at end of file diff --git a/data/normalization/build/character/melvina.json b/data/normalization/build/character/melvina.json new file mode 100644 index 0000000..57d42a7 --- /dev/null +++ b/data/normalization/build/character/melvina.json @@ -0,0 +1 @@ +{"name": "melvina", "summary": "", "actor": "", "appearances": 5} \ No newline at end of file diff --git a/data/normalization/build/character/meredith.json b/data/normalization/build/character/meredith.json new file mode 100644 index 0000000..0722bba --- /dev/null +++ b/data/normalization/build/character/meredith.json @@ -0,0 +1 @@ +{"name": "Meredith Palmer", "summary": "Meredith is in \"supplier relations\" for Dunder Mifflin although she is seldom shown working on the show. Meredith spends most of her time playing solitaire on her computer. ", "actor": "Kate Flannery", "appearances": 647} \ No newline at end of file diff --git a/data/normalization/build/character/michael.json b/data/normalization/build/character/michael.json new file mode 100644 index 0000000..985f495 --- /dev/null +++ b/data/normalization/build/character/michael.json @@ -0,0 +1 @@ +{"name": "Michael Scott", "summary": "Michael is the regional manager of Dunder Mifflin Paper Company in Scranton, Pennsylvania. Michael thinks of himself as an extremely capable boss who can handle any problem efficiently. In reality, Scott is ill-equipped to handle most of the problems that arise at Dunder Mifflin. Michael loves to host conference room meetings where typically very little is accomplished but he gets to be the center of attention. ", "actor": "Steve Carell", "appearances": 11768} \ No newline at end of file diff --git a/data/normalization/build/character/mose.json b/data/normalization/build/character/mose.json new file mode 100644 index 0000000..f192266 --- /dev/null +++ b/data/normalization/build/character/mose.json @@ -0,0 +1 @@ +{"name": "mose", "summary": "", "actor": "", "appearances": 33} \ No newline at end of file diff --git a/data/normalization/build/character/mr-brown.json b/data/normalization/build/character/mr-brown.json new file mode 100644 index 0000000..b81e575 --- /dev/null +++ b/data/normalization/build/character/mr-brown.json @@ -0,0 +1 @@ +{"name": "Mr. Brown", "summary": "", "actor": "", "appearances": 52} \ No newline at end of file diff --git a/data/normalization/build/character/mr-figaro.json b/data/normalization/build/character/mr-figaro.json new file mode 100644 index 0000000..32365a0 --- /dev/null +++ b/data/normalization/build/character/mr-figaro.json @@ -0,0 +1 @@ +{"name": "mr-figaro", "summary": "", "actor": "", "appearances": 4} \ No newline at end of file diff --git a/data/normalization/build/character/nate.json b/data/normalization/build/character/nate.json new file mode 100644 index 0000000..aeb0d4e --- /dev/null +++ b/data/normalization/build/character/nate.json @@ -0,0 +1 @@ +{"name": "Nate", "summary": "", "actor": "", "appearances": 55} \ No newline at end of file diff --git a/data/normalization/build/character/nellie.json b/data/normalization/build/character/nellie.json new file mode 100644 index 0000000..2f66ba9 --- /dev/null +++ b/data/normalization/build/character/nellie.json @@ -0,0 +1 @@ +{"name": "Nellie Bertram", "summary": "", "actor": "Catherine T", "appearances": 531} \ No newline at end of file diff --git a/data/normalization/build/character/nick.json b/data/normalization/build/character/nick.json new file mode 100644 index 0000000..6a1206b --- /dev/null +++ b/data/normalization/build/character/nick.json @@ -0,0 +1 @@ +{"name": "nick", "summary": "", "actor": "", "appearances": 31} \ No newline at end of file diff --git a/data/normalization/build/character/oscar.json b/data/normalization/build/character/oscar.json new file mode 100644 index 0000000..08a4237 --- /dev/null +++ b/data/normalization/build/character/oscar.json @@ -0,0 +1 @@ +{"name": "Oscar Gutierrez", "summary": "Oscar is the other lead accountant in the office. Oscar and Angela frequently disagree about what is acceptable office behavior. ", "actor": "Oscar Nu\u00c3\u00b1ez", "appearances": 1478} \ No newline at end of file diff --git a/data/normalization/build/character/pam.json b/data/normalization/build/character/pam.json new file mode 100644 index 0000000..c03403b --- /dev/null +++ b/data/normalization/build/character/pam.json @@ -0,0 +1 @@ +{"name": "Pam Beasley", "summary": "Pam is the secretary at Dunder Mifflin and tries to keep Michael somewhat focused on work and being productive. Pam is unaware of Jim's romantic interest in her during the early seasons of the show.", "actor": "Jenna Fischer", "appearances": 5271} \ No newline at end of file diff --git a/data/normalization/build/character/pete.json b/data/normalization/build/character/pete.json new file mode 100644 index 0000000..c3d8402 --- /dev/null +++ b/data/normalization/build/character/pete.json @@ -0,0 +1 @@ +{"name": "Pete Miller", "summary": "", "actor": "Jake Lacy", "appearances": 0} \ No newline at end of file diff --git a/data/normalization/build/character/phillip.json b/data/normalization/build/character/phillip.json new file mode 100644 index 0000000..c0b8b92 --- /dev/null +++ b/data/normalization/build/character/phillip.json @@ -0,0 +1 @@ +{"name": "phillip", "summary": "", "actor": "", "appearances": 5} \ No newline at end of file diff --git a/data/normalization/build/character/phyllis.json b/data/normalization/build/character/phyllis.json new file mode 100644 index 0000000..1b6c8f1 --- /dev/null +++ b/data/normalization/build/character/phyllis.json @@ -0,0 +1 @@ +{"name": "Phyllis Lapin", "summary": "Phyllis is also a Dunder Mifflin salesperson. While Phyllis is typically very laid back and quiet she is very protective of her position in the company and her sales commissions.", "actor": "Phyllis Smith", "appearances": 1059} \ No newline at end of file diff --git a/data/normalization/build/character/randy.json b/data/normalization/build/character/randy.json new file mode 100644 index 0000000..8293877 --- /dev/null +++ b/data/normalization/build/character/randy.json @@ -0,0 +1 @@ +{"name": "randy", "summary": "", "actor": "", "appearances": 2} \ No newline at end of file diff --git a/data/normalization/build/character/ravi.json b/data/normalization/build/character/ravi.json new file mode 100644 index 0000000..9ae59f9 --- /dev/null +++ b/data/normalization/build/character/ravi.json @@ -0,0 +1 @@ +{"name": "ravi", "summary": "", "actor": "", "appearances": 9} \ No newline at end of file diff --git a/data/normalization/build/character/robert-dunder.json b/data/normalization/build/character/robert-dunder.json new file mode 100644 index 0000000..db19819 --- /dev/null +++ b/data/normalization/build/character/robert-dunder.json @@ -0,0 +1 @@ +{"name": "robert-dunder", "summary": "", "actor": "", "appearances": 11} \ No newline at end of file diff --git a/data/normalization/build/character/robert.json b/data/normalization/build/character/robert.json new file mode 100644 index 0000000..31af1e2 --- /dev/null +++ b/data/normalization/build/character/robert.json @@ -0,0 +1 @@ +{"name": "Robert California", "summary": "", "actor": "", "appearances": 445} \ No newline at end of file diff --git a/data/normalization/build/character/rolando.json b/data/normalization/build/character/rolando.json new file mode 100644 index 0000000..a3d09ea --- /dev/null +++ b/data/normalization/build/character/rolando.json @@ -0,0 +1 @@ +{"name": "rolando", "summary": "", "actor": "", "appearances": 4} \ No newline at end of file diff --git a/data/normalization/build/character/rolf.json b/data/normalization/build/character/rolf.json new file mode 100644 index 0000000..7ff2e9e --- /dev/null +++ b/data/normalization/build/character/rolf.json @@ -0,0 +1 @@ +{"name": "Rolf", "summary": "One of Dwight's friends.", "actor": "", "appearances": 29} \ No newline at end of file diff --git a/data/normalization/build/character/roy.json b/data/normalization/build/character/roy.json new file mode 100644 index 0000000..74ffa85 --- /dev/null +++ b/data/normalization/build/character/roy.json @@ -0,0 +1 @@ +{"name": "Roy Anderson", "summary": "", "actor": "David Denman", "appearances": 252} \ No newline at end of file diff --git a/data/normalization/build/character/ryan.json b/data/normalization/build/character/ryan.json new file mode 100644 index 0000000..31fed7a --- /dev/null +++ b/data/normalization/build/character/ryan.json @@ -0,0 +1 @@ +{"name": "Ryan Howard", "summary": "Ryan Howard is a temporary employee in season one but eventually gets promoted to be Michael\u00e2\u20ac\u2122s supervisor at Dunder Mifflin.", "actor": "B.J. Novak", "appearances": 1351} \ No newline at end of file diff --git a/data/normalization/build/character/senator-lipton.json b/data/normalization/build/character/senator-lipton.json new file mode 100644 index 0000000..14bad75 --- /dev/null +++ b/data/normalization/build/character/senator-lipton.json @@ -0,0 +1 @@ +{"name": "Senator Lipton", "summary": "", "actor": "", "appearances": 47} \ No newline at end of file diff --git a/data/normalization/build/character/sensei-billy.json b/data/normalization/build/character/sensei-billy.json new file mode 100644 index 0000000..e43a1ac --- /dev/null +++ b/data/normalization/build/character/sensei-billy.json @@ -0,0 +1 @@ +{"name": "sensei-billy", "summary": "", "actor": "", "appearances": 11} \ No newline at end of file diff --git a/data/normalization/build/character/sherri.json b/data/normalization/build/character/sherri.json new file mode 100644 index 0000000..c9a1a18 --- /dev/null +++ b/data/normalization/build/character/sherri.json @@ -0,0 +1 @@ +{"name": "Sherri", "summary": "Jan's secretary", "actor": "", "appearances": 11} \ No newline at end of file diff --git a/data/normalization/build/character/stanley.json b/data/normalization/build/character/stanley.json new file mode 100644 index 0000000..f2c994f --- /dev/null +++ b/data/normalization/build/character/stanley.json @@ -0,0 +1 @@ +{"name": "Stanley Hudson", "summary": "Stanley is a fairly successful salesman who resents spending time in an office where he typically is not productive. Stanley tolerates Michael's long and typically pointless conference room meetings by spending his time completing crossword puzzles. ", "actor": "Leslie David Baker", "appearances": 751} \ No newline at end of file diff --git a/data/normalization/build/character/sweeney-todd.json b/data/normalization/build/character/sweeney-todd.json new file mode 100644 index 0000000..31723db --- /dev/null +++ b/data/normalization/build/character/sweeney-todd.json @@ -0,0 +1 @@ +{"name": "Sweeney Todd", "summary": "", "actor": "", "appearances": 14} \ No newline at end of file diff --git a/data/normalization/build/character/sylvia.json b/data/normalization/build/character/sylvia.json new file mode 100644 index 0000000..694922b --- /dev/null +++ b/data/normalization/build/character/sylvia.json @@ -0,0 +1 @@ +{"name": "Sylvia", "summary": "", "actor": "", "appearances": 15} \ No newline at end of file diff --git a/data/normalization/build/character/toby.json b/data/normalization/build/character/toby.json new file mode 100644 index 0000000..6934d6a --- /dev/null +++ b/data/normalization/build/character/toby.json @@ -0,0 +1 @@ +{"name": "Toby Flenderson", "summary": "Toby is the head of human resources and he and Michael do not get along well. Toby frequently tries (with little success) to prevent Michael from violating corporate policy. As a result, Michael develops a strong grudge against Toby.", "actor": "Paul Lieberstein", "appearances": 924} \ No newline at end of file diff --git a/data/normalization/build/character/todd-packer.json b/data/normalization/build/character/todd-packer.json new file mode 100644 index 0000000..ffd8827 --- /dev/null +++ b/data/normalization/build/character/todd-packer.json @@ -0,0 +1 @@ +{"name": "Todd Packer", "summary": "", "actor": "David Koechner", "appearances": 167} \ No newline at end of file diff --git a/data/normalization/build/character/trevor.json b/data/normalization/build/character/trevor.json new file mode 100644 index 0000000..b75c20d --- /dev/null +++ b/data/normalization/build/character/trevor.json @@ -0,0 +1 @@ +{"name": "trevor", "summary": "", "actor": "", "appearances": 31} \ No newline at end of file diff --git a/data/normalization/build/character/uncle-al.json b/data/normalization/build/character/uncle-al.json new file mode 100644 index 0000000..9c46075 --- /dev/null +++ b/data/normalization/build/character/uncle-al.json @@ -0,0 +1 @@ +{"name": "uncle-al", "summary": "", "actor": "", "appearances": 7} \ No newline at end of file diff --git a/data/normalization/build/character/val.json b/data/normalization/build/character/val.json new file mode 100644 index 0000000..92d500a --- /dev/null +++ b/data/normalization/build/character/val.json @@ -0,0 +1 @@ +{"name": "Val Johnson", "summary": "Hired after the old warehouse crew quits, Val is the warehouse foreman and has a relationship with Darryl after she breaks up with her initial boyfriend, Brandon.", "actor": "Ameenah Kaplan", "appearances": 73} \ No newline at end of file diff --git a/data/normalization/build/character/vikram.json b/data/normalization/build/character/vikram.json new file mode 100644 index 0000000..f917615 --- /dev/null +++ b/data/normalization/build/character/vikram.json @@ -0,0 +1 @@ +{"name": "vikram", "summary": "", "actor": "", "appearances": 21} \ No newline at end of file diff --git a/data/normalization/build/character/walter-jr.json b/data/normalization/build/character/walter-jr.json new file mode 100644 index 0000000..9c1eb52 --- /dev/null +++ b/data/normalization/build/character/walter-jr.json @@ -0,0 +1 @@ +{"name": "Walter Bernard Jr.", "summary": "Andrew Bernard's younger brother.", "actor": "Josh Groban", "appearances": 11} \ No newline at end of file diff --git a/data/normalization/build/character/walter.json b/data/normalization/build/character/walter.json new file mode 100644 index 0000000..deb1969 --- /dev/null +++ b/data/normalization/build/character/walter.json @@ -0,0 +1 @@ +{"name": "Walter Bernard Sr.", "summary": "Andrew Bernard's father.", "actor": "Stephen Collins, ?", "appearances": 25} \ No newline at end of file diff --git a/data/normalization/main.py b/data/normalization/main.py index 601eba3..b5e2883 100644 --- a/data/normalization/main.py +++ b/data/normalization/main.py @@ -4,6 +4,7 @@ import logging import os import re import shutil +import subprocess from collections import Counter, OrderedDict from typing import Any, Dict, List, Optional, Tuple, Union @@ -785,7 +786,7 @@ def app(path: str, make_dir: bool) -> None: json.dump(character_data, character_file) # Ensure character folder exists before writing files - if not os.path.lexists(character_folder): + if not os.path.exists(character_folder): os.makedirs(character_folder) for id, data in character_data.items(): @@ -794,5 +795,127 @@ def app(path: str, make_dir: bool) -> None: json.dump(data, file) +@build.command('media') +@click.option('--suppress/--no-suppress', default=True, help='Disable stdout suppression for image magick commandline output.') +@click.option('--copy/--no-copy', default=True, help='Complete the copying stage.') +@click.option('--thumbnail/--no-thumbnail', default=True, help='Complete the thumbnailing stage.') +@click.argument('path', type=click.Path(file_okay=False)) +def media(path: str, suppress: bool, copy: bool, thumbnail: bool) -> None: + def get_fullsize_args(input_path: str, output_path: str, geometry: str) -> List[str]: + return ['magick', + input_path, + '-gravity', 'Center', + '-crop', '1:1+0+0', + '+repage', + '-quality', '95', + '-interlace', 'none', + '-colorspace', 'sRGB', + '-strip', + output_path] + + def get_thumbnailing_args(input_path: str, output_path: str, geometry: str) -> List[str]: + return [ + 'magick', + input_path, + '-gravity', 'Center', + '-crop', '1:1+0+0', + '+repage', + '-filter', 'Triangle', + '-define', 'filter:support=2', + '-thumbnail', geometry, + '-unsharp', '0.25x0.25+8+0.065', + '-dither', 'None', + '-posterize', '136', + '-quality', '82', + '-define', 'jpeg:fancy-upsampling=off', + '-define', 'png:compression-filter=5', + '-define', 'png:compression-level=9', + '-define', 'png:compression-strategy=1', + '-define', 'png:exclude-chunk=all', + '-interlace', 'none', + '-colorspace', 'sRGB', + '-strip', + output_path, + ] + + if not (copy or thumbnail): + logger.error('Both copy and thumbnail stages are disabled. Quitting early.') + return + + copy_operations: List[Tuple[str, str]] = [] + thumbnail_operations: List[Tuple[str, str]] = [] + + # /img/episode/03/04/full.jpeg + all_episodes: List[Tuple[int, int]] = [(season + 1, episode + 1) for season in range(9) for episode in range(EPISODE_COUNTS[season])] + + progress = Progress(SpinnerColumn('dots10'), *Progress.get_default_columns(), MofNCompleteColumn(), + TimeElapsedColumn()) + + with progress: + for season, episode in progress.track(all_episodes, description='Finding images'): + # Find what images are available, select the one with the lowest integer + episode_dir = os.path.join(IMG_EPISODES_DIR, f'{season:02}', f'{episode:02}') + if not os.path.exists(episode_dir): + os.makedirs(episode_dir) + images_available = os.listdir(episode_dir) + images_available.sort(key=lambda x: int(x.split('.')[0])) + + input_path: str = os.path.join(episode_dir, images_available[0]) + output_dir: str = os.path.abspath(os.path.join(path, f'{season:02}', f'{episode:02}')) + if not os.path.exists(output_dir): + os.makedirs(output_dir) + output_copy_path: str = os.path.join(output_dir, 'full.jpeg') + output_thumb_path: str = os.path.join(output_dir, 'thumbnail.jpeg') + + if copy: copy_operations.append((input_path, output_copy_path)) + if thumbnail: thumbnail_operations.append((input_path, output_thumb_path)) + + logger.debug(f'Starting {len(copy_operations) + len(thumbnail_operations)} copy/thumbnailing operations.') + + sp_kwargs = {'capture_output': True, 'text': True} if suppress else {} + + if copy: + with progress: + logger.debug('Beginning "smart copying"...') + + for input, output in progress.track(copy_operations, description='Smart copying...'): + sp_args = get_fullsize_args(input, output, '1440') + + try: + completed = subprocess.run(sp_args, **sp_kwargs, check=True) + except subprocess.CalledProcessError as e: + logger.error('Failed to process copy operation.', exc_info=e) + logger.error(f'Input: "{input}"') + logger.error(f'Output: "{output}"') + logger.error(f'Args: "{" ".join(sp_args)}"') + logger.error(f'Stdout: "{e.stdout.rstrip()}"') + logger.error(f'Stderr: "{e.stderr.rstrip()}"') + + if thumbnail: + with progress: + logger.debug('Beginning "thumbnailing"...') + + for input, output in progress.track(thumbnail_operations, description='Thumbnailing...'): + sp_args = get_thumbnailing_args(input, output, '156') + + try: + completed = subprocess.run(sp_args, **sp_kwargs, check=True) + except subprocess.CalledProcessError as e: + logger.error('Failed to process thumbnail operation.', exc_info=e) + logger.error(f'Input: "{input}"') + logger.error(f'Output: "{output}"') + logger.error(f'Args: "{" ".join(sp_args)}"') + logger.error(f'Stdout: "{e.stdout.rstrip()}"') + logger.error(f'Stderr: "{e.stderr.rstrip()}"') + + with progress: + output_paths = [y for x, y in copy_operations] + output_paths.extend([y for x, y in thumbnail_operations]) + + file_sizes = [] + for path in progress.track(output_paths, description='Acquiring sizes...'): + file_sizes.append(os.stat(path).st_size) + + if __name__ == '__main__': cli()