2.2 KiB
2.2 KiB
Calendar Generator Flask App
This python application generates a pdf-file based calendar with images and associated texts for each day. It's designed to read images and texts from specified directories and display them in a calendar format. Per DIN A4 page 4 days get displayed.
Setup
Prerequisites
- Python 3.x
- Basic understanding of Python and Flask
- reportlab (python modul)
- os (python modul)
- re (python modul)
- textwrap (python modul)
Installation
-
Clone or Download the Repository
Clone this repository if you're familiar with Git, or simply download it as a ZIP file and extract it.
-
Install Required Packages
reportlab is required and can be installed via pip:
pip install reportlab
Folder Structure
Your project directory should be structured as follows:
project_folder/
│ app.py
│ README.md
│
├───images/
│ │ 2024-01-15.jpg
│ │ 2024-01-16.png
│ ...
│
└───texts/
│ 2024-01-15.txt
│ 2024-01-16.txt
...
app.py
: Main python application file.images/
: Directory for storing calendar images. Images should be namedYYYY-MM-DD.extension
.texts/
: Directory for storing text files corresponding to each day, namedYYYY-MM-DD.txt
.
Running the Application
- Navigate to the project folder in your command line or terminal.
- Execute the Flask application:
python app.py
- "PDF created successfully" shoud appear, then you can access the pdf file which is in the same directory as the script.
How It Works
- Each day on the calendar can have an image and a text associated with it.
- Images are read from
images/
, and text files are fromtexts/
. - Files are matched based on their filenames, formatted as
YYYY-MM-DD
. - The calendar is dynamically generated based on available images and texts.
- If an image or text is not available for a specific day, it will be displayed without that content.
Notes
- Text for each day should be concise. Lengthy texts may be truncated in the display to maintain the layout of the calendar.
Copyright and license
This code is for my very good friend Felix W.. Code copyright 2024 Lorenz B.