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
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
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 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)
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')
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
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')
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
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')
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
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 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)
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
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
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
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
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
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
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
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
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
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
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
def test_ingestor_parse_docx(): assert Ingestor.parse(TEST_DOCX) == TEST_QUOTES