help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
weather-chatbot
RSK World
weather-chatbot
Weather Chatbot - Python + Flask + OpenWeatherMap + OpenAI + Weather Forecast + Weather Alerts + Natural Language Processing
weather-chatbot
  • __pycache__
  • cache
  • logs
  • scripts
  • sessions
  • static
  • templates
  • tests
  • utils
  • .dockerignore778 B
  • .env.example1.5 KB
  • .gitignore2.4 KB
  • .pre-commit-config.yaml1 KB
  • API.md7.9 KB
  • CHANGELOG.md2.4 KB
  • CHECKLIST.md5.4 KB
  • CONTRIBUTING.md1.9 KB
  • Dockerfile1.4 KB
  • FEATURES.md7.1 KB
  • FINAL_CHECK.md6.7 KB
  • GITHUB_RELEASE_INSTRUCTIONS.md5.4 KB
  • INSTALL.md4 KB
  • LICENSE1.3 KB
  • MANIFEST.in553 B
  • Makefile2 KB
  • PROJECT_SUMMARY.md12.9 KB
  • README.md7.2 KB
  • RELEASE_NOTES_v1.0.0.md8.9 KB
  • VERIFICATION_REPORT.md9.2 KB
  • app.py22.2 KB
  • chatbot.py1.7 KB
  • config.py4.9 KB
  • docker-compose.yml2.2 KB
  • nginx.conf2.3 KB
  • pytest.ini549 B
  • requirements.txt1.9 KB
  • run.py3.1 KB
  • setup.py3.1 KB
  • weather_api.py578 B
README.mdconfig.cpython-313.pycchatbot.pypytest.ini
README.md
Raw Download

README.md

# Weather Chatbot ๐ŸŒค๏ธ

**Author:** RSK World (https://rskworld.in)
**Founded by:** Molla Samser
**Designer & Tester:** Rima Khatun
**Contact:** +91 93305 39277, hello@rskworld.in, support@rskworld.in
**Location:** Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147
**Year:** 2026

A sophisticated weather chatbot providing real-time weather forecasts, alerts, and comprehensive weather information using natural language processing.

## ๐ŸŒŸ Features

- **Real-time Weather Data**: Get current weather conditions for any city worldwide
- **Weather Forecasts**: 5-day weather forecasts with detailed information
- **Weather Alerts**: Real-time weather alerts and warnings for specific locations
- **Natural Language Processing**: Chat interface powered by OpenAI API for intelligent conversations
- **Location-based Services**: Automatic location detection and weather data
- **Web Interface**: Beautiful, responsive web interface
- **API Endpoints**: RESTful API for integration with other services
- **Multiple Query Types**: Support for current weather, forecasts, and alerts
- **Fallback Support**: Works without OpenAI API using keyword matching

## ๐Ÿ› ๏ธ Technologies Used

- **Python 3.8+**: Core programming language
- **Flask**: Web framework for the application
- **OpenWeatherMap API**: Weather data provider
- **OpenAI API**: Natural language processing (optional)
- **HTML/CSS/JavaScript**: Frontend interface
- **Bootstrap**: UI framework for responsive design
- **Requests**: HTTP library for API calls

## ๐Ÿ“‹ Prerequisites

- Python 3.8 or higher
- OpenWeatherMap API key (free at https://openweathermap.org/api)
- OpenAI API key (optional, for enhanced NLP)
- Git for cloning the repository

## ๐Ÿš€ Quick Start

### 1. Clone the Repository

```bash
git clone https://github.com/rskworld/weather-chatbot.git
cd weather-chatbot
```

### 2. Create Virtual Environment

```bash
python -m venv venv

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate
```

### 3. Install Dependencies

```bash
pip install -r requirements.txt
```

### 4. Configure Environment Variables

```bash
# Copy the example environment file
cp .env.example .env

# Edit .env file with your API keys
# OPENWEATHER_API_KEY=your_openweathermap_api_key_here
# OPENAI_API_KEY=your_openai_api_key_here
```

### 5. Run the Application

```bash
python app.py
```

The application will be available at `http://localhost:5000`

## ๐Ÿ”ง Configuration

### Required Environment Variables

- `OPENWEATHER_API_KEY`: Your OpenWeatherMap API key (required)
- `OPENAI_API_KEY`: Your OpenAI API key (optional, for enhanced NLP)

### Optional Configuration

- `SECRET_KEY`: Flask secret key for sessions
- `HOST`: Server host (default: 0.0.0.0)
- `PORT`: Server port (default: 5000)
- `WEATHER_UNITS`: Temperature units (metric/imperial/kelvin)
- `DEFAULT_CITY`: Default city for weather queries

## ๐Ÿ“ก API Endpoints

### Chat Interface
- `POST /chat` - Send chat message and get weather response

### Weather Data
- `GET /weather/<city>` - Get current weather for a city
- `GET /forecast/<city>` - Get 5-day forecast for a city
- `GET /alerts/<city>` - Get weather alerts for a city

### System
- `GET /health` - Health check endpoint
- `GET /` - Main web interface

## ๐Ÿ’ฌ Usage Examples

### Basic Weather Queries
- "What's the weather in London?"
- "How's the weather in New York today?"
- "Tell me about the weather in Tokyo"

### Forecast Queries
- "What's the forecast for Paris tomorrow?"
- "Will it rain in Mumbai this week?"
- "Weather forecast for Delhi next 5 days"

### Alert Queries
- "Any weather alerts for Sydney?"
- "Are there warnings for Beijing?"
- "Weather alerts in Dubai"

## ๐ŸŽฏ Supported Features

### Weather Information
- Temperature (current, feels like)
- Humidity and pressure
- Wind speed and direction
- Weather description and conditions
- Visibility
- Sunrise and sunset times

### Forecast Data
- Hourly forecasts (3-hour intervals)
- Daily weather summaries
- Temperature trends
- Precipitation predictions
- Weather condition changes

### Weather Alerts
- Severe weather warnings
- Temperature alerts
- Storm warnings
- Precipitation alerts
- Custom alert thresholds

## ๐ŸŒ Supported Cities

The chatbot supports weather queries for cities worldwide, including:
- Major international cities (London, New York, Paris, Tokyo)
- Indian cities (Delhi, Mumbai, Kolkata, Chennai, Bangalore)
- Regional cities and towns
- Custom location support

## ๐Ÿ”’ Security Features

- Environment variable configuration
- Secure session handling
- Input validation and sanitization
- Rate limiting protection
- CORS configuration
- Error handling and logging

## ๐Ÿ“Š Logging and Monitoring

- Comprehensive logging system
- Error tracking and reporting
- Performance monitoring
- API usage statistics
- Health check endpoints

## ๐Ÿงช Testing

```bash
# Run unit tests
python -m pytest tests/

# Run with coverage
python -m pytest --cov=app tests/

# Run specific test file
python -m pytest tests/test_weather_api.py
```

## ๐Ÿ“ Project Structure

```
weather-chatbot/
โ”œโ”€โ”€ app.py # Main Flask application
โ”œโ”€โ”€ config.py # Configuration settings
โ”œโ”€โ”€ requirements.txt # Python dependencies
โ”œโ”€โ”€ .env.example # Environment variables template
โ”œโ”€โ”€ README.md # Project documentation
โ”œโ”€โ”€ static/ # Static files (CSS, JS, images)
โ”œโ”€โ”€ templates/ # HTML templates
โ”œโ”€โ”€ utils/ # Utility functions
โ”œโ”€โ”€ tests/ # Test files
โ””โ”€โ”€ logs/ # Application logs
```

## ๐Ÿš€ Deployment

### Docker Deployment

```bash
# Build Docker image
docker build -t weather-chatbot .

# Run container
docker run -p 5000:5000 --env-file .env weather-chatbot
```

### Heroku Deployment

```bash
# Install Heroku CLI
heroku create your-app-name

# Set environment variables
heroku config:set OPENWEATHER_API_KEY=your_key
heroku config:set OPENAI_API_KEY=your_key

# Deploy
git push heroku main
```

## ๐Ÿค Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## ๐Ÿ“ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ“ž Support

For support and inquiries:

- **Email:** hello@rskworld.in, support@rskworld.in
- **Phone:** +91 93305 39277
- **Website:** https://rskworld.in
- **Location:** Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147

## ๐Ÿ™ Acknowledgments

- OpenWeatherMap for providing weather data API
- OpenAI for natural language processing capabilities
- Flask framework for web development
- Bootstrap for responsive UI components

---

**ยฉ 2026 RSK World. All rights reserved.**
*Content used for educational purposes only. View Disclaimer: https://rskworld.in/disclaimer.php*
config.cpython-313.pyc

This file cannot be displayed in the browser.

Download File
chatbot.py
Raw Download
Find: Go to:
# Author: RSK World
# Website: https://rskworld.in
# Email: your.email@example.com
# Year: 2026

from weather_api import get_weather

class Chatbot:
    def get_response(self, user_input):
        # This is a simple placeholder. A more advanced implementation
        # would use a proper NLP library to parse user intent.
        if "weather" in user_input.lower():
            location = self._extract_location(user_input)
            if location:
                weather_data = get_weather(location)
                if "error" in weather_data:
                    return f"Sorry, I couldn't retrieve the weather for {location}. {weather_data['error']}"
                else:
                    return self._format_weather_response(weather_data)
            else:
                return "Please specify a location for the weather forecast."
        else:
            return "I can only provide weather information. Please ask me about the weather."

    def _extract_location(self, user_input):
        # Simple location extraction. This should be improved with a more robust method.
        words = user_input.split()
        for i, word in enumerate(words):
            if word.lower() == "in" and i + 1 < len(words):
                return words[i+1]
        return None

    def _format_weather_response(self, data):
        if "main" in data and "weather" in data:
            city = data.get("name", "Unknown location")
            temp = data["main"].get("temp", "N/A")
            description = data["weather"][0].get("description", "No description")
            return f"The weather in {city} is currently {temp}ยฐC with {description}."
        else:
            return "Sorry, I couldn't understand the weather data."
41 linesโ€ข1.7 KB
python
pytest.ini
Raw Download
Find: Go to:
# Pytest Configuration
# ====================
#
# Author: RSK World (https://rskworld.in)
# Year: 2026

[pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts = 
    -v
    --tb=short
    --strict-markers
    --disable-warnings
    --cov=.
    --cov-report=term-missing
    --cov-report=html
    --cov-report=xml
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    integration: marks tests as integration tests
    unit: marks tests as unit tests
25 linesโ€ข549 B
ini

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer