From 8b6c5550c9f3dad8ca766db7388be1ebd7b21d44 Mon Sep 17 00:00:00 2001 From: pulkittillion Date: Fri, 31 Oct 2025 18:55:55 +0530 Subject: [PATCH] Add: CLI - PincodeLookup Indian Address Resolver --- .../cli/MiniProjects/PincodeLookup/README.md | 22 ++++++++ .../PincodeLookup/pincode_lookup.py | 55 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 Domains/cli/MiniProjects/PincodeLookup/README.md create mode 100644 Domains/cli/MiniProjects/PincodeLookup/pincode_lookup.py diff --git a/Domains/cli/MiniProjects/PincodeLookup/README.md b/Domains/cli/MiniProjects/PincodeLookup/README.md new file mode 100644 index 00000000..5d0d94c5 --- /dev/null +++ b/Domains/cli/MiniProjects/PincodeLookup/README.md @@ -0,0 +1,22 @@ +# PincodeLookup: Indian Address Resolver + +A lightweight CLI tool that resolves Indian pincodes into detailed post office information—including delivery status, district, and state—using the public [PostalPincode.in API](https://api.postalpincode.in). + +## 💡 Real-Life Use Cases +- **E-commerce**: Validate user addresses during checkout +- **Logistics**: Check if a location supports delivery +- **Forms & UX**: Auto-fill city/district from pincode +- **Students**: Learn how India’s postal system is structured + +## Features +- Accepts any valid 6-digit Indian pincode +- Shows all associated post offices +- Highlights **delivery vs non-delivery** status +- Clean, emoji-enhanced terminal output +- Zero dependencies (pure Python) + +## How to Run +1. Make sure you have Python 3 installed. +2. Navigate to the project folder: + ```bash + cd Domains/CLI/MiniProjects/PincodeLookup \ No newline at end of file diff --git a/Domains/cli/MiniProjects/PincodeLookup/pincode_lookup.py b/Domains/cli/MiniProjects/PincodeLookup/pincode_lookup.py new file mode 100644 index 00000000..630fc296 --- /dev/null +++ b/Domains/cli/MiniProjects/PincodeLookup/pincode_lookup.py @@ -0,0 +1,55 @@ +import urllib.request +import json +import sys + +def fetch_pincode_data(pincode): + """Fetch post office data for a given Indian pincode.""" + try: + url = f"https://api.postalpincode.in/pincode/{pincode}" + with urllib.request.urlopen(url) as response: + return json.loads(response.read().decode()) + except Exception as e: + return None + +def display_results(data): + """Display formatted post office information.""" + if not data or data[0].get("Status") != "Success": + print("\033[91m❌ Invalid or unknown pincode. Please try again.\033[0m") + return + + result = data[0] + offices = result["PostOffice"] + print(f"\n\033[1;94m📬 Found {result['Message']}\033[0m") + print("=" * 60) + + for i, office in enumerate(offices, 1): + name = office.get("Name", "N/A") + district = office.get("District", "N/A") + state = office.get("State", "N/A") + delivery = office.get("DeliveryStatus", "N/A") + branch = office.get("BranchType", "N/A") + + print(f"\n📍 Office {i}: \033[1m{name}\033[0m") + print(f" 🏙️ District: {district}") + print(f" 🏛️ State: {state}") + print(f" 🚚 Delivery: {'✅ Yes' if delivery == 'Delivery' else '❌ No'}") + print(f" 🏢 Type: {branch}") + + print("\n" + "=" * 60 + "\n") + +def main(): + print("\033[1;92m🇮🇳 PincodeLookup: Indian Address Resolver\033[0m") + print("\033[90mEnter a 6-digit Indian pincode to see associated post offices.\033[0m\n") + + pincode = input("Enter Pincode: ").strip() + + if not pincode.isdigit() or len(pincode) != 6: + print("\033[91m❌ Please enter a valid 6-digit pincode.\033[0m") + return + + print("\n🔍 Looking up...\n") + data = fetch_pincode_data(pincode) + display_results(data) + +if __name__ == "__main__": + main() \ No newline at end of file