Exemple #1
0
def _add_image(slide, placeholder_id, image_url, original_image_size=True):
    if not os.path.isfile(image_url):
        return None

    image_url = os_util.to_actual_file(image_url, __file__)

    placeholder = slide.placeholders[placeholder_id]
    if original_image_size:
        # Calculate the image size of the image
        try:
            im = os_util.open_image(image_url)
            width, height = im.size

            # Make sure the placeholder doesn't zoom in
            placeholder.height = height
            placeholder.width = width

            # Insert the picture
            try:
                placeholder = placeholder.insert_picture(image_url)
            except (ValueError, XMLSyntaxError) as e:
                traceback.print_exc(file=sys.stdout)
                print('_add_image error: {}'.format(e))
                return None

            # Calculate ratios and compare
            image_ratio = width / height
            placeholder_ratio = placeholder.width / placeholder.height
            ratio_difference = placeholder_ratio - image_ratio

            # Placeholder width too wide:
            if ratio_difference > 0:
                difference_on_each_side = ratio_difference / 2
                placeholder.crop_left = -difference_on_each_side
                placeholder.crop_right = -difference_on_each_side
            # Placeholder height too high
            else:
                difference_on_each_side = -ratio_difference / 2
                placeholder.crop_bottom = -difference_on_each_side
                placeholder.crop_top = -difference_on_each_side

            return placeholder
        except FileNotFoundError as fnfe:
            traceback.print_exc(file=sys.stdout)
            print('_add_image file not found: {}'.format(fnfe))
            return None
    else:
        try:
            return placeholder.insert_picture(image_url)
        except OSError or ValueError:
            traceback.print_exc(file=sys.stdout)
            print("Unexpected error inserting image:", image_url, ":",
                  sys.exc_info()[0])
            return None
Exemple #2
0
 def setUp(self):
     random.seed(1)
     self.default_args = mock.Mock()
     self.default_args.configure_mock(topic="cat")
     self.default_args.configure_mock(num_slides=3)
     self.default_args.configure_mock(schema="default")
     self.default_args.configure_mock(title=None)
     self.default_args.configure_mock(parallel=True)
     self.default_args.configure_mock(
         output_folder=os_util.to_actual_file("../output/test/"))
     self.default_args.configure_mock(open_ppt=False)
     self.default_args.configure_mock(save_ppt=True)
     self.default_args.configure_mock(int_seed=123)
    def test_parallel(self):
        arguments = mock.Mock()
        arguments.configure_mock(topic='dog')
        arguments.configure_mock(num_slides=3)
        arguments.configure_mock(schema='test')
        arguments.configure_mock(parallel=True)
        arguments.configure_mock(
            output_folder=os_util.to_actual_file("../output/test/", __file__))
        arguments.configure_mock(open_ppt=False)
        arguments.configure_mock(save_ppt=True)
        ppt = run.main(arguments)

        self.assertEqual(3, len(ppt.slides))
Exemple #4
0
def get_random_inspirobot_image(_):
    # Generate a random url to access inspirobot
    dd = str(random.randint(1, 73)).zfill(2)
    nnnn = random.randint(0, 9998)
    inspirobot_url = ('http://generated.inspirobot.me/'
                      '0{}/aXm{}xjU.jpg').format(dd, nnnn)

    # Download the image
    image_url = os_util.to_actual_file(
        '../downloads/inspirobot/{}-{}.jpg'.format(dd, nnnn), __file__)
    os_util.download_image(inspirobot_url, image_url)

    return image_url
Exemple #5
0
def get_related_giphy(seed_word):
    if bool(seed_word):
        response = giphy.random(tag=seed_word)
    else:
        response = giphy.random()

    if bool(response):
        data = response.get('data')
        if bool(data):
            images = data.get('images')
            original = images.get('original')
            giphy_url = original.get('url')
            gif_name = os.path.basename(os.path.dirname(giphy_url))
            image_url = os_util.to_actual_file('../downloads/giphy/' + str(seed_word) + "/" + gif_name + ".gif",
                                               __file__)
            os_util.download_image(giphy_url, image_url)
            return image_url
Exemple #6
0
def get_powerpoint_template_file():
    return os_util.to_actual_file(_POWERPOINT_TEMPLATE_FILE, __file__)
 def __init__(self, tracery_json, variable="origin"):
     with open(os_util.to_actual_file(tracery_json, __file__)) as grammar_file:
         grammar = get_tracery_grammar(grammar_file)
         grammar.add_modifiers(base_english)
         self._grammar = grammar
         self._variable = variable
Exemple #8
0
def createTraceryGenerator(file, main="origin"):
    actual_file = os_util.to_actual_file(file, __file__)
    return text_generator.TraceryTextGenerator(actual_file, main).generate
Exemple #9
0
def createTemplatedTextGenerator(file):
    actual_file = os_util.to_actual_file(file, __file__)
    return text_generator.TemplatedTextGenerator(actual_file).generate
Exemple #10
0
 def __call__(self, url):
     return os_util.to_actual_file(
         "../../downloads/shitpostbot/{}".format(
             os_util.get_file_name(url)), __file__)
Exemple #11
0
 def __call__(self, url):
     return os_util.to_actual_file(
         "../../downloads/reddit/" + self._subreddit + "/" +
         os_util.get_file_name(url), __file__)
Exemple #12
0
generate_google_image_from_word = FromListGenerator(
    InvalidImagesRemoverGenerator(google_images.ImageGenerator()))

# OLD/VINTAGE
vintage_person_generator = create_reddit_image_generator("OldSchoolCool")
vintage_picture_generator = create_reddit_image_generator(
    "TheWayWeWere", "100yearsago", "ColorizedHistory")

reddit_book_cover_generator = create_reddit_image_generator(
    "BookCovers", "fakebookcovers", "coverdesign", "bookdesign")

reddit_location_image_generator = create_reddit_image_generator(
    "evilbuildings", "itookapicture", "SkyPorn", "EarthPorn")

# BOLD_STATEMENT
bold_statement_templated_file = os_util.to_actual_file(
    '../../data/text-templates/bold_statements.txt', __file__)
bold_statement_templated_generator = createTemplatedTextGenerator(
    bold_statement_templated_file)


def generate_wikihow_bold_statement(presentation_context):
    # template_values = {
    #     "topic": seed,
    #     # TODO: Use datamuse or conceptnet or some other mechanism of finding a related location
    #     'location': 'Here'
    # }
    template_values = presentation_context
    # TODO: Sometimes "Articles Form Wikihow" is being scraped as an action, this is a bug
    related_actions = wikihow.get_related_wikihow_actions(
        presentation_context["seed"])
    if related_actions:
Exemple #13
0
# SPLITTER


class SplitCaptionsGenerator(object):
    def __init__(self, generator):
        self._generator = generator

    def __call__(self, presentation_context):
        line = self._generator(presentation_context)
        parts = line.split("|")
        return parts


# BOLD STATEMENT

bold_statement_templated_file = os_util.to_actual_file(
    "data/text-templates/bold_statements.txt")
bold_statement_templated_generator = create_templated_text_generator(
    bold_statement_templated_file)


def generate_wikihow_bold_statement(presentation_context):
    seed = presentation_context["seed"]
    template_values = presentation_context
    related_actions = wikihow.get_related_wikihow_actions(seed)
    if related_actions:
        action = random.choice(related_actions)
        template_values.update({"action": action.title(), "seed": seed})

    return bold_statement_templated_generator(template_values)