{"id":19545379,"url":"https://github.com/heschmat/project-meme-generator","last_synced_at":"2025-02-26T05:43:18.185Z","repository":{"id":237254831,"uuid":"338501410","full_name":"heschmat/project-meme-generator","owner":"heschmat","description":"A \"meme generator\" – a multimedia application to dynamically generate memes, including an image with an overlaid quote.","archived":false,"fork":false,"pushed_at":"2021-02-24T17:19:56.000Z","size":2601,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T19:26:06.535Z","etag":null,"topics":["object-oriented-programming","oop","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heschmat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-13T05:06:14.000Z","updated_at":"2021-04-13T21:25:18.000Z","dependencies_parsed_at":"2024-04-30T15:47:52.439Z","dependency_job_id":"7480868c-fdcc-4e23-b193-aa8283cd87ff","html_url":"https://github.com/heschmat/project-meme-generator","commit_stats":null,"previous_names":["heschmat/project-meme-generator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heschmat%2Fproject-meme-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heschmat%2Fproject-meme-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heschmat%2Fproject-meme-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heschmat%2Fproject-meme-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heschmat","download_url":"https://codeload.github.com/heschmat/project-meme-generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240801040,"owners_count":19859727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["object-oriented-programming","oop","python3"],"created_at":"2024-11-11T03:38:19.303Z","updated_at":"2025-02-26T05:43:18.136Z","avatar_url":"https://github.com/heschmat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Meme Generator\n\nThis projects covers apsects of developing a multimedia application to dynamically generate memes, including an image with an overlaid quote. It is designed to cover many areas of Python development. Especifically the roles of __data engineer__ and __full stack web developer__.\n\n## Project challenges:\n- Interact with a variety of complex filetypes.\n- Load quotes from a variety of filetypes (PDF, Word Documents, CSVs, Text files).\n- Load, manipulate, and save image files.\n- Accept dynamic user input through a command-line tool and a web service.\n\n## Libraries\n- requests\n- flask\n- pandas\n- pillow\n- python-docx\n\n`python-docx` is used to convert microsoft word documents to simple txt format. \n\n## Software\n- xpdf \n\nThe app uses the `subprocess` module to execute this CLI tool to convert data from PDF format to TXT format. \nTo install `pdftotext` on Mac or Windows refer to [here](https://www.xpdfreader.com/pdftotext-man.html).\nOn Linux you need to run `sudo apt-get install -y xpdf`. Note: sometimes you also have to run `sudo apt-get update` if the previous command throws an error.\n\n\n## Project Interface\nThe project can be run in two modes:\n1. To run the project in the command line, run `python meme.py`. At the command line, you could run `python meme.py --help` for an explanation of how to invoke the script.\n\n```\n(project_meme) C\u003e python meme.py --help                                                                                 \nusage: meme.py [-h] [--path PATH] [--body BODY] [--author AUTHOR]                                                                                                                                                                               \nGenerate Meme.                                                                                                                                                                                                                                  \noptional arguments:                                                                                                       \n-h, --help       show this help message and exit                                                                        \n--path PATH      The path to the image file.                                                                            \n--body BODY      The text/quote to put on image.                                                                        \n--author AUTHOR  The author of the quote. \n\n```\n\nA sample command would be:\n```\n(project_meme) C\u003e python meme.py --body \"Carpe diem, seize the day people.\" --author \"John Keating\"                     \n[Info] Image Saved to ./tmp\\tmp-1614131312.6785374.png.                                                                 \n./tmp\\tmp-1614131312.6785374.png                                                                                                                                                                                                                \n(project_meme) C\u003e  \n```\nThis way, the meme will be generated in `tmp` directory, with the requested parameters. \nThe parameters are optional; if no parameters is passed, then a random meme will be created. \nThe script returns a path to a generated image.\n\n2. To run the project in the app, run `python app.py` and go to `http://127.0.0.1:5000/`.\n\n```\n(project_meme) C\u003e python app.py                                                                                          \n* Serving Flask app \"app\" (lazy loading)                                                                                \n* Environment: production                                                                                                \nWARNING: This is a development server. Do not use it in a production deployment.                                       \nUse a production WSGI server instead.                                                                                 \n* Debug mode: off                                                                                                       \n* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) \n```\n\nThe app uses the `Quote Engine` Module and `Meme Generator` module to generate a random captioned image.\nIt uses the `requests` package to fetch an image from a user submitted URL.\n\n\n## Project Scaffolding\n\nThe structure of the project is as follows: \n\nThe `QuoteEngine` module is responsible for ingesting many types of files that contain quotes.\nThis module is composed of many classes and show cases understanding of complex inheritance, abstract classes, classmethods, strategy objects and other fundamental programming principles.\n\nThe `MemeEngine` Module is responsible for manipulating and drawing text onto images.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheschmat%2Fproject-meme-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheschmat%2Fproject-meme-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheschmat%2Fproject-meme-generator/lists"}