예제 #1
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    # TODO: Use the Ingestor class to parse all files in the
    # quote_files variable
    quotes = []
    for each in quote_files:
        if Ingestor.parse(each):
            quotes.extend(Ingestor.parse(each))

    images_path = "./_data/photos/dog/"

    # TODO: Use the pythons standard library os class to find all
    # images within the images images_path directory
    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
예제 #2
0
def setup():
    """Load all resources."""

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    parser = Ingestor()
    quotes = []
    for file in quote_files:
        parsed = parser.parse(file)
        if parsed != []:
            quotes.append(parsed)

    images_path = "./_data/photos/dog/"

    imgs = []
    for f in os.listdir(images_path):
        img = os.path.join(images_path, f)
        if img is not None:
            imgs.append(img)

    return quotes, imgs
예제 #3
0
def meme_post():
    """Create a user defined meme."""

    if request.method == 'POST':
        result = request.form
        img = result['image_url']
        body = result['body']
        author = result['author']

        page = requests.get(img)
        temp_image = './tmp/images/temp_img.jpg'
        with open(temp_image, 'wb') as f:
            f.write(page.content)

        temp_txt = f'./tmp/quotes/temp_txt.txt'
        with open(temp_txt, 'w') as f:
            f.write(f'{body} - {author}')

        ingestor = Ingestor()
        quote = ingestor.parse(temp_txt)[0]
        body = quote.body
        author = quote.author

        path = meme.make_meme(temp_image, body, author)

        os.remove(temp_image)
        os.remove(temp_txt)

    return render_template('meme.html', path=path)
예제 #4
0
def setup():
    """ Load all resources """

    quote_files = [
        "./_data/DogQuotes/DogQuotesTXT.txt",
        "./_data/DogQuotes/DogQuotesDOCX.docx",
        "./_data/DogQuotes/DogQuotesPDF.pdf",
        "./_data/DogQuotes/DogQuotesCSV.csv"
    ]

    images_path = "./_data/photos/dog/"

    # TODO: Use the Ingestor class to parse all files in the
    # quote_files variable
    quotes = []
    # print(Ingestor.parse(quote_files[3]))
    for file in quote_files:
        quotes.extend(Ingestor.parse(file))

    if not quotes:
        raise Exception("No sample quotes found!")

    # TODO: Use the pythons standard library os class to find all
    # images within the images images_path directory
    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
 def test_ingestor__parse__txt_complete(self):
     """Test ingestor's parse function for text file."""
     result = Ingestor.parse(TestQuoteEngine.quote_txt_file)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].__repr__(),
                      '"To bork or not to bork" - Bork')
     self.assertEqual(result[1].__repr__(), '"He who smelt it..." - Stinky')
예제 #6
0
def setup():
    """Load all resources."""
    quotes = []
    quote_files = [
        '_data/DogQuotes/DogQuotesTXT.txt',
        '_data/DogQuotes/DogQuotesDOCX.docx',
        '_data/DogQuotes/DogQuotesPDF.pdf', '_data/DogQuotes/DogQuotesCSV.csv'
    ]
    ingestor = Ingestor()
    for q in quote_files:
        tmp = ingestor.parse(q)
        for t in tmp:
            quotes.append(t)
    imgs = []
    imgs += [each for each in os.listdir(images_path)]
    return quotes, imgs
 def test_ingestor__parse__csv_complete(self):
     """Test ingestor's parse function for CSV file."""
     result = Ingestor.parse(TestQuoteEngine.quote_csv_file)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].__repr__(), '"Chase the mailman" - Skittle')
     self.assertEqual(result[1].__repr__(),
                      '"When in doubt, go shoe-shopping" - Mr. Paws')
예제 #8
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for f in quote_files:
        quotes.extend(Ingestor.parse(f))

    images_path = "./_data/photos/dog/"

    imgs = None
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    static_path = './static'
    if not os.path.exists(static_path):
        os.mkdir(static_path)

    return quotes, imgs
예제 #9
0
def generate_meme(path=None, body=None, author=None):
    """ Generate a meme given an path and a quote """
    img = None
    quote = None

    if path is None:
        images = './_data/photos/dog/'
        imgs = []
        for root, dirs, files in os.walk(images):
            imgs = [os.path.join(root, name) for name in files]

        img = random.choice(imgs)
    else:
        img = path[0]

    if body is None:
        quote_files = [
            './_data/DogQuotes/DogQuotesTXT.txt',
            './_data/DogQuotes/DogQuotesDOCX.docx',
            './_data/DogQuotes/DogQuotesPDF.pdf',
            './_data/DogQuotes/DogQuotesCSV.csv'
        ]
        quotes = []
        for f in quote_files:
            quotes.extend(Ingestor.parse(f))

        quote = random.choice(quotes)
    else:
        if author is None:
            raise Exception('Author Required if Body is Used')
        quote = QuoteModel(body, author)

    meme = MemeEngine('./tmp')
    path = meme.make_meme(img, quote.body, quote.author)
    return path
예제 #10
0
def fallback_components():
    """Gets substitute image and quote."""
    quotes_path = "./_data/quotes"
    images_path = "./_data/photos"

    quotes = Ingestor.parse(files_list(quotes_path))
    imgs = files_list(images_path)

    return random.choice(quotes), random.choice(imgs)
def setup():
    """ Load all resources."""
    quotes_path = "./_data/quotes"
    images_path = "./_data/photos"

    quotes = Ingestor.parse(files_list(quotes_path))
    imgs = files_list(images_path)

    return quotes, imgs
 def test_ingestor__parse__pdf_complete(self):
     """Test ingestor's parse function for PDF file."""
     result = Ingestor.parse(TestQuoteEngine.quote_pdf_file)
     self.assertEqual(len(result), 3)
     self.assertEqual(result[0].__repr__(), '"Treat yo self" - Fluffles')
     self.assertEqual(result[1].__repr__(),
                      '"Life is like a box of treats" - Forrest Pup')
     self.assertEqual(
         result[2].__repr__(),
         '"It\'s the size of the fight in the dog" - Bark Twain')
 def test_ingestor__parse__docx_complete(self):
     """Test ingestor's parse function for Docx file."""
     result = Ingestor.parse(TestQuoteEngine.quote_docx_file)
     self.assertEqual(len(result), 4)
     self.assertEqual(result[0].__repr__(),
                      '"Bark like no one’s listening" - Rex')
     self.assertEqual(result[1].__repr__(), '"RAWRGWAWGGR" - Chewy')
     self.assertEqual(result[2].__repr__(),
                      '"Life is like peanut butter: crunchy" - Peanut')
     self.assertEqual(result[3].__repr__(),
                      '"Channel your inner husky" - Tiny')
예제 #14
0
    def __get_quotes(cls):
        """ Load quotes resources to list """

        quote_files = [
            './_data/DogQuotes/DogQuotesTXT.txt',
            './_data/DogQuotes/DogQuotesDOCX.docx',
            './_data/DogQuotes/DogQuotesPDF.pdf',
            './_data/DogQuotes/DogQuotesCSV.csv'
        ]
        quotes = []
        for file in quote_files:
            quotes.extend(Ingestor.parse(file))

        return quotes
예제 #15
0
def main():
    """Generates a meme and returns the output path.
    If an image, text and author are provided, they are used.
    Otherwise random inputs from the system are used.
    """
    if not args.image:
        images_path = '_data/photos/'
        image = images_path + random.choice(os.listdir(images_path))

    if not args.quote:
        quotes_path = '_data/quotes/'
        quote = random.choice(
            Ingestor.parse(quotes_path +
                           random.choice(os.listdir(quotes_path))))

    meme_generator = MemeEngine('./static')
    return meme_generator.make_meme(image, quote.body, quote.author)
예제 #16
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/quotes/quotesText.txt', './_data/quotes/quotesDocx.docx',
        './_data/quotes/quotesPDF.pdf', './_data/quotes/quotesCSV.csv'
    ]

    quotes = [
        quote for quote_file in quote_files
        for quote in Ingestor.parse(quote_file)
    ]

    images_path = "./_data/photos/"

    imgs = [images_path + image for image in os.listdir(images_path)]

    return quotes, imgs
예제 #17
0
def setup():
    """Load all resources."""
    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for each_file in quote_files:
        quotes.extend(Ingestor.parse(each_file))

    images_path = "./_data/photos/dog/"
    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
def generate_meme(path=None, body=None, author=None) -> str:
    """Generate a meme given an path and a quote.

    Arguments:
        path {str} -- file location for the input image.
        body {str} -- quote body.
        author {str} -- quote author.
    Returns:
        str -- file location for the output image.
    """
    img = ""
    quote = None

    if path is None:
        images = "./_data/photos/dog/"
        imgs = []
        for root, dirs, files in os.walk(images):
            imgs = [os.path.join(root, name) for name in files]

        img = random.choice(imgs)
    else:
        img = path

    if body is None:
        quote_files = ['./_data/DogQuotes/DogQuotesTXT.txt',
                       './_data/DogQuotes/DogQuotesDOCX.docx',
                       './_data/DogQuotes/DogQuotesPDF.pdf',
                       './_data/DogQuotes/DogQuotesCSV.csv']
        quotes = []
        for f in quote_files:
            quotes.extend(Ingestor.parse(f))

        quote = random.choice(quotes)
    else:
        if author is None:
            raise Exception('Author Required if Body is Used')
        quote = QuoteModel(body, author)

    font_path = './_data/fonts/LilitaOne-Regular.ttf'
    meme = MemeEngine('./tmp', font_path)
    path = meme.make_meme(img, quote.body, quote.author)
    return path
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for f in quote_files:
        quotes.extend(Ingestor.parse(f))

    images_path = "./_data/photos/dog/"

    _, _, paths = next(os.walk(images_path))
    imgs = [f'{images_path}{path}' for path in paths]

    return quotes, imgs
예제 #20
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for file in quote_files:
        for quote in Ingestor.parse(file):
            quotes.append(quote)

    images_path = "./_data/photos/dog/"
    imgs = os.listdir(images_path)
    imgs = [images_path + item for item in imgs]

    return quotes, imgs
예제 #21
0
def setup():
    """Load all resources."""
    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    # Parse all quote files into caption text and author
    quotes = []
    for f in quote_files:
        quotes.extend(Ingestor.parse(f))

    # Collect all images
    images_path = "./_data/photos/dog/"
    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
예제 #22
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for f in quote_files:
        try:
            quotes.extend(Ingestor.parse(f))
        except ValueError as error:
            print(f"ValueError: {error}")

    images_path = "./_data/photos/dog/"

    imgs = os.listdir(images_path)
    return quotes, imgs
예제 #23
0
def setup():
    """Load all resources."""
    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]
    quotes = []
    for f in quote_files:
        try:
            quotes.extend(Ingestor.parse(f))
        except ValueError as err:
            print(f"ValueError: {err}")

    images_path = "./_data/photos/dog/"
    images = []
    for root, dirs, files in os.walk(images_path):
        images = [os.path.join(root, name) for name in files]

    return quotes, images
예제 #24
0
def setup():
    """ Load all resources """

    quote_files = ["./_data/DogQuotes/DogQuotesTXT.txt",
                   "./_data/DogQuotes/DogQuotesDOCX.docx",
                   "./_data/DogQuotes/DogQuotesPDF.pdf",
                   "./_data/DogQuotes/DogQuotesCSV.csv"]

    # TODO: Use the Ingestor class to parse all files in the
    # quote_files variable
    quotes = []
    for f in quote_files:
        quotes.extend(Ingestor.parse(f))

    images_path = "./_data/photos/dog/"

    # TODO: Use the pythons standard library os class to find all
    # images within the images images_path directory
    imgs = glob.glob(images_path+"*.jpg") + glob.glob(images_path+"*.png")

    return quotes, imgs
예제 #25
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []
    for file in quote_files:
        quotes += Ingestor.parse(file)

    images_path = "./_data/photos/dog/"

    imgs = [
        os.path.join(images_path, file) for file in os.listdir(images_path)
        if file.endswith('.jpg')
    ]

    return quotes, imgs
예제 #26
0
def setup():
    """ Load all resources, select random images
    and quotes to generate memes as a default action """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = []

    for file in quote_files:
        quotes.extend(Ingestor.parse(file))

    images_path = "./_data/photos/dog/"

    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
예제 #27
0
def setup():
    """Load all resources."""
    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    # quote_files variable
    quotes = []
    for f in quote_files:
        quotes.extend(Ingestor.parse(f))

    images_path = "_data/photos/dog/"

    # images within the images images_path directory
    images_path = "_data/photos/dog/"
    imgs = []
    for root, dirs, files in os.walk(images_path):
        imgs = [os.path.join(root, name) for name in files]

    return quotes, imgs
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = list()
    for file in quote_files:
        quotes.extend(Ingestor.parse(file))

    images_path = "./_data/photos/dog/"

    # Read all files from the given path
    imgs = list()
    for root, dirs, files in os.walk(images_path):
        for file in files:
            imgs.append(os.path.join(root, file))

    return quotes, imgs
예제 #29
0
def setup():
    """ Load all resources """

    quote_files = [
        './_data/DogQuotes/DogQuotesTXT.txt',
        './_data/DogQuotes/DogQuotesDOCX.docx',
        './_data/DogQuotes/DogQuotesPDF.pdf',
        './_data/DogQuotes/DogQuotesCSV.csv'
    ]

    quotes = Ingestor.parse(quote_files)

    images_path = "./_data/photos/dog/"

    # TODO: Use the pythons standard library os class to find all
    # images within the images images_path directory
    imgs = []
    for _file in os.listdir(images_path):
        #if _file.endswith(".txt"):
        print(os.path.join(images_path, _file))
    imgs = None

    return quotes, imgs
예제 #30
0
def test_ingestor_parse_docx():
    assert Ingestor.parse(TEST_DOCX) == TEST_QUOTES