From cb7d7b64168bbca8a9f33ee1f166fcc689cab54c Mon Sep 17 00:00:00 2001 From: MeghPatel-007 Date: Thu, 23 Oct 2025 11:53:49 +0530 Subject: [PATCH] Add QR Code Generator with optional URL shortening --- .../MiniProjects/Qr Code Generator/README.md | 59 ++++++++++++++++++ .../Qr Code Generator/qr_code_generator.py | 47 ++++++++++++++ .../qr_code_generator_shorten_url.py | 27 ++++++++ .../Qr Code Generator/qr_codes/google.png | Bin 0 -> 454 bytes .../Qr Code Generator/tempCodeRunnerFile.py | 1 + 5 files changed, 134 insertions(+) create mode 100644 Domains/Frontend/MiniProjects/Qr Code Generator/README.md create mode 100644 Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator.py create mode 100644 Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator_shorten_url.py create mode 100644 Domains/Frontend/MiniProjects/Qr Code Generator/qr_codes/google.png create mode 100644 Domains/Frontend/MiniProjects/Qr Code Generator/tempCodeRunnerFile.py diff --git a/Domains/Frontend/MiniProjects/Qr Code Generator/README.md b/Domains/Frontend/MiniProjects/Qr Code Generator/README.md new file mode 100644 index 00000000..b1b92f90 --- /dev/null +++ b/Domains/Frontend/MiniProjects/Qr Code Generator/README.md @@ -0,0 +1,59 @@ +**Contributor:** MeghPatel-007 + +# 📱 QR Code Generator + +A simple and beginner-friendly **Python project** that generates QR codes from any link or text. It can optionally shorten long URLs using the **TinyURL API** for cleaner, shareable QR codes! 🔗📸 + +--- + +## 📑 Table of Contents + +1. [✨ Features](#-features) +2. [🎯 How to Use](#-how-to-use) +3. [📂 Folder Structure](#-folder-structure) +4. [📸 Screenshots](#-screenshots) +5. [📝 License](#-license) + +--- + +## ✨ Features + +- 🔗 Generate QR codes from links or text +- ✂️ Optional **URL shortening** via TinyURL API +- 💾 Automatically saves QR code images to your local folder +- 🧱 Custom file naming for better organization +- 💡 Beginner-friendly and well-commented Python script + +--- + +## 🎯 How to Use + +1. Clone the repository and navigate to the project folder. +2. Install dependencies: +```bash +pip install qrcode requests +python qr_generator.py + +-- +## 📂 Folder Structure + +QR-Code-Generator/ +├─ qr_code_generator.py # Main Python script +├─ qr_codes/ # Folder to store generated QR codes +├─ qr_code_generator_shorten_url.py #for generating short url qr codes +└─ README.md # This README file + +--- + +## 📝 License + +This project is licensed under the **MIT License**. See the LICENSE file for details. + +--- + +## 🙏 Thank You + +Thanks for checking out my QR Code Generator project! +I hope you enjoy generating QR codes and find it useful. 🔗✨ + +Feel free to leave feedback or suggestions for improvement! diff --git a/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator.py b/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator.py new file mode 100644 index 00000000..c79540ff --- /dev/null +++ b/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator.py @@ -0,0 +1,47 @@ +import qrcode +import os +import requests + +def shorten_url(long_url): + """ + Shortens a URL using the TinyURL API. + """ + api_url = f"http://tinyurl.com/api-create.php?url={long_url}" + response = requests.get(api_url) + if response.status_code == 200: + return response.text + else: + raise Exception("Failed to shorten URL") + +# Get user input +data = input("Enter the link: ") +shorten = input("Do you want to shorten the URL? (y/n): ").lower() + +if shorten == "y": + try: + data = shorten_url(data) + print(f"Shortened URL: {data}") + except Exception as e: + print(e) + print("Proceeding with original URL...") + +name = input("Enter the name of the file (without extension): ") + +# Create QR code +qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, +) +qr.add_data(data) +qr.make(fit=True) +img = qr.make_image(fill_color="black", back_color="white") + +# Save to 'qr_codes' folder relative to this script +save_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "qr_codes") +os.makedirs(save_path, exist_ok=True) +file_path = os.path.join(save_path, f"{name}.png") +img.save(file_path) + +print(f"✅ QR code generated and saved to {file_path}") diff --git a/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator_shorten_url.py b/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator_shorten_url.py new file mode 100644 index 00000000..50e1ee4d --- /dev/null +++ b/Domains/Frontend/MiniProjects/Qr Code Generator/qr_code_generator_shorten_url.py @@ -0,0 +1,27 @@ +import qrcode +import os + +# Get user input +data = input("Enter the link or text: ") +name = input("Enter the name of the file (without extension): ") + +# Create QR code +qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, +) +qr.add_data(data) +qr.make(fit=True) +img = qr.make_image(fill_color="black", back_color="white") + +# Save to a folder named 'qr_codes' relative to this script +save_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "qr_codes") +os.makedirs(save_path, exist_ok=True) # creates folder if it doesn't exist + +# Save the image +file_path = os.path.join(save_path, f"{name}.png") +img.save(file_path) + +print(f"QR code generated and saved to {file_path}") diff --git a/Domains/Frontend/MiniProjects/Qr Code Generator/qr_codes/google.png b/Domains/Frontend/MiniProjects/Qr Code Generator/qr_codes/google.png new file mode 100644 index 0000000000000000000000000000000000000000..acf4b81054fb0ffee236cd8f0085eb214e5efb0d GIT binary patch literal 454 zcmV;%0XhDOP)qKj&+DgYj`4329h(-n8On zPgIqv$LVt#O7tn8L2F(;SB<~Mrue=&FMGl&n$v}9mp>A(o_+7K*AqARq0G<=u(v%_ z1r9Y+{?&~G;bHid{p+f2j7Q}@0@Oy zJd})?Uz!s9kILS@bQOxTDds1+@B*mschY`lx4YVXXqG2o#h^IsgCw07*qoM6N<$g0@rD>Hq)$ literal 0 HcmV?d00001 diff --git a/Domains/Frontend/MiniProjects/Qr Code Generator/tempCodeRunnerFile.py b/Domains/Frontend/MiniProjects/Qr Code Generator/tempCodeRunnerFile.py new file mode 100644 index 00000000..8ea9f3a2 --- /dev/null +++ b/Domains/Frontend/MiniProjects/Qr Code Generator/tempCodeRunnerFile.py @@ -0,0 +1 @@ +import requests \ No newline at end of file