Spaces:
Running
Running
Automation
#3
by
Kakashi75
- opened
- .env.example +0 -12
- .gitignore +0 -48
- Dockerfile +0 -30
- QUICKSTART.md +0 -109
- README.md +6 -291
- SECRETS_SETUP.md +0 -361
- app.py +0 -184
- config.json.example +0 -27
- credentials.json.example +0 -12
- data/processed/digiwords_grouped.json +0 -962
- data/processed/processed_dialects.json +0 -0
- index.html +537 -376
- requirements.txt +0 -6
- scripts/automation_runner.py +0 -169
- scripts/check_sheet_names.py +0 -63
- scripts/csv_to_json.py +0 -160
- scripts/file_watcher.py +0 -129
- scripts/sheets_sync.py +0 -190
- sheets_output/digiwords_grouped.csv +0 -179
- sheets_output/processed_dialects.csv +0 -0
.env.example
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
# Hugging Face Spaces Environment Variables
|
| 2 |
-
# Copy this file to .env for local testing
|
| 3 |
-
# On HF Spaces, set these as Space secrets
|
| 4 |
-
|
| 5 |
-
# Full JSON content of config.json (paste the entire JSON as one line or use multiline)
|
| 6 |
-
HF_CONFIG_JSON='{"google_sheets":{"enabled":true,"sync_interval_minutes":5,"credentials_file":"credentials.json","spreadsheets":[{"id":"YOUR_SPREADSHEET_ID_1","sheet_name":"processed_dialects","output_file":"sheets_output/processed_dialects.csv"},{"id":"YOUR_SPREADSHEET_ID_2","sheet_name":"digiwords_grouped","output_file":"sheets_output/digiwords_grouped.csv"}]},"file_watcher":{"enabled":true,"watch_directory":"sheets_output","file_patterns":["*.csv"]},"output":{"json_directory":"data/processed"}}'
|
| 7 |
-
|
| 8 |
-
# Full JSON content of credentials.json (paste the entire service account JSON)
|
| 9 |
-
HF_CREDENTIALS_JSON='{"type":"service_account","project_id":"your-project","private_key_id":"...","private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","client_email":"...@...iam.gserviceaccount.com","client_id":"...","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url":"..."}'
|
| 10 |
-
|
| 11 |
-
# Optional: Port for local development (HF Spaces uses 7860 by default)
|
| 12 |
-
PORT=7860
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.gitignore
DELETED
|
@@ -1,48 +0,0 @@
|
|
| 1 |
-
# Python
|
| 2 |
-
__pycache__/
|
| 3 |
-
*.py[cod]
|
| 4 |
-
*$py.class
|
| 5 |
-
*.so
|
| 6 |
-
.Python
|
| 7 |
-
env/
|
| 8 |
-
venv/
|
| 9 |
-
ENV/
|
| 10 |
-
build/
|
| 11 |
-
develop-eggs/
|
| 12 |
-
dist/
|
| 13 |
-
downloads/
|
| 14 |
-
eggs/
|
| 15 |
-
.eggs/
|
| 16 |
-
lib/
|
| 17 |
-
lib64/
|
| 18 |
-
parts/
|
| 19 |
-
sdist/
|
| 20 |
-
var/
|
| 21 |
-
wheels/
|
| 22 |
-
*.egg-info/
|
| 23 |
-
.installed.cfg
|
| 24 |
-
*.egg
|
| 25 |
-
|
| 26 |
-
# Google Credentials (IMPORTANT: Never commit these!)
|
| 27 |
-
credentials.json
|
| 28 |
-
config.json
|
| 29 |
-
token.json
|
| 30 |
-
*.json.backup
|
| 31 |
-
|
| 32 |
-
# Environment variables
|
| 33 |
-
.env
|
| 34 |
-
.env.local
|
| 35 |
-
|
| 36 |
-
# IDE
|
| 37 |
-
.vscode/
|
| 38 |
-
.idea/
|
| 39 |
-
*.swp
|
| 40 |
-
*.swo
|
| 41 |
-
*~
|
| 42 |
-
|
| 43 |
-
# OS
|
| 44 |
-
.DS_Store
|
| 45 |
-
Thumbs.db
|
| 46 |
-
|
| 47 |
-
# Logs
|
| 48 |
-
*.log
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dockerfile
DELETED
|
@@ -1,30 +0,0 @@
|
|
| 1 |
-
FROM python:3.11-slim
|
| 2 |
-
|
| 3 |
-
# Set working directory
|
| 4 |
-
WORKDIR /app
|
| 5 |
-
|
| 6 |
-
# Install system dependencies
|
| 7 |
-
RUN apt-get update && apt-get install -y \
|
| 8 |
-
git \
|
| 9 |
-
&& rm -rf /var/lib/apt/lists/*
|
| 10 |
-
|
| 11 |
-
# Copy requirements first for better caching
|
| 12 |
-
COPY requirements.txt .
|
| 13 |
-
|
| 14 |
-
# Install Python dependencies
|
| 15 |
-
RUN pip install --no-cache-dir -r requirements.txt
|
| 16 |
-
|
| 17 |
-
# Copy application files
|
| 18 |
-
COPY . .
|
| 19 |
-
|
| 20 |
-
# Create directories for output
|
| 21 |
-
RUN mkdir -p sheets_output data/processed
|
| 22 |
-
|
| 23 |
-
# Expose port 7860 (HF Spaces default)
|
| 24 |
-
EXPOSE 7860
|
| 25 |
-
|
| 26 |
-
# Set environment variable for port
|
| 27 |
-
ENV PORT=7860
|
| 28 |
-
|
| 29 |
-
# Run the application
|
| 30 |
-
CMD ["python", "app.py"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QUICKSTART.md
DELETED
|
@@ -1,109 +0,0 @@
|
|
| 1 |
-
# Quick Start Guide
|
| 2 |
-
|
| 3 |
-
## For Local Development
|
| 4 |
-
|
| 5 |
-
### 1. Install Dependencies
|
| 6 |
-
|
| 7 |
-
```bash
|
| 8 |
-
cd /home/kashikuldeep/Desktop/dialect-map
|
| 9 |
-
|
| 10 |
-
# Install Python dependencies
|
| 11 |
-
pip install -r requirements.txt
|
| 12 |
-
# OR if you have externally managed Python:
|
| 13 |
-
pipx install -r requirements.txt
|
| 14 |
-
```
|
| 15 |
-
|
| 16 |
-
### 2. Configure Secrets
|
| 17 |
-
|
| 18 |
-
Choose ONE of these methods:
|
| 19 |
-
|
| 20 |
-
#### Method A: Using actual config files (easier for local dev)
|
| 21 |
-
|
| 22 |
-
```bash
|
| 23 |
-
# Copy templates
|
| 24 |
-
cp config.json.example config.json
|
| 25 |
-
cp credentials.json.example credentials.json
|
| 26 |
-
|
| 27 |
-
# Edit with your actual Google Cloud credentials
|
| 28 |
-
nano config.json # Update spreadsheet IDs
|
| 29 |
-
nano credentials.json # Paste your service account JSON
|
| 30 |
-
```
|
| 31 |
-
|
| 32 |
-
#### Method B: Using environment variables (simulates HF Spaces)
|
| 33 |
-
|
| 34 |
-
```bash
|
| 35 |
-
# Copy .env template
|
| 36 |
-
cp .env.example .env
|
| 37 |
-
|
| 38 |
-
# Edit .env with your actual JSON content
|
| 39 |
-
nano .env
|
| 40 |
-
|
| 41 |
-
# Set your actual spreadsheet IDs and credentials
|
| 42 |
-
```
|
| 43 |
-
|
| 44 |
-
### 3. Run the Application
|
| 45 |
-
|
| 46 |
-
```bash
|
| 47 |
-
# Start the app
|
| 48 |
-
python3 app.py
|
| 49 |
-
|
| 50 |
-
# Open your browser to:
|
| 51 |
-
# http://localhost:7860/index.html
|
| 52 |
-
```
|
| 53 |
-
|
| 54 |
-
The app will:
|
| 55 |
-
- ✅ Load secrets from environment or files
|
| 56 |
-
- ✅ Start Google Sheets sync automation (every 5 minutes)
|
| 57 |
-
- ✅ Serve the interactive map on port 7860
|
| 58 |
-
|
| 59 |
-
---
|
| 60 |
-
|
| 61 |
-
## For Hugging Face Spaces Deployment
|
| 62 |
-
|
| 63 |
-
See **[SECRETS_SETUP.md](SECRETS_SETUP.md)** for complete deployment instructions.
|
| 64 |
-
|
| 65 |
-
**Quick summary:**
|
| 66 |
-
1. Create a new Space on Hugging Face
|
| 67 |
-
2. Add two secrets in Space settings:
|
| 68 |
-
- `HF_CONFIG_JSON` - your entire config.json content
|
| 69 |
-
- `HF_CREDENTIALS_JSON` - your entire credentials.json content
|
| 70 |
-
3. Push your code to the Space
|
| 71 |
-
4. Access your live app!
|
| 72 |
-
|
| 73 |
-
---
|
| 74 |
-
|
| 75 |
-
## Files You Need
|
| 76 |
-
|
| 77 |
-
| File | Purpose | How to Get |
|
| 78 |
-
|------|---------|------------|
|
| 79 |
-
| `config.json` | App configuration with spreadsheet IDs | Copy from `config.json.example` and edit |
|
| 80 |
-
| `credentials.json` | Google service account credentials | Download from Google Cloud Console |
|
| 81 |
-
|
| 82 |
-
**Important:** These files are in `.gitignore` - never commit them!
|
| 83 |
-
|
| 84 |
-
---
|
| 85 |
-
|
| 86 |
-
## Troubleshooting
|
| 87 |
-
|
| 88 |
-
**"ModuleNotFoundError: No module named 'google'"**
|
| 89 |
-
- Install dependencies: `pip install -r requirements.txt`
|
| 90 |
-
|
| 91 |
-
**"HF_CONFIG_JSON not found"**
|
| 92 |
-
- You need to either:
|
| 93 |
-
- Create `config.json` file locally, OR
|
| 94 |
-
- Set `HF_CONFIG_JSON` environment variable
|
| 95 |
-
|
| 96 |
-
**"Credentials file not found"**
|
| 97 |
-
- Follow [SECRETS_SETUP.md](SECRETS_SETUP.md) steps 1.1-1.4 to get credentials
|
| 98 |
-
|
| 99 |
-
---
|
| 100 |
-
|
| 101 |
-
## What Gets Created
|
| 102 |
-
|
| 103 |
-
When you run `app.py`:
|
| 104 |
-
- `config.json` - Created from `HF_CONFIG_JSON` env var (if set)
|
| 105 |
-
- `credentials.json` - Created from `HF_CREDENTIALS_JSON` env var (if set)
|
| 106 |
-
- `sheets_output/*.csv` - Downloaded from Google Sheets
|
| 107 |
-
- `data/processed/*.json` - Converted from CSV files
|
| 108 |
-
|
| 109 |
-
All of these are in `.gitignore` and safe to regenerate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -1,296 +1,11 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: purple
|
| 6 |
-
sdk:
|
| 7 |
pinned: false
|
| 8 |
-
license:
|
| 9 |
---
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
**Interactive web-based visualization of Telugu dialect words across Telangana and Andhra Pradesh districts.**
|
| 14 |
-
|
| 15 |
-
## 🎯 Features
|
| 16 |
-
|
| 17 |
-
- **48 Districts**: 33 Telangana + 15 Andhra Pradesh districts
|
| 18 |
-
- **Dynamic Data Loading**: Automatically loads data from JSON sources
|
| 19 |
-
- **Interactive Map**: Click districts to explore local vocabulary, meanings, and sources
|
| 20 |
-
- **Rich Content**: 3000+ verified dialect terms from crowdsourced and JSONL data
|
| 21 |
-
- **Zero Build Required**: Pure static site with automatic data loading
|
| 22 |
-
- **Google Sheets Integration**: Automated synchronization with Google Sheets
|
| 23 |
-
|
| 24 |
-
## 🚀 Deployment Options
|
| 25 |
-
|
| 26 |
-
### Option 1: Hugging Face Spaces (Recommended for Public Access)
|
| 27 |
-
|
| 28 |
-
Deploy to Hugging Face Spaces with continuous automation:
|
| 29 |
-
|
| 30 |
-
1. **Create a Space** on [Hugging Face](https://huggingface.co/spaces)
|
| 31 |
-
2. **Configure secrets** for `config.json` and `credentials.json`
|
| 32 |
-
3. **Push your code** to the Space repository
|
| 33 |
-
4. **Access your app** at `https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE`
|
| 34 |
-
|
| 35 |
-
📖 **[Complete HF Spaces Setup Guide →](SECRETS_SETUP.md)**
|
| 36 |
-
|
| 37 |
-
### Option 2: Local Development
|
| 38 |
-
|
| 39 |
-
## 🚀 How to Run
|
| 40 |
-
|
| 41 |
-
### **Complete Setup (First Time)**
|
| 42 |
-
|
| 43 |
-
```bash
|
| 44 |
-
# 1. Navigate to project directory
|
| 45 |
-
cd /home/kashikuldeep/Desktop/swechaworkspace/dilacet-map/indian-dialects-maps
|
| 46 |
-
|
| 47 |
-
# 2. Activate virtual environment
|
| 48 |
-
source venv/bin/activate
|
| 49 |
-
|
| 50 |
-
# 3. Start automation (syncs Google Sheets every 5 minutes)
|
| 51 |
-
python scripts/automation_runner.py &
|
| 52 |
-
|
| 53 |
-
# 4. Start web server (in new terminal or background)
|
| 54 |
-
python -m http.server 8080 &
|
| 55 |
-
|
| 56 |
-
# 5. Open in browser
|
| 57 |
-
# Navigate to: http://localhost:8080/
|
| 58 |
-
```
|
| 59 |
-
|
| 60 |
-
### **Quick Run (After First Time)**
|
| 61 |
-
|
| 62 |
-
```bash
|
| 63 |
-
# Activate virtual environment
|
| 64 |
-
source venv/bin/activate
|
| 65 |
-
|
| 66 |
-
# Start both services
|
| 67 |
-
python scripts/automation_runner.py &
|
| 68 |
-
python -m http.server 8080 &
|
| 69 |
-
|
| 70 |
-
# Open: http://localhost:8080/
|
| 71 |
-
```
|
| 72 |
-
|
| 73 |
-
### **Stop Services**
|
| 74 |
-
|
| 75 |
-
```bash
|
| 76 |
-
# Press Ctrl+C in the terminals, or:
|
| 77 |
-
pkill -f automation_runner
|
| 78 |
-
pkill -f "http.server 8080"
|
| 79 |
-
```
|
| 80 |
-
|
| 81 |
-
**Important:** Use `http://localhost:8080/` not `file://` URLs (browser security blocks JSON loading from file://)
|
| 82 |
-
|
| 83 |
-
---
|
| 84 |
-
|
| 85 |
-
## 🎯 What You'll See
|
| 86 |
-
|
| 87 |
-
1. **Automation Console**: Shows sync status every 5 minutes
|
| 88 |
-
2. **Web Interface**: Interactive map with 48 districts (33 Telangana + 15 Andhra Pradesh)
|
| 89 |
-
3. **Auto-Updates**: Edit Google Sheets → Changes appear within 5 minutes!
|
| 90 |
-
|
| 91 |
-
## 🤖 Automated Data Updates
|
| 92 |
-
|
| 93 |
-
The project includes **automated synchronization** from Google Sheets:
|
| 94 |
-
|
| 95 |
-
- **File Watcher**: Automatically converts CSV → JSON when files change
|
| 96 |
-
- **Google Sheets Sync**: Downloads sheet data every 5 minutes
|
| 97 |
-
- **Zero Manual Work**: Update your Google Sheet and changes appear automatically!
|
| 98 |
-
|
| 99 |
-
### Configuration
|
| 100 |
-
|
| 101 |
-
Your automation is already configured for:
|
| 102 |
-
- **Processed Dialects Sheet**: 901 rows
|
| 103 |
-
- **Digiwords Sheet**: 178 rows
|
| 104 |
-
- **Sync Interval**: Every 5 minutes
|
| 105 |
-
|
| 106 |
-
To modify settings, edit `config.json`:
|
| 107 |
-
```json
|
| 108 |
-
{
|
| 109 |
-
"google_sheets": {
|
| 110 |
-
"enabled": true,
|
| 111 |
-
"sync_interval_minutes": 5,
|
| 112 |
-
"spreadsheets": [...]
|
| 113 |
-
}
|
| 114 |
-
}
|
| 115 |
-
```
|
| 116 |
-
|
| 117 |
-
📖 **[Full Automation Setup Guide →](AUTOMATION_SETUP.md)**
|
| 118 |
-
|
| 119 |
-
## 📂 Project Structure
|
| 120 |
-
|
| 121 |
-
```
|
| 122 |
-
indian-dialects-maps/
|
| 123 |
-
├── index.html # Main visualization (open this via http server)
|
| 124 |
-
├── data/
|
| 125 |
-
│ └── processed/
|
| 126 |
-
│ ├── processed_dialects.json # JSONL-processed dialect data
|
| 127 |
-
│ └── digiwords_grouped.json # Crowdsourced dialect data
|
| 128 |
-
├── sheets_output/ # CSV files (auto-converted to JSON)
|
| 129 |
-
│ ├── processed_dialects.csv
|
| 130 |
-
│ └── digiwords_grouped.csv
|
| 131 |
-
├── scripts/ # Automation scripts (NEW!)
|
| 132 |
-
│ ├── csv_to_json.py # CSV → JSON converter
|
| 133 |
-
│ ├── sheets_sync.py # Google Sheets downloader
|
| 134 |
-
│ ├── file_watcher.py # Auto-conversion on file changes
|
| 135 |
-
│ └── automation_runner.py # Main automation orchestrator
|
| 136 |
-
├── config.json # Automation configuration
|
| 137 |
-
├── requirements.txt # Python dependencies
|
| 138 |
-
├── AUTOMATION_SETUP.md # Detailed setup guide
|
| 139 |
-
└── README.md
|
| 140 |
-
```
|
| 141 |
-
|
| 142 |
-
## 🔄 How It Works
|
| 143 |
-
|
| 144 |
-
### Manual Mode (Original)
|
| 145 |
-
1. **Load `index.html`**: Contains hardcoded data for 33 Telangana districts
|
| 146 |
-
2. **Fetch `processed_dialects.json`**: Enhances/adds districts from JSONL data
|
| 147 |
-
3. **Fetch `digiwords_grouped.json`**:
|
| 148 |
-
- Merges additional words into Telangana districts
|
| 149 |
-
- Automatically adds 15 Andhra Pradesh districts with coordinates
|
| 150 |
-
4. **Render**: All districts appear on the map with merged data
|
| 151 |
-
|
| 152 |
-
### Automated Mode (NEW!)
|
| 153 |
-
1. **Google Sheets**: Update your dialect data in Google Sheets
|
| 154 |
-
2. **Auto-Sync**: Script downloads sheets as CSV (every 5 min)
|
| 155 |
-
3. **File Watcher**: Detects CSV changes
|
| 156 |
-
4. **Auto-Convert**: CSV files → JSON format
|
| 157 |
-
5. **Browser**: Refresh to see updates on the map!
|
| 158 |
-
|
| 159 |
-
**Flow:**
|
| 160 |
-
```
|
| 161 |
-
Google Sheet → CSV (sheets_output/) → JSON (data/processed/) → Browser (index.html)
|
| 162 |
-
↓ ↓ ↓
|
| 163 |
-
Manual Edit File Watcher Auto-Refresh
|
| 164 |
-
```
|
| 165 |
-
|
| 166 |
-
**Smart Merging:**
|
| 167 |
-
- Existing districts → Appends new words
|
| 168 |
-
- New AP districts → Creates markers automatically
|
| 169 |
-
- Graceful fallback if JSON files are missing
|
| 170 |
-
|
| 171 |
-
## 📊 Current Data Coverage
|
| 172 |
-
|
| 173 |
-
| State | Districts | Words | Sources |
|
| 174 |
-
|-------|-----------|-------|---------|
|
| 175 |
-
| **Telangana** | 33 | 2000+ | Hardcoded + JSONL + Digiwords |
|
| 176 |
-
| **Andhra Pradesh** | 15 | 1000+ | Digiwords (crowdsourced) |
|
| 177 |
-
| **Total** | **48** | **3000+** | Multiple sources |
|
| 178 |
-
|
| 179 |
-
### Andhra Pradesh Districts:
|
| 180 |
-
Anantapur, Annamayya, Chittoor, East Godavari, Eluru, Kadapa, Kurnool, Nandyal, Ongole, Tirupati, Srikakulam, Visakhapatnam, Vizianagaram, West Godavari, Rayalaseema
|
| 181 |
-
|
| 182 |
-
## 🎨 Adding New Data
|
| 183 |
-
|
| 184 |
-
### Update Existing JSON Files
|
| 185 |
-
|
| 186 |
-
**Edit `data/processed/digiwords_grouped.json`:**
|
| 187 |
-
```json
|
| 188 |
-
{
|
| 189 |
-
"Telangana": {
|
| 190 |
-
"YourDistrict": [
|
| 191 |
-
{"t": "తెలుగుపదం", "m": "meaning", "s": "Crowd"}
|
| 192 |
-
]
|
| 193 |
-
},
|
| 194 |
-
"Andhra Pradesh": {
|
| 195 |
-
"YourDistrict": [
|
| 196 |
-
{"t": "తెలుగుపదం", "m": "meaning", "s": "Crowd"}
|
| 197 |
-
]
|
| 198 |
-
}
|
| 199 |
-
}
|
| 200 |
-
```
|
| 201 |
-
|
| 202 |
-
**Edit `data/processed/processed_dialects.json`:**
|
| 203 |
-
```json
|
| 204 |
-
[
|
| 205 |
-
{
|
| 206 |
-
"name": "YourDistrict",
|
| 207 |
-
"region": "Region Name",
|
| 208 |
-
"words": [
|
| 209 |
-
{"t": "తెలుగుపదం", "m": "meaning", "s": "Source"}
|
| 210 |
-
]
|
| 211 |
-
}
|
| 212 |
-
]
|
| 213 |
-
```
|
| 214 |
-
|
| 215 |
-
Then refresh the browser!
|
| 216 |
-
|
| 217 |
-
### Add New AP District Coordinates
|
| 218 |
-
|
| 219 |
-
If adding a new Andhra Pradesh district, update `index.html`:
|
| 220 |
-
|
| 221 |
-
```javascript
|
| 222 |
-
const AP_COORDINATES = {
|
| 223 |
-
"YourDistrict": {
|
| 224 |
-
lat: 00.0000,
|
| 225 |
-
lng: 00.0000,
|
| 226 |
-
region: "Region Name",
|
| 227 |
-
history: "Historical context..."
|
| 228 |
-
},
|
| 229 |
-
// ...
|
| 230 |
-
};
|
| 231 |
-
```
|
| 232 |
-
|
| 233 |
-
## 🛠️ Technical Stack
|
| 234 |
-
|
| 235 |
-
- **Frontend**: HTML5, Vanilla JavaScript, Leaflet.js
|
| 236 |
-
- **Data Format**: JSON (pre-processed)
|
| 237 |
-
- **Map Library**: Leaflet with CartoDB basemap
|
| 238 |
-
- **Server**: Any HTTP server (Python, Node, etc.)
|
| 239 |
-
- **No Build Step**: Pure static site
|
| 240 |
-
|
| 241 |
-
## 🐛 Troubleshooting
|
| 242 |
-
|
| 243 |
-
### Data Not Loading?
|
| 244 |
-
|
| 245 |
-
✅ **Check #1:** Are you using `http://localhost:8000/`?
|
| 246 |
-
- ❌ Don't use `file://` URLs
|
| 247 |
-
- ✅ Use an HTTP server
|
| 248 |
-
|
| 249 |
-
✅ **Check #2:** Is the server running?
|
| 250 |
-
```bash
|
| 251 |
-
python3 -m http.server 8000
|
| 252 |
-
```
|
| 253 |
-
|
| 254 |
-
✅ **Check #3:** Hard refresh the page
|
| 255 |
-
- Press `Ctrl + Shift + R` (Windows/Linux)
|
| 256 |
-
- Press `Cmd + Shift + R` (Mac)
|
| 257 |
-
|
| 258 |
-
✅ **Check #4:** Check browser console (F12)
|
| 259 |
-
- Look for fetch errors
|
| 260 |
-
- Should see loading messages
|
| 261 |
-
|
| 262 |
-
### Server Won't Start?
|
| 263 |
-
|
| 264 |
-
```bash
|
| 265 |
-
# Kill process on port 8000
|
| 266 |
-
lsof -ti:8000 | xargs kill -9
|
| 267 |
-
|
| 268 |
-
# Start fresh
|
| 269 |
-
python3 -m http.server 8000
|
| 270 |
-
```
|
| 271 |
-
|
| 272 |
-
### Still Not Working?
|
| 273 |
-
|
| 274 |
-
1. Open browser console (F12)
|
| 275 |
-
2. Look for error messages
|
| 276 |
-
3. Check that JSON files exist in `data/processed/`
|
| 277 |
-
4. Verify you're on the correct URL (`localhost:8000` not `127.0.0.1` if redirects are weird)
|
| 278 |
-
|
| 279 |
-
## 📝 Technical Notes
|
| 280 |
-
|
| 281 |
-
- Telugu text uses web fonts (Poppins, Ramabhadra)
|
| 282 |
-
- Console shows detailed merge logs for debugging
|
| 283 |
-
- Map centered at (16.5°N, 79.8°E) to show both states
|
| 284 |
-
- Zoom level: 6.5 (fits both Telangana and AP)
|
| 285 |
-
- Data loads asynchronously with `async/await`
|
| 286 |
-
|
| 287 |
-
## 🤝 Contributing
|
| 288 |
-
|
| 289 |
-
To add more dialect data:
|
| 290 |
-
1. Edit the JSON files in `data/processed/`
|
| 291 |
-
2. Refresh `http://localhost:8000/`
|
| 292 |
-
3. That's it!
|
| 293 |
-
|
| 294 |
-
---
|
| 295 |
-
|
| 296 |
-
**Made with ❤️ for preserving Telugu linguistic heritage across Telangana and Andhra Pradesh**
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Telangana Dialect Map
|
| 3 |
+
emoji: 🐠
|
| 4 |
+
colorFrom: gray
|
| 5 |
colorTo: purple
|
| 6 |
+
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
license: agpl-3.0
|
| 9 |
---
|
| 10 |
|
| 11 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SECRETS_SETUP.md
DELETED
|
@@ -1,361 +0,0 @@
|
|
| 1 |
-
# Hugging Face Spaces Secrets Setup Guide
|
| 2 |
-
|
| 3 |
-
This guide explains how to configure and deploy your Telugu Dialect Map to Hugging Face Spaces with secure secrets management.
|
| 4 |
-
|
| 5 |
-
## Overview
|
| 6 |
-
|
| 7 |
-
Your application requires two secret files:
|
| 8 |
-
- **`config.json`**: Configuration for Google Sheets sync and automation
|
| 9 |
-
- **`credentials.json`**: Google Cloud service account credentials
|
| 10 |
-
|
| 11 |
-
These files contain sensitive information and should NEVER be committed to git. Instead, we'll use Hugging Face Spaces **secrets** (environment variables) to store them securely.
|
| 12 |
-
|
| 13 |
-
---
|
| 14 |
-
|
| 15 |
-
## Step 1: Obtain Google Service Account Credentials
|
| 16 |
-
|
| 17 |
-
### 1.1 Create a Google Cloud Project
|
| 18 |
-
|
| 19 |
-
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
|
| 20 |
-
2. Create a new project or select an existing one
|
| 21 |
-
3. Note your project ID
|
| 22 |
-
|
| 23 |
-
### 1.2 Enable Google Sheets API
|
| 24 |
-
|
| 25 |
-
1. In your project, go to **APIs & Services** → **Library**
|
| 26 |
-
2. Search for "Google Sheets API"
|
| 27 |
-
3. Click **Enable**
|
| 28 |
-
|
| 29 |
-
### 1.3 Create a Service Account
|
| 30 |
-
|
| 31 |
-
1. Go to **APIs & Services** → **Credentials**
|
| 32 |
-
2. Click **Create Credentials** → **Service Account**
|
| 33 |
-
3. Fill in the details:
|
| 34 |
-
- **Service account name**: `dialect-map-automation`
|
| 35 |
-
- **Service account ID**: (auto-generated)
|
| 36 |
-
- **Description**: "Service account for dialect map Google Sheets automation"
|
| 37 |
-
4. Click **Create and Continue**
|
| 38 |
-
5. Skip the optional steps (roles and user access)
|
| 39 |
-
6. Click **Done**
|
| 40 |
-
|
| 41 |
-
### 1.4 Create and Download Service Account Key
|
| 42 |
-
|
| 43 |
-
1. Click on the service account you just created
|
| 44 |
-
2. Go to the **Keys** tab
|
| 45 |
-
3. Click **Add Key** → **Create new key**
|
| 46 |
-
4. Select **JSON** format
|
| 47 |
-
5. Click **Create**
|
| 48 |
-
6. A JSON file will be downloaded - this is your `credentials.json`
|
| 49 |
-
7. **Keep this file secure!** It provides full access to your Google Sheets
|
| 50 |
-
|
| 51 |
-
### 1.5 Share Your Google Sheets with the Service Account
|
| 52 |
-
|
| 53 |
-
1. Open your `credentials.json` file
|
| 54 |
-
2. Find the `client_email` field (e.g., `dialect-map-automation@your-project.iam.gserviceaccount.com`)
|
| 55 |
-
3. Copy this email address
|
| 56 |
-
4. Open each Google Sheet you want to sync
|
| 57 |
-
5. Click **Share** button
|
| 58 |
-
6. Paste the service account email
|
| 59 |
-
7. Give it **Editor** or **Viewer** access (Editor if you want to write data back)
|
| 60 |
-
8. Click **Send**
|
| 61 |
-
|
| 62 |
-
---
|
| 63 |
-
|
| 64 |
-
## Step 2: Configure config.json
|
| 65 |
-
|
| 66 |
-
Create your `config.json` file with your specific settings:
|
| 67 |
-
|
| 68 |
-
```json
|
| 69 |
-
{
|
| 70 |
-
"google_sheets": {
|
| 71 |
-
"enabled": true,
|
| 72 |
-
"sync_interval_minutes": 5,
|
| 73 |
-
"credentials_file": "credentials.json",
|
| 74 |
-
"spreadsheets": [
|
| 75 |
-
{
|
| 76 |
-
"id": "YOUR_ACTUAL_SPREADSHEET_ID_HERE",
|
| 77 |
-
"sheet_name": "processed_dialects",
|
| 78 |
-
"output_file": "sheets_output/processed_dialects.csv"
|
| 79 |
-
},
|
| 80 |
-
{
|
| 81 |
-
"id": "YOUR_ACTUAL_SPREADSHEET_ID_HERE",
|
| 82 |
-
"sheet_name": "digiwords_grouped",
|
| 83 |
-
"output_file": "sheets_output/digiwords_grouped.csv"
|
| 84 |
-
}
|
| 85 |
-
]
|
| 86 |
-
},
|
| 87 |
-
"file_watcher": {
|
| 88 |
-
"enabled": true,
|
| 89 |
-
"watch_directory": "sheets_output",
|
| 90 |
-
"file_patterns": ["*.csv"]
|
| 91 |
-
},
|
| 92 |
-
"output": {
|
| 93 |
-
"json_directory": "data/processed"
|
| 94 |
-
}
|
| 95 |
-
}
|
| 96 |
-
```
|
| 97 |
-
|
| 98 |
-
### Finding Your Spreadsheet ID
|
| 99 |
-
|
| 100 |
-
Your Google Sheets URL looks like:
|
| 101 |
-
```
|
| 102 |
-
https://docs.google.com/spreadsheets/d/1AbC123XyZ456_Example_ID/edit#gid=0
|
| 103 |
-
^^^^^^^^^^^^^^^^^^^^^^^^^
|
| 104 |
-
This is your spreadsheet ID
|
| 105 |
-
```
|
| 106 |
-
|
| 107 |
-
Copy the ID from your URL and replace `YOUR_ACTUAL_SPREADSHEET_ID_HERE` in the config.
|
| 108 |
-
|
| 109 |
-
---
|
| 110 |
-
|
| 111 |
-
## Step 3: Deploy to Hugging Face Spaces
|
| 112 |
-
|
| 113 |
-
### 3.1 Create a New Space
|
| 114 |
-
|
| 115 |
-
1. Go to [Hugging Face](https://huggingface.co/)
|
| 116 |
-
2. Click your profile → **New Space**
|
| 117 |
-
3. Fill in the details:
|
| 118 |
-
- **Space name**: `telugu-dialect-map` (or your choice)
|
| 119 |
-
- **License**: Choose appropriate license
|
| 120 |
-
- **Space SDK**: Select **Static** (we'll use a custom Python app)
|
| 121 |
-
- **Visibility**: Public or Private
|
| 122 |
-
4. Click **Create Space**
|
| 123 |
-
|
| 124 |
-
### 3.2 Push Your Code to the Space
|
| 125 |
-
|
| 126 |
-
You can either:
|
| 127 |
-
|
| 128 |
-
**Option A: Use Git**
|
| 129 |
-
```bash
|
| 130 |
-
# Clone the Space repository
|
| 131 |
-
git clone https://huggingface.co/spaces/YOUR_USERNAME/telugu-dialect-map
|
| 132 |
-
cd telugu-dialect-map
|
| 133 |
-
|
| 134 |
-
# Copy your project files (excluding secrets!)
|
| 135 |
-
cp -r /path/to/dialect-map/* .
|
| 136 |
-
|
| 137 |
-
# Make sure .gitignore is in place
|
| 138 |
-
cat .gitignore # Should include config.json and credentials.json
|
| 139 |
-
|
| 140 |
-
# Commit and push
|
| 141 |
-
git add .
|
| 142 |
-
git commit -m "Initial commit"
|
| 143 |
-
git push
|
| 144 |
-
```
|
| 145 |
-
|
| 146 |
-
**Option B: Upload via Web Interface**
|
| 147 |
-
1. In your Space, click **Files** tab
|
| 148 |
-
2. Click **Add file** → **Upload files**
|
| 149 |
-
3. Select all your project files (EXCEPT `config.json` and `credentials.json`)
|
| 150 |
-
4. Click **Commit changes**
|
| 151 |
-
|
| 152 |
-
### 3.3 Add Secrets to Your Space
|
| 153 |
-
|
| 154 |
-
This is the **critical step** - we'll add your sensitive credentials as secrets.
|
| 155 |
-
|
| 156 |
-
1. In your Space, click the **Settings** tab
|
| 157 |
-
2. Scroll down to **Repository secrets**
|
| 158 |
-
3. Add the following secrets:
|
| 159 |
-
|
| 160 |
-
#### Secret 1: HF_CONFIG_JSON
|
| 161 |
-
|
| 162 |
-
- **Name**: `HF_CONFIG_JSON`
|
| 163 |
-
- **Value**: Paste the **entire contents** of your `config.json` file
|
| 164 |
-
|
| 165 |
-
Example (all on one line):
|
| 166 |
-
```
|
| 167 |
-
{"google_sheets":{"enabled":true,"sync_interval_minutes":5,"credentials_file":"credentials.json","spreadsheets":[{"id":"1AbC123XyZ456_Example","sheet_name":"processed_dialects","output_file":"sheets_output/processed_dialects.csv"}]},"file_watcher":{"enabled":true,"watch_directory":"sheets_output","file_patterns":["*.csv"]},"output":{"json_directory":"data/processed"}}
|
| 168 |
-
```
|
| 169 |
-
|
| 170 |
-
#### Secret 2: HF_CREDENTIALS_JSON
|
| 171 |
-
|
| 172 |
-
- **Name**: `HF_CREDENTIALS_JSON`
|
| 173 |
-
- **Value**: Paste the **entire contents** of your `credentials.json` file
|
| 174 |
-
|
| 175 |
-
Example (all on one line, with escaped newlines in private key):
|
| 176 |
-
```
|
| 177 |
-
{"type":"service_account","project_id":"your-project","private_key_id":"abc123...","private_key":"-----BEGIN PRIVATE KEY-----\\nMIIEvQIB...\\n-----END PRIVATE KEY-----\\n","client_email":"name@project.iam.gserviceaccount.com",...}
|
| 178 |
-
```
|
| 179 |
-
|
| 180 |
-
4. Click **Add secret** for each one
|
| 181 |
-
|
| 182 |
-
**Important Notes:**
|
| 183 |
-
- The entire JSON must be on one line (no newlines except in the `private_key` field where `\n` should be `\\n`)
|
| 184 |
-
- Make sure to escape special characters if needed
|
| 185 |
-
- You can use a JSON minifier tool to compact your JSON
|
| 186 |
-
|
| 187 |
-
### 3.4 Rebuild Your Space
|
| 188 |
-
|
| 189 |
-
After adding secrets:
|
| 190 |
-
1. Your Space should automatically rebuild
|
| 191 |
-
2. Watch the **Logs** tab for any errors
|
| 192 |
-
3. Once built, click **App** tab to view your running application
|
| 193 |
-
|
| 194 |
-
---
|
| 195 |
-
|
| 196 |
-
## Step 4: Verify Deployment
|
| 197 |
-
|
| 198 |
-
### 4.1 Check Space Logs
|
| 199 |
-
|
| 200 |
-
1. Go to your Space's **Logs** tab
|
| 201 |
-
2. You should see:
|
| 202 |
-
```
|
| 203 |
-
🔐 Loading secrets from environment variables...
|
| 204 |
-
✅ Created config.json from HF_CONFIG_JSON secret
|
| 205 |
-
✅ Created credentials.json from HF_CREDENTIALS_JSON secret
|
| 206 |
-
🚀 Starting automation runner...
|
| 207 |
-
✅ Automation runner started
|
| 208 |
-
🌐 Starting web server on port 7860...
|
| 209 |
-
```
|
| 210 |
-
|
| 211 |
-
3. If you see errors, check:
|
| 212 |
-
- JSON formatting in your secrets
|
| 213 |
-
- Spreadsheet IDs are correct
|
| 214 |
-
- Service account has access to sheets
|
| 215 |
-
|
| 216 |
-
### 4.2 Access Your Application
|
| 217 |
-
|
| 218 |
-
1. Click the **App** tab
|
| 219 |
-
2. You should see your Telugu Dialect Map interface
|
| 220 |
-
3. The map should load with data from your Google Sheets
|
| 221 |
-
|
| 222 |
-
### 4.3 Verify Automation
|
| 223 |
-
|
| 224 |
-
1. Edit your Google Sheet (add/modify some dialect data)
|
| 225 |
-
2. Wait 5 minutes (or your configured interval)
|
| 226 |
-
3. Check the Space logs - you should see sync messages
|
| 227 |
-
4. Refresh your app - changes should appear
|
| 228 |
-
|
| 229 |
-
---
|
| 230 |
-
|
| 231 |
-
## Troubleshooting
|
| 232 |
-
|
| 233 |
-
### "HF_CONFIG_JSON not found in environment"
|
| 234 |
-
|
| 235 |
-
**Problem**: The secret wasn't added or has the wrong name.
|
| 236 |
-
|
| 237 |
-
**Solution**:
|
| 238 |
-
1. Go to Space Settings → Repository secrets
|
| 239 |
-
2. Verify the secret name is exactly `HF_CONFIG_JSON` (case-sensitive)
|
| 240 |
-
3. Add it if missing
|
| 241 |
-
4. Rebuild the Space
|
| 242 |
-
|
| 243 |
-
### "Error parsing HF_CONFIG_JSON"
|
| 244 |
-
|
| 245 |
-
**Problem**: The JSON is malformed.
|
| 246 |
-
|
| 247 |
-
**Solution**:
|
| 248 |
-
1. Copy your `config.json` content
|
| 249 |
-
2. Use a JSON validator (e.g., [jsonlint.com](https://jsonlint.com/))
|
| 250 |
-
3. Make sure it's valid JSON
|
| 251 |
-
4. Remove all newlines (except `\n` in strings should become `\\n`)
|
| 252 |
-
5. Update the secret with the corrected value
|
| 253 |
-
|
| 254 |
-
### "Connection refused" or "Credentials invalid"
|
| 255 |
-
|
| 256 |
-
**Problem**: Google service account credentials are wrong or not shared.
|
| 257 |
-
|
| 258 |
-
**Solution**:
|
| 259 |
-
1. Verify `credentials.json` content is correct
|
| 260 |
-
2. Check that you shared your Google Sheets with the service account email
|
| 261 |
-
3. Verify the Sheets API is enabled in Google Cloud Console
|
| 262 |
-
4. Regenerate service account key if needed
|
| 263 |
-
|
| 264 |
-
### "Automation not syncing"
|
| 265 |
-
|
| 266 |
-
**Problem**: Automation runner isn't working.
|
| 267 |
-
|
| 268 |
-
**Solution**:
|
| 269 |
-
1. Check Space logs for error messages
|
| 270 |
-
2. Verify `spreadsheets.id` values in config.json match your actual sheet IDs
|
| 271 |
-
3. Verify `sheet_name` values match the tab names in your spreadsheets
|
| 272 |
-
4. Check that service account has Editor access (not just Viewer)
|
| 273 |
-
|
| 274 |
-
### Space keeps crashing or restarting
|
| 275 |
-
|
| 276 |
-
**Problem**: HF Spaces free tier may have resource limits.
|
| 277 |
-
|
| 278 |
-
**Solution**:
|
| 279 |
-
1. Consider upgrading to a paid Space for guaranteed uptime
|
| 280 |
-
2. Reduce sync interval (e.g., 15-30 minutes instead of 5)
|
| 281 |
-
3. Check logs for memory/CPU issues
|
| 282 |
-
|
| 283 |
-
---
|
| 284 |
-
|
| 285 |
-
## Local Testing (Before Deploying)
|
| 286 |
-
|
| 287 |
-
Before deploying to HF Spaces, test locally:
|
| 288 |
-
|
| 289 |
-
### 1. Create actual config files
|
| 290 |
-
|
| 291 |
-
```bash
|
| 292 |
-
cd /home/kashikuldeep/Desktop/dialect-map
|
| 293 |
-
|
| 294 |
-
# Copy examples and fill in real values
|
| 295 |
-
cp config.json.example config.json
|
| 296 |
-
cp credentials.json.example credentials.json
|
| 297 |
-
|
| 298 |
-
# Edit with your actual values
|
| 299 |
-
nano config.json
|
| 300 |
-
nano credentials.json
|
| 301 |
-
```
|
| 302 |
-
|
| 303 |
-
### 2. Test the app
|
| 304 |
-
|
| 305 |
-
```bash
|
| 306 |
-
# Run the app locally
|
| 307 |
-
python app.py
|
| 308 |
-
|
| 309 |
-
# Should see:
|
| 310 |
-
# ✅ Created config.json from HF_CONFIG_JSON secret (if using .env)
|
| 311 |
-
# 🚀 Starting automation runner...
|
| 312 |
-
# 🌐 Starting web server on port 7860...
|
| 313 |
-
|
| 314 |
-
# Open browser to http://localhost:7860
|
| 315 |
-
```
|
| 316 |
-
|
| 317 |
-
### 3. Test with environment variables (simulating HF Spaces)
|
| 318 |
-
|
| 319 |
-
```bash
|
| 320 |
-
# Create .env file
|
| 321 |
-
cp .env.example .env
|
| 322 |
-
|
| 323 |
-
# Edit .env with your actual JSON (minified)
|
| 324 |
-
nano .env
|
| 325 |
-
|
| 326 |
-
# Load environment and run
|
| 327 |
-
python -c "from dotenv import load_dotenv; load_dotenv()" && python app.py
|
| 328 |
-
```
|
| 329 |
-
|
| 330 |
-
---
|
| 331 |
-
|
| 332 |
-
## Security Best Practices
|
| 333 |
-
|
| 334 |
-
1. **Never commit secrets to git**
|
| 335 |
-
- Keep `config.json` and `credentials.json` in `.gitignore`
|
| 336 |
-
- Double-check before pushing code
|
| 337 |
-
|
| 338 |
-
2. **Rotate credentials regularly**
|
| 339 |
-
- Generate new service account keys periodically
|
| 340 |
-
- Update HF Spaces secrets
|
| 341 |
-
|
| 342 |
-
3. **Use minimal permissions**
|
| 343 |
-
- Service account should only have access to necessary sheets
|
| 344 |
-
- Use Viewer access if you don't need to write back
|
| 345 |
-
|
| 346 |
-
4. **Monitor usage**
|
| 347 |
-
- Check Google Cloud Console for API usage
|
| 348 |
-
- Set up billing alerts
|
| 349 |
-
- Review Space logs regularly
|
| 350 |
-
|
| 351 |
-
---
|
| 352 |
-
|
| 353 |
-
## Need Help?
|
| 354 |
-
|
| 355 |
-
- **Google Cloud Issues**: [Google Cloud Support](https://cloud.google.com/support)
|
| 356 |
-
- **Hugging Face Spaces**: [HF Documentation](https://huggingface.co/docs/hub/spaces)
|
| 357 |
-
- **Project Issues**: Check the Space logs first, then review this guide
|
| 358 |
-
|
| 359 |
-
---
|
| 360 |
-
|
| 361 |
-
**Happy Mapping! 🗺️**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
DELETED
|
@@ -1,184 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
Hugging Face Spaces Entry Point
|
| 4 |
-
This script:
|
| 5 |
-
1. Loads secrets from HF Spaces environment variables
|
| 6 |
-
2. Creates config.json and credentials.json from those secrets
|
| 7 |
-
3. Starts the automation runner in the background
|
| 8 |
-
4. Serves the static web interface
|
| 9 |
-
"""
|
| 10 |
-
|
| 11 |
-
import os
|
| 12 |
-
import json
|
| 13 |
-
import subprocess
|
| 14 |
-
import signal
|
| 15 |
-
import sys
|
| 16 |
-
import time
|
| 17 |
-
import threading
|
| 18 |
-
from pathlib import Path
|
| 19 |
-
from http.server import HTTPServer, SimpleHTTPRequestHandler
|
| 20 |
-
from functools import partial
|
| 21 |
-
|
| 22 |
-
# Configuration
|
| 23 |
-
PORT = int(os.getenv('PORT', 7860))
|
| 24 |
-
BASE_DIR = Path(__file__).parent
|
| 25 |
-
AUTOMATION_RUNNER = BASE_DIR / "scripts" / "automation_runner.py"
|
| 26 |
-
|
| 27 |
-
# Global process reference for cleanup
|
| 28 |
-
automation_process = None
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
def load_secrets_from_env():
|
| 32 |
-
"""Load secrets from HF Spaces environment variables and create config files"""
|
| 33 |
-
print("🔐 Loading secrets from environment variables...")
|
| 34 |
-
|
| 35 |
-
# Load config.json from environment
|
| 36 |
-
config_json_str = os.getenv('HF_CONFIG_JSON')
|
| 37 |
-
if config_json_str:
|
| 38 |
-
try:
|
| 39 |
-
config_data = json.loads(config_json_str)
|
| 40 |
-
config_file = BASE_DIR / "config.json"
|
| 41 |
-
with open(config_file, 'w') as f:
|
| 42 |
-
json.dump(config_data, f, indent=2)
|
| 43 |
-
print(f"✅ Created config.json from HF_CONFIG_JSON secret")
|
| 44 |
-
except json.JSONDecodeError as e:
|
| 45 |
-
print(f"❌ Error parsing HF_CONFIG_JSON: {e}")
|
| 46 |
-
sys.exit(1)
|
| 47 |
-
else:
|
| 48 |
-
config_file = BASE_DIR / "config.json"
|
| 49 |
-
if not config_file.exists():
|
| 50 |
-
print("⚠️ HF_CONFIG_JSON not found in environment")
|
| 51 |
-
print("⚠️ Please set HF_CONFIG_JSON secret in your Hugging Face Space settings")
|
| 52 |
-
print("⚠️ See SECRETS_SETUP.md for instructions")
|
| 53 |
-
# Don't exit - allow the app to run without automation
|
| 54 |
-
|
| 55 |
-
# Load credentials.json from environment
|
| 56 |
-
credentials_json_str = os.getenv('HF_CREDENTIALS_JSON')
|
| 57 |
-
if credentials_json_str:
|
| 58 |
-
try:
|
| 59 |
-
credentials_data = json.loads(credentials_json_str)
|
| 60 |
-
credentials_file = BASE_DIR / "credentials.json"
|
| 61 |
-
with open(credentials_file, 'w') as f:
|
| 62 |
-
json.dump(credentials_data, f, indent=2)
|
| 63 |
-
print(f"✅ Created credentials.json from HF_CREDENTIALS_JSON secret")
|
| 64 |
-
except json.JSONDecodeError as e:
|
| 65 |
-
print(f"❌ Error parsing HF_CREDENTIALS_JSON: {e}")
|
| 66 |
-
sys.exit(1)
|
| 67 |
-
else:
|
| 68 |
-
credentials_file = BASE_DIR / "credentials.json"
|
| 69 |
-
if not credentials_file.exists():
|
| 70 |
-
print("⚠️ HF_CREDENTIALS_JSON not found in environment")
|
| 71 |
-
print("⚠️ Google Sheets sync will not work without credentials")
|
| 72 |
-
|
| 73 |
-
print()
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
def start_automation():
|
| 77 |
-
"""Start the automation runner in the background"""
|
| 78 |
-
global automation_process
|
| 79 |
-
|
| 80 |
-
# Check if automation script exists
|
| 81 |
-
if not AUTOMATION_RUNNER.exists():
|
| 82 |
-
print(f"⚠️ Automation runner not found: {AUTOMATION_RUNNER}")
|
| 83 |
-
return
|
| 84 |
-
|
| 85 |
-
# Check if config exists
|
| 86 |
-
config_file = BASE_DIR / "config.json"
|
| 87 |
-
if not config_file.exists():
|
| 88 |
-
print("⚠️ config.json not found, skipping automation startup")
|
| 89 |
-
return
|
| 90 |
-
|
| 91 |
-
print("🚀 Starting automation runner...")
|
| 92 |
-
try:
|
| 93 |
-
automation_process = subprocess.Popen(
|
| 94 |
-
[sys.executable, str(AUTOMATION_RUNNER)],
|
| 95 |
-
stdout=subprocess.PIPE,
|
| 96 |
-
stderr=subprocess.STDOUT,
|
| 97 |
-
text=True,
|
| 98 |
-
bufsize=1
|
| 99 |
-
)
|
| 100 |
-
|
| 101 |
-
# Stream automation output in a separate thread
|
| 102 |
-
def stream_output():
|
| 103 |
-
for line in automation_process.stdout:
|
| 104 |
-
print(f"[AUTOMATION] {line}", end='')
|
| 105 |
-
|
| 106 |
-
threading.Thread(target=stream_output, daemon=True).start()
|
| 107 |
-
print("✅ Automation runner started\n")
|
| 108 |
-
except Exception as e:
|
| 109 |
-
print(f"❌ Failed to start automation: {e}\n")
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
def cleanup(signum=None, frame=None):
|
| 113 |
-
"""Cleanup function to terminate background processes"""
|
| 114 |
-
global automation_process
|
| 115 |
-
print("\n\n🛑 Shutting down...")
|
| 116 |
-
|
| 117 |
-
if automation_process:
|
| 118 |
-
print("🧹 Stopping automation runner...")
|
| 119 |
-
automation_process.terminate()
|
| 120 |
-
automation_process.wait(timeout=5)
|
| 121 |
-
|
| 122 |
-
print("✅ Cleanup complete\n")
|
| 123 |
-
sys.exit(0)
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
class CustomHTTPRequestHandler(SimpleHTTPRequestHandler):
|
| 127 |
-
"""Custom handler to serve from the correct directory"""
|
| 128 |
-
|
| 129 |
-
def __init__(self, *args, **kwargs):
|
| 130 |
-
super().__init__(*args, directory=str(BASE_DIR), **kwargs)
|
| 131 |
-
|
| 132 |
-
def log_message(self, format, *args):
|
| 133 |
-
"""Custom logging to show requests"""
|
| 134 |
-
print(f"[WEB] {self.address_string()} - {format % args}")
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
def start_web_server():
|
| 138 |
-
"""Start the HTTP server to serve the static files"""
|
| 139 |
-
print(f"🌐 Starting web server on port {PORT}...")
|
| 140 |
-
|
| 141 |
-
handler = CustomHTTPRequestHandler
|
| 142 |
-
httpd = HTTPServer(('0.0.0.0', PORT), handler)
|
| 143 |
-
|
| 144 |
-
print(f"✅ Web server running at http://0.0.0.0:{PORT}")
|
| 145 |
-
print(f"📊 Open the map: http://0.0.0.0:{PORT}/index.html")
|
| 146 |
-
print(f"💡 Press Ctrl+C to stop\n")
|
| 147 |
-
|
| 148 |
-
try:
|
| 149 |
-
httpd.serve_forever()
|
| 150 |
-
except KeyboardInterrupt:
|
| 151 |
-
pass
|
| 152 |
-
finally:
|
| 153 |
-
httpd.shutdown()
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
def main():
|
| 157 |
-
"""Main entry point"""
|
| 158 |
-
print("=" * 70)
|
| 159 |
-
print("🗺️ Telugu Dialect Map - Hugging Face Spaces")
|
| 160 |
-
print("=" * 70)
|
| 161 |
-
print()
|
| 162 |
-
|
| 163 |
-
# Register signal handlers for graceful shutdown
|
| 164 |
-
signal.signal(signal.SIGINT, cleanup)
|
| 165 |
-
signal.signal(signal.SIGTERM, cleanup)
|
| 166 |
-
|
| 167 |
-
# Load secrets from environment variables
|
| 168 |
-
load_secrets_from_env()
|
| 169 |
-
|
| 170 |
-
# Start background automation
|
| 171 |
-
start_automation()
|
| 172 |
-
|
| 173 |
-
# Give automation a moment to start
|
| 174 |
-
time.sleep(2)
|
| 175 |
-
|
| 176 |
-
# Start web server (blocks here)
|
| 177 |
-
start_web_server()
|
| 178 |
-
|
| 179 |
-
# Cleanup (if we ever get here)
|
| 180 |
-
cleanup()
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
if __name__ == "__main__":
|
| 184 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config.json.example
DELETED
|
@@ -1,27 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"google_sheets": {
|
| 3 |
-
"enabled": true,
|
| 4 |
-
"sync_interval_minutes": 5,
|
| 5 |
-
"credentials_file": "credentials.json",
|
| 6 |
-
"spreadsheets": [
|
| 7 |
-
{
|
| 8 |
-
"id": "YOUR_SPREADSHEET_ID_1_HERE",
|
| 9 |
-
"sheet_name": "processed_dialects",
|
| 10 |
-
"output_file": "sheets_output/processed_dialects.csv"
|
| 11 |
-
},
|
| 12 |
-
{
|
| 13 |
-
"id": "YOUR_SPREADSHEET_ID_2_HERE",
|
| 14 |
-
"sheet_name": "digiwords_grouped",
|
| 15 |
-
"output_file": "sheets_output/digiwords_grouped.csv"
|
| 16 |
-
}
|
| 17 |
-
]
|
| 18 |
-
},
|
| 19 |
-
"file_watcher": {
|
| 20 |
-
"enabled": true,
|
| 21 |
-
"watch_directory": "sheets_output",
|
| 22 |
-
"file_patterns": ["*.csv"]
|
| 23 |
-
},
|
| 24 |
-
"output": {
|
| 25 |
-
"json_directory": "data/processed"
|
| 26 |
-
}
|
| 27 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
credentials.json.example
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"type": "service_account",
|
| 3 |
-
"project_id": "your-project-id",
|
| 4 |
-
"private_key_id": "your-private-key-id",
|
| 5 |
-
"private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY_HERE\n-----END PRIVATE KEY-----\n",
|
| 6 |
-
"client_email": "your-service-account@your-project.iam.gserviceaccount.com",
|
| 7 |
-
"client_id": "your-client-id",
|
| 8 |
-
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
| 9 |
-
"token_uri": "https://oauth2.googleapis.com/token",
|
| 10 |
-
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
| 11 |
-
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your-project.iam.gserviceaccount.com"
|
| 12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data/processed/digiwords_grouped.json
DELETED
|
@@ -1,962 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"Telangana": {
|
| 3 |
-
"Adilabad": [
|
| 4 |
-
{
|
| 5 |
-
"t": "చోలోట్",
|
| 6 |
-
"m": "మంచి (Good)",
|
| 7 |
-
"s": "Crowd"
|
| 8 |
-
},
|
| 9 |
-
{
|
| 10 |
-
"t": "వంచెడ్ చిబడ్",
|
| 11 |
-
"m": "అంటు ముట్టుకోడం",
|
| 12 |
-
"s": "Crowd"
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
"t": "వడోగు",
|
| 16 |
-
"m": "దూడ (Calf)",
|
| 17 |
-
"s": "Crowd"
|
| 18 |
-
},
|
| 19 |
-
{
|
| 20 |
-
"t": "ముచిలి పడన్",
|
| 21 |
-
"m": "ఎర్ర తుమ్మెద",
|
| 22 |
-
"s": "Crowd"
|
| 23 |
-
},
|
| 24 |
-
{
|
| 25 |
-
"t": "సర్కార్",
|
| 26 |
-
"m": "నాశనం",
|
| 27 |
-
"s": "Crowd"
|
| 28 |
-
},
|
| 29 |
-
{
|
| 30 |
-
"t": "వజీర్",
|
| 31 |
-
"m": "ముసలి",
|
| 32 |
-
"s": "Crowd"
|
| 33 |
-
},
|
| 34 |
-
{
|
| 35 |
-
"t": "ఖైని",
|
| 36 |
-
"m": "వదిన",
|
| 37 |
-
"s": "Crowd"
|
| 38 |
-
},
|
| 39 |
-
{
|
| 40 |
-
"t": "సూన్",
|
| 41 |
-
"m": "కోడలు",
|
| 42 |
-
"s": "Crowd"
|
| 43 |
-
},
|
| 44 |
-
{
|
| 45 |
-
"t": "Poral batal",
|
| 46 |
-
"m": "Temple term (Keslapur)",
|
| 47 |
-
"s": "Crowd"
|
| 48 |
-
}
|
| 49 |
-
],
|
| 50 |
-
"Gadwal": [
|
| 51 |
-
{
|
| 52 |
-
"t": "ఓల్లి",
|
| 53 |
-
"m": "No",
|
| 54 |
-
"s": "Crowd"
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"t": "కూడు తింటవా",
|
| 58 |
-
"m": "తిన్నారా",
|
| 59 |
-
"s": "Crowd"
|
| 60 |
-
},
|
| 61 |
-
{
|
| 62 |
-
"t": "తువ్వ",
|
| 63 |
-
"m": "ఎర్ర పొలం",
|
| 64 |
-
"s": "Crowd"
|
| 65 |
-
},
|
| 66 |
-
{
|
| 67 |
-
"t": "పురకోస",
|
| 68 |
-
"m": "జూట్ దార",
|
| 69 |
-
"s": "Crowd"
|
| 70 |
-
},
|
| 71 |
-
{
|
| 72 |
-
"t": "జుముజలమ్మ",
|
| 73 |
-
"m": "దేవత",
|
| 74 |
-
"s": "Crowd"
|
| 75 |
-
},
|
| 76 |
-
{
|
| 77 |
-
"t": "తలుగు ఎల్లమ్మ",
|
| 78 |
-
"m": "దేవత",
|
| 79 |
-
"s": "Crowd"
|
| 80 |
-
},
|
| 81 |
-
{
|
| 82 |
-
"t": "తెల్వది",
|
| 83 |
-
"m": "Don't know",
|
| 84 |
-
"s": "Crowd"
|
| 85 |
-
},
|
| 86 |
-
{
|
| 87 |
-
"t": "మడసంగ",
|
| 88 |
-
"m": "నెమ్మదిగా/జాగ్రత్తగా",
|
| 89 |
-
"s": "Crowd"
|
| 90 |
-
},
|
| 91 |
-
{
|
| 92 |
-
"t": "రప్పున",
|
| 93 |
-
"m": "జల్ది",
|
| 94 |
-
"s": "Crowd"
|
| 95 |
-
},
|
| 96 |
-
{
|
| 97 |
-
"t": "మడసంగ",
|
| 98 |
-
"m": "Careful",
|
| 99 |
-
"s": "Crowd"
|
| 100 |
-
}
|
| 101 |
-
],
|
| 102 |
-
"Hyderabad": [
|
| 103 |
-
{
|
| 104 |
-
"t": "కిటికీ",
|
| 105 |
-
"m": "Window",
|
| 106 |
-
"s": "Crowd"
|
| 107 |
-
},
|
| 108 |
-
{
|
| 109 |
-
"t": "అంగీ",
|
| 110 |
-
"m": "Shirt",
|
| 111 |
-
"s": "Crowd"
|
| 112 |
-
},
|
| 113 |
-
{
|
| 114 |
-
"t": "కుక్క",
|
| 115 |
-
"m": "Dog",
|
| 116 |
-
"s": "Crowd"
|
| 117 |
-
},
|
| 118 |
-
{
|
| 119 |
-
"t": "కుర్చీ",
|
| 120 |
-
"m": "Chair",
|
| 121 |
-
"s": "Crowd"
|
| 122 |
-
},
|
| 123 |
-
{
|
| 124 |
-
"t": "Amma buvva pettava",
|
| 125 |
-
"m": "Mother feed me",
|
| 126 |
-
"s": "Crowd"
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"t": "Chaderghat",
|
| 130 |
-
"m": "Location",
|
| 131 |
-
"s": "Crowd"
|
| 132 |
-
},
|
| 133 |
-
{
|
| 134 |
-
"t": "తొవ్వ దారి",
|
| 135 |
-
"m": "Way/Path",
|
| 136 |
-
"s": "Crowd"
|
| 137 |
-
},
|
| 138 |
-
{
|
| 139 |
-
"t": "పాతాళగరిసె",
|
| 140 |
-
"m": "Tool to remove bucket",
|
| 141 |
-
"s": "Crowd"
|
| 142 |
-
},
|
| 143 |
-
{
|
| 144 |
-
"t": "అంబటాలు",
|
| 145 |
-
"m": "Afternoon time",
|
| 146 |
-
"s": "Crowd"
|
| 147 |
-
},
|
| 148 |
-
{
|
| 149 |
-
"t": "ఇన్సురాయి",
|
| 150 |
-
"m": "Stone tool",
|
| 151 |
-
"s": "Crowd"
|
| 152 |
-
},
|
| 153 |
-
{
|
| 154 |
-
"t": "బుక్కెట్",
|
| 155 |
-
"m": "Tool for well",
|
| 156 |
-
"s": "Crowd"
|
| 157 |
-
}
|
| 158 |
-
],
|
| 159 |
-
"Jangaon": [
|
| 160 |
-
{
|
| 161 |
-
"t": "ఏమైంది",
|
| 162 |
-
"m": "What happened",
|
| 163 |
-
"s": "Crowd"
|
| 164 |
-
}
|
| 165 |
-
],
|
| 166 |
-
"Karimnagar": [
|
| 167 |
-
{
|
| 168 |
-
"t": "బూరెలు",
|
| 169 |
-
"m": "భక్ష్యాలు",
|
| 170 |
-
"s": "Crowd"
|
| 171 |
-
},
|
| 172 |
-
{
|
| 173 |
-
"t": "అచ్చినం",
|
| 174 |
-
"m": "వచ్చాము",
|
| 175 |
-
"s": "Crowd"
|
| 176 |
-
},
|
| 177 |
-
{
|
| 178 |
-
"t": "పాయినం",
|
| 179 |
-
"m": "వెళ్ళాము",
|
| 180 |
-
"s": "Crowd"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"t": "సవాలు",
|
| 184 |
-
"m": "Question/Challenge",
|
| 185 |
-
"s": "Crowd"
|
| 186 |
-
},
|
| 187 |
-
{
|
| 188 |
-
"t": "గటక",
|
| 189 |
-
"m": "Food item",
|
| 190 |
-
"s": "Crowd"
|
| 191 |
-
},
|
| 192 |
-
{
|
| 193 |
-
"t": "వస్తున్నావ",
|
| 194 |
-
"m": "వస్తున్నావు",
|
| 195 |
-
"s": "Crowd"
|
| 196 |
-
},
|
| 197 |
-
{
|
| 198 |
-
"t": "ఊశము",
|
| 199 |
-
"m": "బద్ధకం/అలసత్వం",
|
| 200 |
-
"s": "Crowd"
|
| 201 |
-
},
|
| 202 |
-
{
|
| 203 |
-
"t": "వందంగా ఉంది",
|
| 204 |
-
"m": "బాగా",
|
| 205 |
-
"s": "Crowd"
|
| 206 |
-
},
|
| 207 |
-
{
|
| 208 |
-
"t": "రువిడ్లు",
|
| 209 |
-
"m": "Shelf",
|
| 210 |
-
"s": "Crowd"
|
| 211 |
-
},
|
| 212 |
-
{
|
| 213 |
-
"t": "కార్యపాలు",
|
| 214 |
-
"m": "వస్తున్నం/పోతున్నాం",
|
| 215 |
-
"s": "Crowd"
|
| 216 |
-
},
|
| 217 |
-
{
|
| 218 |
-
"t": "బావి",
|
| 219 |
-
"m": "నూతి",
|
| 220 |
-
"s": "Crowd"
|
| 221 |
-
},
|
| 222 |
-
{
|
| 223 |
-
"t": "గంప",
|
| 224 |
-
"m": "గుల్ల",
|
| 225 |
-
"s": "Crowd"
|
| 226 |
-
},
|
| 227 |
-
{
|
| 228 |
-
"t": "బం��ి",
|
| 229 |
-
"m": "Ball",
|
| 230 |
-
"s": "Crowd"
|
| 231 |
-
}
|
| 232 |
-
],
|
| 233 |
-
"Mahabubnagar": [
|
| 234 |
-
{
|
| 235 |
-
"t": "వీధి",
|
| 236 |
-
"m": "Street",
|
| 237 |
-
"s": "Crowd"
|
| 238 |
-
},
|
| 239 |
-
{
|
| 240 |
-
"t": "జల్ది",
|
| 241 |
-
"m": "తొందరగా",
|
| 242 |
-
"s": "Crowd"
|
| 243 |
-
},
|
| 244 |
-
{
|
| 245 |
-
"t": "జింగిడి",
|
| 246 |
-
"m": "బర్రెల గుంపు",
|
| 247 |
-
"s": "Crowd"
|
| 248 |
-
},
|
| 249 |
-
{
|
| 250 |
-
"t": "బాగమ్",
|
| 251 |
-
"m": "Exhibition",
|
| 252 |
-
"s": "Crowd"
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"t": "చలక",
|
| 256 |
-
"m": "Field",
|
| 257 |
-
"s": "Crowd"
|
| 258 |
-
},
|
| 259 |
-
{
|
| 260 |
-
"t": "ఈల పేట",
|
| 261 |
-
"m": "కత్తి పేట",
|
| 262 |
-
"s": "Crowd"
|
| 263 |
-
}
|
| 264 |
-
],
|
| 265 |
-
"Mahabubabad": [
|
| 266 |
-
{
|
| 267 |
-
"t": "బొచ్చెడు",
|
| 268 |
-
"m": "చాలా (A lot)",
|
| 269 |
-
"s": "Crowd"
|
| 270 |
-
},
|
| 271 |
-
{
|
| 272 |
-
"t": "ఏ మయింది అన్నా",
|
| 273 |
-
"m": "What happened",
|
| 274 |
-
"s": "Crowd"
|
| 275 |
-
}
|
| 276 |
-
],
|
| 277 |
-
"Medak": [
|
| 278 |
-
{
|
| 279 |
-
"t": "కీసా",
|
| 280 |
-
"m": "జేబు",
|
| 281 |
-
"s": "Crowd"
|
| 282 |
-
},
|
| 283 |
-
{
|
| 284 |
-
"t": "పైను",
|
| 285 |
-
"m": "ఆరు (Six)",
|
| 286 |
-
"s": "Crowd"
|
| 287 |
-
}
|
| 288 |
-
],
|
| 289 |
-
"Nagar Kurnool": [
|
| 290 |
-
{
|
| 291 |
-
"t": "అంబటాలు",
|
| 292 |
-
"m": "Morning meal time",
|
| 293 |
-
"s": "Crowd"
|
| 294 |
-
},
|
| 295 |
-
{
|
| 296 |
-
"t": "మంకర",
|
| 297 |
-
"m": "Winter cold",
|
| 298 |
-
"s": "Crowd"
|
| 299 |
-
},
|
| 300 |
-
{
|
| 301 |
-
"t": "లాడు",
|
| 302 |
-
"m": "తల్లి కూతురు",
|
| 303 |
-
"s": "Crowd"
|
| 304 |
-
},
|
| 305 |
-
{
|
| 306 |
-
"t": "గెనిమ",
|
| 307 |
-
"m": "పొలం గట్టు",
|
| 308 |
-
"s": "Crowd"
|
| 309 |
-
},
|
| 310 |
-
{
|
| 311 |
-
"t": "కోంత లోలు",
|
| 312 |
-
"m": "Old name for Nagar Kurnool",
|
| 313 |
-
"s": "Crowd"
|
| 314 |
-
}
|
| 315 |
-
],
|
| 316 |
-
"Nalgonda": [
|
| 317 |
-
{
|
| 318 |
-
"t": "Dupa aithundhi",
|
| 319 |
-
"m": "దాహం వేస్తుంది",
|
| 320 |
-
"s": "Crowd"
|
| 321 |
-
},
|
| 322 |
-
{
|
| 323 |
-
"t": "సేరు",
|
| 324 |
-
"m": "1kg measuring device",
|
| 325 |
-
"s": "Crowd"
|
| 326 |
-
},
|
| 327 |
-
{
|
| 328 |
-
"t": "Kurdedu Biyam",
|
| 329 |
-
"m": "Amount of rice",
|
| 330 |
-
"s": "Crowd"
|
| 331 |
-
},
|
| 332 |
-
{
|
| 333 |
-
"t": "Anglam dundu",
|
| 334 |
-
"m": "అగ్గి పెట్టె",
|
| 335 |
-
"s": "Crowd"
|
| 336 |
-
},
|
| 337 |
-
{
|
| 338 |
-
"t": "సది",
|
| 339 |
-
"m": "Take the box",
|
| 340 |
-
"s": "Crowd"
|
| 341 |
-
},
|
| 342 |
-
{
|
| 343 |
-
"t": "తట్ట",
|
| 344 |
-
"m": "పళ్ళెం",
|
| 345 |
-
"s": "Crowd"
|
| 346 |
-
},
|
| 347 |
-
{
|
| 348 |
-
"t": "కోవెల",
|
| 349 |
-
"m": "గుడి",
|
| 350 |
-
"s": "Crowd"
|
| 351 |
-
},
|
| 352 |
-
{
|
| 353 |
-
"t": "ఊసలు",
|
| 354 |
-
"m": "Weaving technique",
|
| 355 |
-
"s": "Crowd"
|
| 356 |
-
},
|
| 357 |
-
{
|
| 358 |
-
"t": "బువ్వ",
|
| 359 |
-
"m": "Cooked rice",
|
| 360 |
-
"s": "Crowd"
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"t": "తవాచీ",
|
| 364 |
-
"m": "Shelf with doors",
|
| 365 |
-
"s": "Crowd"
|
| 366 |
-
},
|
| 367 |
-
{
|
| 368 |
-
"t": "తపుకు",
|
| 369 |
-
"m": "Plate on vessel",
|
| 370 |
-
"s": "Crowd"
|
| 371 |
-
},
|
| 372 |
-
{
|
| 373 |
-
"t": "లడ్లు",
|
| 374 |
-
"m": "అరిసెలు",
|
| 375 |
-
"s": "Crowd"
|
| 376 |
-
},
|
| 377 |
-
{
|
| 378 |
-
"t": "దారి",
|
| 379 |
-
"m": "బాట",
|
| 380 |
-
"s": "Crowd"
|
| 381 |
-
}
|
| 382 |
-
],
|
| 383 |
-
"Narayanpet": [
|
| 384 |
-
{
|
| 385 |
-
"t": "బుబ్బి",
|
| 386 |
-
"m": "అమ్మ",
|
| 387 |
-
"s": "Crowd"
|
| 388 |
-
},
|
| 389 |
-
{
|
| 390 |
-
"t": "పడం",
|
| 391 |
-
"m": "మట్టి",
|
| 392 |
-
"s": "Crowd"
|
| 393 |
-
},
|
| 394 |
-
{
|
| 395 |
-
"t": "చెముక్కలు",
|
| 396 |
-
"m": "మోకాళ్ళు",
|
| 397 |
-
"s": "Crowd"
|
| 398 |
-
},
|
| 399 |
-
{
|
| 400 |
-
"t": "మొర",
|
| 401 |
-
"m": "మంచం",
|
| 402 |
-
"s": "Crowd"
|
| 403 |
-
},
|
| 404 |
-
{
|
| 405 |
-
"t": "అబుత",
|
| 406 |
-
"m": "జుట్టు",
|
| 407 |
-
"s": "Crowd"
|
| 408 |
-
},
|
| 409 |
-
{
|
| 410 |
-
"t": "జేజి",
|
| 411 |
-
"m": "Fat",
|
| 412 |
-
"s": "Crowd"
|
| 413 |
-
},
|
| 414 |
-
{
|
| 415 |
-
"t": "అంబలి",
|
| 416 |
-
"m": "జావ",
|
| 417 |
-
"s": "Crowd"
|
| 418 |
-
}
|
| 419 |
-
],
|
| 420 |
-
"Nizamabad": [
|
| 421 |
-
{
|
| 422 |
-
"t": "పంపేవుడు",
|
| 423 |
-
"m": "పంపించడం",
|
| 424 |
-
"s": "Crowd"
|
| 425 |
-
},
|
| 426 |
-
{
|
| 427 |
-
"t": "Pillodu",
|
| 428 |
-
"m": "Bindu",
|
| 429 |
-
"s": "Crowd"
|
| 430 |
-
},
|
| 431 |
-
{
|
| 432 |
-
"t": "వచ్చిండు",
|
| 433 |
-
"m": "అచ్చిండు",
|
| 434 |
-
"s": "Crowd"
|
| 435 |
-
}
|
| 436 |
-
],
|
| 437 |
-
"Peddapally": [
|
| 438 |
-
{
|
| 439 |
-
"t": "గుమ్ము",
|
| 440 |
-
"m": "Storage",
|
| 441 |
-
"s": "Crowd"
|
| 442 |
-
},
|
| 443 |
-
{
|
| 444 |
-
"t": "గట్టు",
|
| 445 |
-
"m": "దారి",
|
| 446 |
-
"s": "Crowd"
|
| 447 |
-
}
|
| 448 |
-
],
|
| 449 |
-
"Rangareddy": [
|
| 450 |
-
{
|
| 451 |
-
"t": "వీరునో",
|
| 452 |
-
"m": "తెలుగు",
|
| 453 |
-
"s": "Crowd"
|
| 454 |
-
},
|
| 455 |
-
{
|
| 456 |
-
"t": "తొక్కుడు",
|
| 457 |
-
"m": "మంచం",
|
| 458 |
-
"s": "Crowd"
|
| 459 |
-
},
|
| 460 |
-
{
|
| 461 |
-
"t": "మూర",
|
| 462 |
-
"m": "ముంగిలి",
|
| 463 |
-
"s": "Crowd"
|
| 464 |
-
},
|
| 465 |
-
{
|
| 466 |
-
"t": "కారం",
|
| 467 |
-
"m": "పచ్చడి",
|
| 468 |
-
"s": "Crowd"
|
| 469 |
-
},
|
| 470 |
-
{
|
| 471 |
-
"t": "ఈ గడ",
|
| 472 |
-
"m": "కడ",
|
| 473 |
-
"s": "Crowd"
|
| 474 |
-
}
|
| 475 |
-
],
|
| 476 |
-
"Siddipet": [
|
| 477 |
-
{
|
| 478 |
-
"t": "అంగీ",
|
| 479 |
-
"m": "Shirt",
|
| 480 |
-
"s": "Crowd"
|
| 481 |
-
},
|
| 482 |
-
{
|
| 483 |
-
"t": "పొయ్యిర్రు",
|
| 484 |
-
"m": "వెళ్ళారు",
|
| 485 |
-
"s": "Crowd"
|
| 486 |
-
},
|
| 487 |
-
{
|
| 488 |
-
"t": "మెగులుతుంది",
|
| 489 |
-
"m": "వర్షం వచ్చి ఆగిన",
|
| 490 |
-
"s": "Crowd"
|
| 491 |
-
},
|
| 492 |
-
{
|
| 493 |
-
"t": "అలుకురు",
|
| 494 |
-
"m": "Pre cultivation",
|
| 495 |
-
"s": "Crowd"
|
| 496 |
-
},
|
| 497 |
-
{
|
| 498 |
-
"t": "పయిలం",
|
| 499 |
-
"m": "జాగ్రత్త",
|
| 500 |
-
"s": "Crowd"
|
| 501 |
-
},
|
| 502 |
-
{
|
| 503 |
-
"t": "తప్పెలు",
|
| 504 |
-
"m": "Rice plate",
|
| 505 |
-
"s": "Crowd"
|
| 506 |
-
},
|
| 507 |
-
{
|
| 508 |
-
"t": "పందిట్లు",
|
| 509 |
-
"m": "పందిరి",
|
| 510 |
-
"s": "Crowd"
|
| 511 |
-
},
|
| 512 |
-
{
|
| 513 |
-
"t": "రాకొచ్చింది",
|
| 514 |
-
"m": "రాదు",
|
| 515 |
-
"s": "Crowd"
|
| 516 |
-
},
|
| 517 |
-
{
|
| 518 |
-
"t": "పోకొచ్చింది",
|
| 519 |
-
"m": "పోదు",
|
| 520 |
-
"s": "Crowd"
|
| 521 |
-
},
|
| 522 |
-
{
|
| 523 |
-
"t": "కుకో",
|
| 524 |
-
"m": "కూర్చో",
|
| 525 |
-
"s": "Crowd"
|
| 526 |
-
},
|
| 527 |
-
{
|
| 528 |
-
"t": "ఏడారు",
|
| 529 |
-
"m": "Afternoon time",
|
| 530 |
-
"s": "Crowd"
|
| 531 |
-
}
|
| 532 |
-
],
|
| 533 |
-
"Wanaparthy": [
|
| 534 |
-
{
|
| 535 |
-
"t": "చెప్పలకాయలు",
|
| 536 |
-
"m": "గొంకరకాయలు",
|
| 537 |
-
"s": "Crowd"
|
| 538 |
-
},
|
| 539 |
-
{
|
| 540 |
-
"t": "మలంచా",
|
| 541 |
-
"m": "చెంబు",
|
| 542 |
-
"s": "Crowd"
|
| 543 |
-
},
|
| 544 |
-
{
|
| 545 |
-
"t": "సొరకాయ",
|
| 546 |
-
"m": "ఆనకాయ",
|
| 547 |
-
"s": "Crowd"
|
| 548 |
-
},
|
| 549 |
-
{
|
| 550 |
-
"t": "పాశాల",
|
| 551 |
-
"m": "Clothes",
|
| 552 |
-
"s": "Crowd"
|
| 553 |
-
},
|
| 554 |
-
{
|
| 555 |
-
"t": "మట్టుగుండు",
|
| 556 |
-
"m": "Keep calm",
|
| 557 |
-
"s": "Crowd"
|
| 558 |
-
},
|
| 559 |
-
{
|
| 560 |
-
"t": "అంబరుంది",
|
| 561 |
-
"m": "Excellent",
|
| 562 |
-
"s": "Crowd"
|
| 563 |
-
}
|
| 564 |
-
],
|
| 565 |
-
"Warangal": [
|
| 566 |
-
{
|
| 567 |
-
"t": "చేను",
|
| 568 |
-
"m": "Crop/చలక",
|
| 569 |
-
"s": "Crowd"
|
| 570 |
-
},
|
| 571 |
-
{
|
| 572 |
-
"t": "పొయ్యం రారా",
|
| 573 |
-
"m": "ఇన్నానిల్లు",
|
| 574 |
-
"s": "Crowd"
|
| 575 |
-
},
|
| 576 |
-
{
|
| 577 |
-
"t": "అసుంట",
|
| 578 |
-
"m": "అటు వైపు",
|
| 579 |
-
"s": "Crowd"
|
| 580 |
-
},
|
| 581 |
-
{
|
| 582 |
-
"t": "ఇసుంట",
|
| 583 |
-
"m": "ఇటు వైపు",
|
| 584 |
-
"s": "Crowd"
|
| 585 |
-
},
|
| 586 |
-
{
|
| 587 |
-
"t": "చద్దెర",
|
| 588 |
-
"m": "Bed sheet",
|
| 589 |
-
"s": "Crowd"
|
| 590 |
-
}
|
| 591 |
-
]
|
| 592 |
-
},
|
| 593 |
-
"Andhra Pradesh": {
|
| 594 |
-
"Anantapur": [
|
| 595 |
-
{
|
| 596 |
-
"t": "దిండు",
|
| 597 |
-
"m": "Pillows",
|
| 598 |
-
"s": "Crowd"
|
| 599 |
-
}
|
| 600 |
-
],
|
| 601 |
-
"Annamayya": [
|
| 602 |
-
{
|
| 603 |
-
"t": "ఆ తుప్పాస్",
|
| 604 |
-
"m": "Nonsense/Useless",
|
| 605 |
-
"s": "Crowd"
|
| 606 |
-
}
|
| 607 |
-
],
|
| 608 |
-
"Chittoor": [
|
| 609 |
-
{
|
| 610 |
-
"t": "ముడ్దులు",
|
| 611 |
-
"m": "అంగడి",
|
| 612 |
-
"s": "Crowd"
|
| 613 |
-
},
|
| 614 |
-
{
|
| 615 |
-
"t": "సెమిరేసినావ",
|
| 616 |
-
"m": "Prepared",
|
| 617 |
-
"s": "Crowd"
|
| 618 |
-
},
|
| 619 |
-
{
|
| 620 |
-
"t": "వంకాయ పులగూర్",
|
| 621 |
-
"m": "కూర",
|
| 622 |
-
"s": "Crowd"
|
| 623 |
-
},
|
| 624 |
-
{
|
| 625 |
-
"t": "ఈరి మోది",
|
| 626 |
-
"m": "పచ్చడి",
|
| 627 |
-
"s": "Crowd"
|
| 628 |
-
},
|
| 629 |
-
{
|
| 630 |
-
"t": "అబ్బ",
|
| 631 |
-
"m": "Grandfather",
|
| 632 |
-
"s": "Crowd"
|
| 633 |
-
},
|
| 634 |
-
{
|
| 635 |
-
"t": "జెడి",
|
| 636 |
-
"m": "Hair knot",
|
| 637 |
-
"s": "Crowd"
|
| 638 |
-
}
|
| 639 |
-
],
|
| 640 |
-
"East Godavari": [
|
| 641 |
-
{
|
| 642 |
-
"t": "దుకాణం",
|
| 643 |
-
"m": "కొట్టు",
|
| 644 |
-
"s": "Crowd"
|
| 645 |
-
},
|
| 646 |
-
{
|
| 647 |
-
"t": "పైరు",
|
| 648 |
-
"m": "బంగాళదుంప",
|
| 649 |
-
"s": "Crowd"
|
| 650 |
-
},
|
| 651 |
-
{
|
| 652 |
-
"t": "బువ్వ",
|
| 653 |
-
"m": "Food",
|
| 654 |
-
"s": "Crowd"
|
| 655 |
-
},
|
| 656 |
-
{
|
| 657 |
-
"t": "గుడి",
|
| 658 |
-
"m": "దేవాలయం",
|
| 659 |
-
"s": "Crowd"
|
| 660 |
-
},
|
| 661 |
-
{
|
| 662 |
-
"t": "సామానం",
|
| 663 |
-
"m": "ఆలస్యం చేయడం",
|
| 664 |
-
"s": "Crowd"
|
| 665 |
-
},
|
| 666 |
-
{
|
| 667 |
-
"t": "బేగ రా",
|
| 668 |
-
"m": "తొందరగా రా",
|
| 669 |
-
"s": "Crowd"
|
| 670 |
-
}
|
| 671 |
-
],
|
| 672 |
-
"Eluru": [
|
| 673 |
-
{
|
| 674 |
-
"t": "శనగపప్పు",
|
| 675 |
-
"m": "వేరుశనగ",
|
| 676 |
-
"s": "Crowd"
|
| 677 |
-
},
|
| 678 |
-
{
|
| 679 |
-
"t": "చాలా బాగుంది",
|
| 680 |
-
"m": "Very good",
|
| 681 |
-
"s": "Crowd"
|
| 682 |
-
}
|
| 683 |
-
],
|
| 684 |
-
"Kadapa": [
|
| 685 |
-
{
|
| 686 |
-
"t": "కంత",
|
| 687 |
-
"m": "రంధ్రం (Hole)",
|
| 688 |
-
"s": "Crowd"
|
| 689 |
-
},
|
| 690 |
-
{
|
| 691 |
-
"t": "బాగా ఎక్కువగా",
|
| 692 |
-
"m": "Exceedingly",
|
| 693 |
-
"s": "Crowd"
|
| 694 |
-
},
|
| 695 |
-
{
|
| 696 |
-
"t": "చాపు మాటలు",
|
| 697 |
-
"m": "పెద్ద మాటలు",
|
| 698 |
-
"s": "Crowd"
|
| 699 |
-
},
|
| 700 |
-
{
|
| 701 |
-
"t": "బొరుగులు",
|
| 702 |
-
"m": "మరమరాలు",
|
| 703 |
-
"s": "Crowd"
|
| 704 |
-
},
|
| 705 |
-
{
|
| 706 |
-
"t": "రామాడం",
|
| 707 |
-
"m": "మెత్తగా చేయడం",
|
| 708 |
-
"s": "Crowd"
|
| 709 |
-
},
|
| 710 |
-
{
|
| 711 |
-
"t": "ఎనుము",
|
| 712 |
-
"m": "బర్రె",
|
| 713 |
-
"s": "Crowd"
|
| 714 |
-
},
|
| 715 |
-
{
|
| 716 |
-
"t": "ముక్కొల్",
|
| 717 |
-
"m": "3 వాడిముళ్ళు",
|
| 718 |
-
"s": "Crowd"
|
| 719 |
-
}
|
| 720 |
-
],
|
| 721 |
-
"Kurnool": [
|
| 722 |
-
{
|
| 723 |
-
"t": "బుడ్డల నూనె",
|
| 724 |
-
"m": "పల్లి oil (Peanut oil)",
|
| 725 |
-
"s": "Crowd"
|
| 726 |
-
}
|
| 727 |
-
],
|
| 728 |
-
"Nandyal": [
|
| 729 |
-
{
|
| 730 |
-
"t": "తంగాది",
|
| 731 |
-
"m": "కొట్టుదు ఇచ్చింది మధ్యన",
|
| 732 |
-
"s": "Crowd"
|
| 733 |
-
},
|
| 734 |
-
{
|
| 735 |
-
"t": "గుడి",
|
| 736 |
-
"m": "దేవాలయము",
|
| 737 |
-
"s": "Crowd"
|
| 738 |
-
},
|
| 739 |
-
{
|
| 740 |
-
"t": "హితాలు",
|
| 741 |
-
"m": "బువ్వ తిన్నారా",
|
| 742 |
-
"s": "Crowd"
|
| 743 |
-
},
|
| 744 |
-
{
|
| 745 |
-
"t": "తద్దినం",
|
| 746 |
-
"m": "పితృ దేవతల కార్యం",
|
| 747 |
-
"s": "Crowd"
|
| 748 |
-
},
|
| 749 |
-
{
|
| 750 |
-
"t": "తువాయి",
|
| 751 |
-
"m": "ఆవు దూడ (Calf)",
|
| 752 |
-
"s": "Crowd"
|
| 753 |
-
},
|
| 754 |
-
{
|
| 755 |
-
"t": "పురుకోస",
|
| 756 |
-
"m": "Jute thread twisted",
|
| 757 |
-
"s": "Crowd"
|
| 758 |
-
}
|
| 759 |
-
],
|
| 760 |
-
"Ongole": [
|
| 761 |
-
{
|
| 762 |
-
"t": "బయట వెళ్ళాడు",
|
| 763 |
-
"m": "బయటకు వెళ్ళాడు",
|
| 764 |
-
"s": "Crowd"
|
| 765 |
-
}
|
| 766 |
-
],
|
| 767 |
-
"P.R. నియోజకవర్గం": [
|
| 768 |
-
{
|
| 769 |
-
"t": "ఎర్రగడ్డ",
|
| 770 |
-
"m": "Onion",
|
| 771 |
-
"s": "Crowd"
|
| 772 |
-
},
|
| 773 |
-
{
|
| 774 |
-
"t": "తెల్ల గడ్డ",
|
| 775 |
-
"m": "వెల్లుల్లి",
|
| 776 |
-
"s": "Crowd"
|
| 777 |
-
},
|
| 778 |
-
{
|
| 779 |
-
"t": "ఉల్లగడ్డ",
|
| 780 |
-
"m": "Potato",
|
| 781 |
-
"s": "Crowd"
|
| 782 |
-
},
|
| 783 |
-
{
|
| 784 |
-
"t": "ఖిన్నారా",
|
| 785 |
-
"m": "అద్దెకు రా",
|
| 786 |
-
"s": "Crowd"
|
| 787 |
-
},
|
| 788 |
-
{
|
| 789 |
-
"t": "ముడక",
|
| 790 |
-
"m": "నాగలి",
|
| 791 |
-
"s": "Crowd"
|
| 792 |
-
},
|
| 793 |
-
{
|
| 794 |
-
"t": "కొక",
|
| 795 |
-
"m": "చీర",
|
| 796 |
-
"s": "Crowd"
|
| 797 |
-
},
|
| 798 |
-
{
|
| 799 |
-
"t": "రైన",
|
| 800 |
-
"m": "జాకెట్",
|
| 801 |
-
"s": "Crowd"
|
| 802 |
-
},
|
| 803 |
-
{
|
| 804 |
-
"t": "కడ్డీలు",
|
| 805 |
-
"m": "అగరబత్తిలు",
|
| 806 |
-
"s": "Crowd"
|
| 807 |
-
},
|
| 808 |
-
{
|
| 809 |
-
"t": "పెద్ద నాన్న",
|
| 810 |
-
"m": "నాన్న అన్న",
|
| 811 |
-
"s": "Crowd"
|
| 812 |
-
},
|
| 813 |
-
{
|
| 814 |
-
"t": "చిన్న నాన్న",
|
| 815 |
-
"m": "నాన్న తమ్ముడు",
|
| 816 |
-
"s": "Crowd"
|
| 817 |
-
},
|
| 818 |
-
{
|
| 819 |
-
"t": "పెద్దమ్మ",
|
| 820 |
-
"m": "నాన్న అన్న భార్య",
|
| 821 |
-
"s": "Crowd"
|
| 822 |
-
},
|
| 823 |
-
{
|
| 824 |
-
"t": "చిన్నమ్మ",
|
| 825 |
-
"m": "నాన్న తమ్ముడు భార్య",
|
| 826 |
-
"s": "Crowd"
|
| 827 |
-
},
|
| 828 |
-
{
|
| 829 |
-
"t": "పొద్దు పొయ్యింది",
|
| 830 |
-
"m": "సాయంత్రం సమయం",
|
| 831 |
-
"s": "Crowd"
|
| 832 |
-
}
|
| 833 |
-
],
|
| 834 |
-
"Rayalaseema": [
|
| 835 |
-
{
|
| 836 |
-
"t": "లోపల",
|
| 837 |
-
"m": "Inside",
|
| 838 |
-
"s": "Crowd"
|
| 839 |
-
},
|
| 840 |
-
{
|
| 841 |
-
"t": "బొగాలు",
|
| 842 |
-
"m": "Keys",
|
| 843 |
-
"s": "Crowd"
|
| 844 |
-
}
|
| 845 |
-
],
|
| 846 |
-
"Srikakulam": [
|
| 847 |
-
{
|
| 848 |
-
"t": "డొంక",
|
| 849 |
-
"m": "తలుపు (Door)",
|
| 850 |
-
"s": "Crowd"
|
| 851 |
-
},
|
| 852 |
-
{
|
| 853 |
-
"t": "కుంక",
|
| 854 |
-
"m": "Pillodu",
|
| 855 |
-
"s": "Crowd"
|
| 856 |
-
},
|
| 857 |
-
{
|
| 858 |
-
"t": "ఖాగి",
|
| 859 |
-
"m": "వేగంగా",
|
| 860 |
-
"s": "Crowd"
|
| 861 |
-
},
|
| 862 |
-
{
|
| 863 |
-
"t": "బాతె",
|
| 864 |
-
"m": "చావు",
|
| 865 |
-
"s": "Crowd"
|
| 866 |
-
},
|
| 867 |
-
{
|
| 868 |
-
"t": "అమ్మ",
|
| 869 |
-
"m": "Mother",
|
| 870 |
-
"s": "Crowd"
|
| 871 |
-
},
|
| 872 |
-
{
|
| 873 |
-
"t": "తెల్లారితే",
|
| 874 |
-
"m": "వేకువన",
|
| 875 |
-
"s": "Crowd"
|
| 876 |
-
}
|
| 877 |
-
],
|
| 878 |
-
"Tirupati": [
|
| 879 |
-
{
|
| 880 |
-
"t": "ఊరాల్",
|
| 881 |
-
"m": "Nonsense",
|
| 882 |
-
"s": "Crowd"
|
| 883 |
-
}
|
| 884 |
-
],
|
| 885 |
-
"Vizianagaram": [
|
| 886 |
-
{
|
| 887 |
-
"t": "ఉకుజురు",
|
| 888 |
-
"m": "Egg Burji",
|
| 889 |
-
"s": "Crowd"
|
| 890 |
-
},
|
| 891 |
-
{
|
| 892 |
-
"t": "వర్ర",
|
| 893 |
-
"m": "కారం",
|
| 894 |
-
"s": "Crowd"
|
| 895 |
-
},
|
| 896 |
-
{
|
| 897 |
-
"t": "బేపి",
|
| 898 |
-
"m": "కుక్క",
|
| 899 |
-
"s": "Crowd"
|
| 900 |
-
},
|
| 901 |
-
{
|
| 902 |
-
"t": "పైనా",
|
| 903 |
-
"m": "పైన",
|
| 904 |
-
"s": "Crowd"
|
| 905 |
-
},
|
| 906 |
-
{
|
| 907 |
-
"t": "దొడ్డ",
|
| 908 |
-
"m": "పెద్ద అమ్మ",
|
| 909 |
-
"s": "Crowd"
|
| 910 |
-
},
|
| 911 |
-
{
|
| 912 |
-
"t": "జిజ బేగరా",
|
| 913 |
-
"m": "తొందరగా రా",
|
| 914 |
-
"s": "Crowd"
|
| 915 |
-
},
|
| 916 |
-
{
|
| 917 |
-
"t": "బంగాళదుంప",
|
| 918 |
-
"m": "ఆలుగడ్డ",
|
| 919 |
-
"s": "Crowd"
|
| 920 |
-
},
|
| 921 |
-
{
|
| 922 |
-
"t": "ఉల్లిపాయ",
|
| 923 |
-
"m": "ఎర్రగడ్డ",
|
| 924 |
-
"s": "Crowd"
|
| 925 |
-
},
|
| 926 |
-
{
|
| 927 |
-
"t": "అప్ప",
|
| 928 |
-
"m": "అక్క",
|
| 929 |
-
"s": "Crowd"
|
| 930 |
-
},
|
| 931 |
-
{
|
| 932 |
-
"t": "గుంత",
|
| 933 |
-
"m": "రంధ్రం",
|
| 934 |
-
"s": "Crowd"
|
| 935 |
-
},
|
| 936 |
-
{
|
| 937 |
-
"t": "గెడ/బర్రె",
|
| 938 |
-
"m": "Buffalo",
|
| 939 |
-
"s": "Crowd"
|
| 940 |
-
},
|
| 941 |
-
{
|
| 942 |
-
"t": "గడ్డి",
|
| 943 |
-
"m": "చిన్న సెలయేరు",
|
| 944 |
-
"s": "Crowd"
|
| 945 |
-
}
|
| 946 |
-
],
|
| 947 |
-
"West Godavari": [
|
| 948 |
-
{
|
| 949 |
-
"t": "రాతు తడి",
|
| 950 |
-
"m": "Irrigation term",
|
| 951 |
-
"s": "Crowd"
|
| 952 |
-
}
|
| 953 |
-
],
|
| 954 |
-
"Guntur": [
|
| 955 |
-
{
|
| 956 |
-
"t": "నగబు ",
|
| 957 |
-
"m": "An ancient word for snake",
|
| 958 |
-
"s": "Crowd"
|
| 959 |
-
}
|
| 960 |
-
]
|
| 961 |
-
}
|
| 962 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data/processed/processed_dialects.json
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
<head>
|
| 5 |
<meta charset="UTF-8">
|
| 6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
-
<title>Telugu Dialect Map
|
| 8 |
|
| 9 |
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
| 10 |
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
|
|
@@ -122,6 +122,19 @@
|
|
| 122 |
font-size: 0.95rem;
|
| 123 |
}
|
| 124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
#map {
|
| 126 |
flex-grow: 1;
|
| 127 |
height: 100%;
|
|
@@ -151,8 +164,8 @@
|
|
| 151 |
|
| 152 |
<div id="sidebar">
|
| 153 |
<div class="header">
|
| 154 |
-
<h1>Telugu Dialect Map</h1>
|
| 155 |
-
<p
|
| 156 |
</div>
|
| 157 |
<div id="info-panel">
|
| 158 |
<div style="text-align: center; color: #888; margin-top: 60px;">
|
|
@@ -168,31 +181,14 @@
|
|
| 168 |
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
| 169 |
|
| 170 |
<script>
|
| 171 |
-
// --- 1. THE DATA
|
| 172 |
-
|
|
|
|
| 173 |
// === NORTHERN TELANGANA ===
|
| 174 |
{
|
| 175 |
name: "Adilabad", lat: 19.6641, lng: 78.5320, region: "Northern Forest",
|
| 176 |
history: "Heavily influenced by Gondi tribal dialects and Marathi due to the Maharashtra border.",
|
| 177 |
words: [
|
| 178 |
-
{ t: "చోలోట్", m: "మంచి (Good)", s: "Crowd" },
|
| 179 |
-
{ t: "వంచెడ్ చిబడ్", m: "అంటు ముట్టుకోడం", s: "Crowd" },
|
| 180 |
-
{ t: "వడోగు", m: "దూడ (Calf)", s: "Crowd" },
|
| 181 |
-
{ t: "ముచిలి పడన్", m: "ఎర్ర తుమ్మెద", s: "Crowd" },
|
| 182 |
-
{ t: "సర్కార్", m: "నాశనం", s: "Crowd" },
|
| 183 |
-
{ t: "వజీర్", m: "ముసలి", s: "Crowd" },
|
| 184 |
-
{ t: "ఖైని", m: "వదిన", s: "Crowd" },
|
| 185 |
-
{ t: "సూన్", m: "కోడలు", s: "Crowd" },
|
| 186 |
-
{ t: "Poral batal", m: "Temple term (Keslapur)", s: "Crowd" },
|
| 187 |
-
{ t: "చోలోట్", m: "మంచి (Good)", s: "Crowd" },
|
| 188 |
-
{ t: "వంచెడ్ చిబడ్", m: "అంటు ముట్టుకోడం", s: "Crowd" },
|
| 189 |
-
{ t: "వడోగు", m: "దూడ (Calf)", s: "Crowd" },
|
| 190 |
-
{ t: "ముచిలి పడన్", m: "ఎర్ర తుమ్మెద", s: "Crowd" },
|
| 191 |
-
{ t: "సర్కార్", m: "నాశనం", s: "Crowd" },
|
| 192 |
-
{ t: "వజీర్", m: "ముసలి", s: "Crowd" },
|
| 193 |
-
{ t: "ఖైని", m: "వదిన", s: "Crowd" },
|
| 194 |
-
{ t: "సూన్", m: "కోడలు", s: "Crowd" },
|
| 195 |
-
{ t: "Poral batal", m: "Temple term (Keslapur)", s: "Crowd" },
|
| 196 |
{ t: "కోయంగ్", m: "Dialect/Language", s: "Gondi" }, { t: "పైలం", m: "Careful", s: "Mandalikalu" },
|
| 197 |
{ t: "ఆడ", m: "There", s: "General" }, { t: "కాకా", m: "Uncle", s: "Marathi Infl." },
|
| 198 |
{ t: "పటేల్", m: "Village Head", s: "Tribal" }, { t: "గూడ", m: "Hamlet", s: "Rural" },
|
|
@@ -238,12 +234,6 @@
|
|
| 238 |
name: "Nizamabad", lat: 18.6725, lng: 78.0941, region: "Indur Agrarian",
|
| 239 |
history: "Rich agricultural zone (Turmeric). Strong Dakhni Urdu influence from the Nizam era.",
|
| 240 |
words: [
|
| 241 |
-
{ t: "పంపేవుడు", m: "పంపించడం", s: "Crowd" },
|
| 242 |
-
{ t: "Pillodu", m: "Bindu", s: "Crowd" },
|
| 243 |
-
{ t: "వచ్చిండు", m: "అచ్చిండు", s: "Crowd" },
|
| 244 |
-
{ t: "పంపేవుడు", m: "పంపించడం", s: "Crowd" },
|
| 245 |
-
{ t: "Pillodu", m: "Bindu", s: "Crowd" },
|
| 246 |
-
{ t: "వచ్చిండు", m: "అచ్చిండు", s: "Crowd" },
|
| 247 |
{ t: "పసుపు", m: "Turmeric", s: "Agri" }, { t: "ఐగలు", m: "Priest", s: "Mandalikalu" },
|
| 248 |
{ t: "హామీ", m: "Assurance", s: "Urdu Infl." }, { t: "జీరా", m: "Boundary", s: "Agri" },
|
| 249 |
{ t: "పుంటికూర", m: "Gongura", s: "Food" }, { t: "అంగడి", m: "Shop", s: "Rural" },
|
|
@@ -267,32 +257,6 @@
|
|
| 267 |
name: "Karimnagar", lat: 18.4386, lng: 79.1288, region: "Cultural Core",
|
| 268 |
history: "Considered the standard for 'Telangana Slang' in media. Sharp, distinct pronunciation.",
|
| 269 |
words: [
|
| 270 |
-
{ t: "బూరెలు", m: "భక్ష్యాలు", s: "Crowd" },
|
| 271 |
-
{ t: "అచ్చినం", m: "వచ్చాము", s: "Crowd" },
|
| 272 |
-
{ t: "పాయినం", m: "వెళ్ళాము", s: "Crowd" },
|
| 273 |
-
{ t: "సవాలు", m: "Question/Challenge", s: "Crowd" },
|
| 274 |
-
{ t: "గటక", m: "Food item", s: "Crowd" },
|
| 275 |
-
{ t: "వస్తున్నావ", m: "వస్తున్నావు", s: "Crowd" },
|
| 276 |
-
{ t: "ఊశము", m: "బద్ధకం/అలసత్వం", s: "Crowd" },
|
| 277 |
-
{ t: "వందంగా ఉంది", m: "బాగా", s: "Crowd" },
|
| 278 |
-
{ t: "రువిడ్లు", m: "Shelf", s: "Crowd" },
|
| 279 |
-
{ t: "కార్యపాలు", m: "వస్తున్నం/పోతున్నాం", s: "Crowd" },
|
| 280 |
-
{ t: "బావి", m: "నూతి", s: "Crowd" },
|
| 281 |
-
{ t: "గంప", m: "గుల్ల", s: "Crowd" },
|
| 282 |
-
{ t: "బంతి", m: "Ball", s: "Crowd" },
|
| 283 |
-
{ t: "బూరెలు", m: "భక్ష్యాలు", s: "Crowd" },
|
| 284 |
-
{ t: "అచ్చినం", m: "వచ్చాము", s: "Crowd" },
|
| 285 |
-
{ t: "పాయినం", m: "వెళ్ళాము", s: "Crowd" },
|
| 286 |
-
{ t: "సవాలు", m: "Question/Challenge", s: "Crowd" },
|
| 287 |
-
{ t: "గటక", m: "Food item", s: "Crowd" },
|
| 288 |
-
{ t: "వస్తున్నావ", m: "వస్తున్నావు", s: "Crowd" },
|
| 289 |
-
{ t: "ఊశము", m: "బద్ధకం/అలసత్వం", s: "Crowd" },
|
| 290 |
-
{ t: "వందంగా ఉంది", m: "బాగా", s: "Crowd" },
|
| 291 |
-
{ t: "రువిడ్లు", m: "Shelf", s: "Crowd" },
|
| 292 |
-
{ t: "కార్యపాలు", m: "వస్తున్నం/పోతున్నాం", s: "Crowd" },
|
| 293 |
-
{ t: "బావి", m: "నూతి", s: "Crowd" },
|
| 294 |
-
{ t: "గంప", m: "గుల్ల", s: "Crowd" },
|
| 295 |
-
{ t: "బంతి", m: "Ball", s: "Crowd" },
|
| 296 |
{ t: "తోపు", m: "Great/Top", s: "Slang" }, { t: "కేక", m: "Super", s: "Slang" },
|
| 297 |
{ t: "లొల్లి", m: "Fight/Noise", s: "General" }, { t: "శాన", m: "Very", s: "Mandalikalu" },
|
| 298 |
{ t: "పైసల్", m: "Money", s: "General" }, { t: "గత్తర", m: "Mess", s: "Slang" },
|
|
@@ -315,10 +279,6 @@
|
|
| 315 |
name: "Peddapalli", lat: 18.6146, lng: 79.3705, region: "Industrial Hub",
|
| 316 |
history: "Home to NTPC and Coal mines. Vocabulary is a mix of rural and industrial English loan words.",
|
| 317 |
words: [
|
| 318 |
-
{ t: "గుమ్ము", m: "Storage", s: "Crowd" },
|
| 319 |
-
{ t: "గట్టు", m: "దారి", s: "Crowd" },
|
| 320 |
-
{ t: "గుమ్ము", m: "Storage", s: "Crowd" },
|
| 321 |
-
{ t: "గట్టు", m: "దారి", s: "Crowd" },
|
| 322 |
{ t: "బొగ్గు", m: "Coal", s: "Mining" }, { t: "కరెంట్", m: "Power", s: "Utility" },
|
| 323 |
{ t: "క్వార్టర్", m: "Housing", s: "Industry" }, { t: "షిఫ్ట్", m: "Work Shift", s: "Labor" },
|
| 324 |
{ t: "గేట్", m: "Entrance", s: "General" }, { t: "పోరడు", m: "Boy", s: "General" },
|
|
@@ -342,16 +302,6 @@
|
|
| 342 |
name: "Warangal", lat: 17.9689, lng: 79.5941, region: "Kakatiya Rural",
|
| 343 |
history: "Historic Orugallu. Retains classical Telugu terms mixed with rural agricultural slang.",
|
| 344 |
words: [
|
| 345 |
-
{ t: "చేను", m: "Crop/చలక", s: "Crowd" },
|
| 346 |
-
{ t: "పొయ్యం రారా", m: "ఇన్నానిల్లు", s: "Crowd" },
|
| 347 |
-
{ t: "అసుంట", m: "అటు వైపు", s: "Crowd" },
|
| 348 |
-
{ t: "ఇసుంట", m: "ఇటు వైపు", s: "Crowd" },
|
| 349 |
-
{ t: "చద్దెర", m: "Bed sheet", s: "Crowd" },
|
| 350 |
-
{ t: "చేను", m: "Crop/చలక", s: "Crowd" },
|
| 351 |
-
{ t: "పొయ్యం రారా", m: "ఇన్నానిల్లు", s: "Crowd" },
|
| 352 |
-
{ t: "అసుంట", m: "అటు వైపు", s: "Crowd" },
|
| 353 |
-
{ t: "ఇసుంట", m: "ఇటు వైపు", s: "Crowd" },
|
| 354 |
-
{ t: "చద్దెర", m: "Bed sheet", s: "Crowd" },
|
| 355 |
{ t: "చెల్క", m: "Field", s: "Agri" }, { t: "గ���్డపార", m: "Crowbar", s: "Tools" },
|
| 356 |
{ t: "నాగలి", m: "Plough", s: "Agri" }, { t: "ఎడ్లు", m: "Bulls", s: "Agri" },
|
| 357 |
{ t: "పంట", m: "Crop", s: "Agri" }, { t: "ఎరువ", m: "Fertilizer", s: "Agri" },
|
|
@@ -374,8 +324,6 @@
|
|
| 374 |
name: "Jangaon", lat: 17.7226, lng: 79.1685, region: "Central Junction",
|
| 375 |
history: "A crossroads district. Famous for Jatharas and rural festivals.",
|
| 376 |
words: [
|
| 377 |
-
{ t: "ఏమైంది", m: "What happened", s: "Crowd" },
|
| 378 |
-
{ t: "ఏమైంది", m: "What happened", s: "Crowd" },
|
| 379 |
{ t: "గుట్ట", m: "Hillock", s: "Geo" }, { t: "జాతర", m: "Fair", s: "Culture" },
|
| 380 |
{ t: "బోనం", m: "Offering", s: "Ritual" }, { t: "సాక", m: "Branch", s: "Nature" },
|
| 381 |
{ t: "కోడి", m: "Chicken", s: "Food" }, { t: "మేక", m: "Goat", s: "Agri" },
|
|
@@ -398,10 +346,6 @@
|
|
| 398 |
name: "Mahabubabad", lat: 17.5956, lng: 80.0053, region: "Tribal Corridor",
|
| 399 |
history: "Strong Lambadi/Banjara tribal presence influences the local lexicon.",
|
| 400 |
words: [
|
| 401 |
-
{ t: "బొచ్చెడు", m: "చాలా (A lot)", s: "Crowd" },
|
| 402 |
-
{ t: "ఏ మయింది అన్నా", m: "What happened", s: "Crowd" },
|
| 403 |
-
{ t: "బొచ్చెడు", m: "చాలా (A lot)", s: "Crowd" },
|
| 404 |
-
{ t: "ఏ మయింది అన్నా", m: "What happened", s: "Crowd" },
|
| 405 |
{ t: "తండా", m: "Hamlet", s: "Tribal" }, { t: "బంజారా", m: "Tribe", s: "Community" },
|
| 406 |
{ t: "గూడు", m: "Nest/Hut", s: "General" }, { t: "తవ్వు", m: "Dig", s: "Action" },
|
| 407 |
{ t: "పాట", m: "Song", s: "Culture" }, { t: "ఆట", m: "Dance/Play", s: "Culture" },
|
|
@@ -447,18 +391,6 @@
|
|
| 447 |
name: "Mahabubnagar", lat: 16.7488, lng: 78.0035, region: "Palamuru",
|
| 448 |
history: "Palamuru region. Known for migration (Valasa) and distinct, rougher intonation.",
|
| 449 |
words: [
|
| 450 |
-
{ t: "వీధి", m: "Street", s: "Crowd" },
|
| 451 |
-
{ t: "జల్ది", m: "తొందరగా", s: "Crowd" },
|
| 452 |
-
{ t: "జింగిడి", m: "బర్రెల గుంపు", s: "Crowd" },
|
| 453 |
-
{ t: "బాగమ్", m: "Exhibition", s: "Crowd" },
|
| 454 |
-
{ t: "చలక", m: "Field", s: "Crowd" },
|
| 455 |
-
{ t: "ఈల పేట", m: "కత్తి పేట", s: "Crowd" },
|
| 456 |
-
{ t: "వీధి", m: "Street", s: "Crowd" },
|
| 457 |
-
{ t: "జల్ది", m: "తొందరగా", s: "Crowd" },
|
| 458 |
-
{ t: "జింగిడి", m: "బర్రెల గుంపు", s: "Crowd" },
|
| 459 |
-
{ t: "బాగమ్", m: "Exhibition", s: "Crowd" },
|
| 460 |
-
{ t: "చలక", m: "Field", s: "Crowd" },
|
| 461 |
-
{ t: "ఈల పేట", m: "కత్తి పేట", s: "Crowd" },
|
| 462 |
{ t: "పాలమూరు", m: "Mahabubnagar", s: "Place" }, { t: "వలస", m: "Migration", s: "Social" },
|
| 463 |
{ t: "కూలీ", m: "Laborer", s: "Social" }, { t: "అడ్డా", m: "Stand/Place", s: "Social" },
|
| 464 |
{ t: "అప్ప", m: "Father", s: "Seema Infl." }, { t: "అయ్య", m: "Father", s: "General" },
|
|
@@ -470,18 +402,6 @@
|
|
| 470 |
name: "Nagarkurnool", lat: 16.4856, lng: 78.3305, region: "Nallamalla Zone",
|
| 471 |
history: "Covers the Nallamalla forest. Chenchu tribal words are part of the local mix.",
|
| 472 |
words: [
|
| 473 |
-
{ t: "అంబటాలు", m: "Morning meal time", s: "Crowd" },
|
| 474 |
-
{ t: "మంకర", m: "Winter cold", s: "Crowd" },
|
| 475 |
-
{ t: "లాడు", m: "తల్లి కూతురు", s: "Crowd" },
|
| 476 |
-
{ t: "గెనిమ", m: "పొలం గట్టు", s: "Crowd" },
|
| 477 |
-
{ t: "కోంత లోలు", m: "Old name for Nagar Kurnool", s: "Crowd" },
|
| 478 |
-
{ t: "బుడ్డల నూనె", m: "పల్లి oil (Peanut oil)", s: "Crowd" },
|
| 479 |
-
{ t: "అంబటాలు", m: "Morning meal time", s: "Crowd" },
|
| 480 |
-
{ t: "మంకర", m: "Winter cold", s: "Crowd" },
|
| 481 |
-
{ t: "లాడు", m: "తల్లి కూతురు", s: "Crowd" },
|
| 482 |
-
{ t: "గెనిమ", m: "పొలం గట్టు", s: "Crowd" },
|
| 483 |
-
{ t: "కోంత లోలు", m: "Old name for Nagar Kurnool", s: "Crowd" },
|
| 484 |
-
{ t: "బుడ్డల నూనె", m: "పల్లి oil (Peanut oil)", s: "Crowd" },
|
| 485 |
{ t: "నల్ల", m: "Black", s: "General" }, { t: "మళ్ళ", m: "Again", s: "General" },
|
| 486 |
{ t: "కొండ", m: "Hill", s: "Geo" }, { t: "వాగు", m: "Stream", s: "Geo" },
|
| 487 |
{ t: "చెంచు", m: "Tribe", s: "Community" }, { t: "తేనె", m: "Honey", s: "Forest" },
|
|
@@ -493,18 +413,6 @@
|
|
| 493 |
name: "Wanaparthy", lat: 16.3621, lng: 78.0617, region: "Samsthanam",
|
| 494 |
history: "A historic Samsthanam (Estate). The dialect reflects a feudal/royal past.",
|
| 495 |
words: [
|
| 496 |
-
{ t: "చెప్పలకాయలు", m: "గొంకరకాయలు", s: "Crowd" },
|
| 497 |
-
{ t: "మలంచా", m: "చెంబు", s: "Crowd" },
|
| 498 |
-
{ t: "సొరకాయ", m: "ఆనకాయ", s: "Crowd" },
|
| 499 |
-
{ t: "పాశాల", m: "Clothes", s: "Crowd" },
|
| 500 |
-
{ t: "మట్టుగుండు", m: "Keep calm", s: "Crowd" },
|
| 501 |
-
{ t: "అంబరుంది", m: "Excellent", s: "Crowd" },
|
| 502 |
-
{ t: "చెప్పలకాయలు", m: "గొంకరకాయలు", s: "Crowd" },
|
| 503 |
-
{ t: "మలంచా", m: "చెంబు", s: "Crowd" },
|
| 504 |
-
{ t: "సొరకాయ", m: "ఆనకాయ", s: "Crowd" },
|
| 505 |
-
{ t: "పాశాల", m: "Clothes", s: "Crowd" },
|
| 506 |
-
{ t: "మట్టుగుండు", m: "Keep calm", s: "Crowd" },
|
| 507 |
-
{ t: "అంబరుంది", m: "Excellent", s: "Crowd" },
|
| 508 |
{ t: "సంస్థానం", m: "Estate", s: "History" }, { t: "రాజా", m: "King", s: "History" },
|
| 509 |
{ t: "కోట", m: "Fort", s: "History" }, { t: "బంగారు", m: "Golden", s: "General" },
|
| 510 |
{ t: "పట్టు", m: "Silk", s: "Textile" }, { t: "చీర", m: "Saree", s: "Textile" },
|
|
@@ -516,26 +424,6 @@
|
|
| 516 |
name: "Jogulamba Gadwal", lat: 16.2343, lng: 77.7289, region: "River Doab",
|
| 517 |
history: "Between Krishna and Tungabhadra rivers. Known for Handlooms and temples.",
|
| 518 |
words: [
|
| 519 |
-
{ t: "ఓల్లి", m: "No", s: "Crowd" },
|
| 520 |
-
{ t: "కూడు తింటవా", m: "తిన్నారా", s: "Crowd" },
|
| 521 |
-
{ t: "తువ్వ", m: "ఎర్ర పొలం", s: "Crowd" },
|
| 522 |
-
{ t: "పురకోస", m: "జూట్ దార", s: "Crowd" },
|
| 523 |
-
{ t: "జుముజలమ్మ", m: "దేవత", s: "Crowd" },
|
| 524 |
-
{ t: "తలుగు ఎల్లమ్మ", m: "దేవత", s: "Crowd" },
|
| 525 |
-
{ t: "తెల్వది", m: "Don\'t know", s: "Crowd" },
|
| 526 |
-
{ t: "మడసంగ", m: "నెమ్మదిగా/జాగ్రత్తగా", s: "Crowd" },
|
| 527 |
-
{ t: "రప్పున", m: "జల్ది", s: "Crowd" },
|
| 528 |
-
{ t: "మడసంగ", m: "Careful", s: "Crowd" },
|
| 529 |
-
{ t: "ఓల్లి", m: "No", s: "Crowd" },
|
| 530 |
-
{ t: "కూడు తింటవా", m: "తిన్నారా", s: "Crowd" },
|
| 531 |
-
{ t: "తువ్వ", m: "ఎర్ర పొలం", s: "Crowd" },
|
| 532 |
-
{ t: "పురకోస", m: "జూట్ దార", s: "Crowd" },
|
| 533 |
-
{ t: "జుముజలమ్మ", m: "దేవత", s: "Crowd" },
|
| 534 |
-
{ t: "తలుగు ఎల్లమ్మ", m: "దేవత", s: "Crowd" },
|
| 535 |
-
{ t: "తెల్వది", m: "Don\'t know", s: "Crowd" },
|
| 536 |
-
{ t: "మడసంగ", m: "నెమ్మదిగా/జాగ్రత్తగా", s: "Crowd" },
|
| 537 |
-
{ t: "రప్పున", m: "జల్ది", s: "Crowd" },
|
| 538 |
-
{ t: "మడసంగ", m: "Careful", s: "Crowd" },
|
| 539 |
{ t: "నడుము", m: "Waist/Middle", s: "Body" }, { t: "గడ్డ", m: "Land/Bank", s: "Geo" },
|
| 540 |
{ t: "కృష్ణ", m: "River", s: "Geo" }, { t: "తుంగభద్ర", m: "River", s: "Geo" },
|
| 541 |
{ t: "పదిహేను", m: "Fifteen", s: "Standard" }, { t: "పదహైదు", m: "Fifteen", s: "Local" },
|
|
@@ -547,20 +435,6 @@
|
|
| 547 |
name: "Narayanpet", lat: 16.7323, lng: 77.4988, region: "Karnataka Border",
|
| 548 |
history: "Strong Kannada influence due to location. Cuisine terms (Rotti) are common.",
|
| 549 |
words: [
|
| 550 |
-
{ t: "బుబ్బి", m: "అమ్మ", s: "Crowd" },
|
| 551 |
-
{ t: "పడం", m: "మట్టి", s: "Crowd" },
|
| 552 |
-
{ t: "చెముక్కలు", m: "మోకాళ్ళు", s: "Crowd" },
|
| 553 |
-
{ t: "మొర", m: "మంచం", s: "Crowd" },
|
| 554 |
-
{ t: "అబుత", m: "జుట్టు", s: "Crowd" },
|
| 555 |
-
{ t: "జేజి", m: "Fat", s: "Crowd" },
|
| 556 |
-
{ t: "��ంబలి", m: "జావ", s: "Crowd" },
|
| 557 |
-
{ t: "బుబ్బి", m: "అమ్మ", s: "Crowd" },
|
| 558 |
-
{ t: "పడం", m: "మట్టి", s: "Crowd" },
|
| 559 |
-
{ t: "చెముక్కలు", m: "మోకాళ్ళు", s: "Crowd" },
|
| 560 |
-
{ t: "మొర", m: "మంచం", s: "Crowd" },
|
| 561 |
-
{ t: "అబుత", m: "జుట్టు", s: "Crowd" },
|
| 562 |
-
{ t: "జేజి", m: "Fat", s: "Crowd" },
|
| 563 |
-
{ t: "అంబలి", m: "జావ", s: "Crowd" },
|
| 564 |
{ t: "పేట", m: "Town", s: "Suffix" }, { t: "చీర", m: "Saree", s: "Textile" },
|
| 565 |
{ t: "మగ్గ", m: "Loom", s: "Textile" }, { t: "బోర్డర్", m: "Border", s: "Geo" },
|
| 566 |
{ t: "కన్నడ", m: "Language", s: "Influence" }, { t: "రొట్టి", m: "Bread", s: "Food" },
|
|
@@ -572,32 +446,6 @@
|
|
| 572 |
name: "Nalgonda", lat: 17.0577, lng: 79.2683, region: "Southern Plains",
|
| 573 |
history: "Known for the Nalgonda movement. Dialect is direct, sharp, and iconic.",
|
| 574 |
words: [
|
| 575 |
-
{ t: "Dupa aithundhi", m: "దాహం వేస్తుంది", s: "Crowd" },
|
| 576 |
-
{ t: "సేరు", m: "1kg measuring device", s: "Crowd" },
|
| 577 |
-
{ t: "Kurdedu Biyam", m: "Amount of rice", s: "Crowd" },
|
| 578 |
-
{ t: "Anglam dundu", m: "అగ్గి పెట్టె", s: "Crowd" },
|
| 579 |
-
{ t: "సది", m: "Take the box", s: "Crowd" },
|
| 580 |
-
{ t: "తట్ట", m: "పళ్ళెం", s: "Crowd" },
|
| 581 |
-
{ t: "కోవెల", m: "గుడి", s: "Crowd" },
|
| 582 |
-
{ t: "ఊసలు", m: "Weaving technique", s: "Crowd" },
|
| 583 |
-
{ t: "బువ్వ", m: "Cooked rice", s: "Crowd" },
|
| 584 |
-
{ t: "తవాచీ", m: "Shelf with doors", s: "Crowd" },
|
| 585 |
-
{ t: "తపుకు", m: "Plate on vessel", s: "Crowd" },
|
| 586 |
-
{ t: "లడ్లు", m: "అరిసెలు", s: "Crowd" },
|
| 587 |
-
{ t: "దారి", m: "బాట", s: "Crowd" },
|
| 588 |
-
{ t: "Dupa aithundhi", m: "దాహం వేస్తుంది", s: "Crowd" },
|
| 589 |
-
{ t: "సేరు", m: "1kg measuring device", s: "Crowd" },
|
| 590 |
-
{ t: "Kurdedu Biyam", m: "Amount of rice", s: "Crowd" },
|
| 591 |
-
{ t: "Anglam dundu", m: "అగ్గి పెట్టె", s: "Crowd" },
|
| 592 |
-
{ t: "సది", m: "Take the box", s: "Crowd" },
|
| 593 |
-
{ t: "తట్ట", m: "పళ్ళెం", s: "Crowd" },
|
| 594 |
-
{ t: "కోవెల", m: "గుడి", s: "Crowd" },
|
| 595 |
-
{ t: "ఊసలు", m: "Weaving technique", s: "Crowd" },
|
| 596 |
-
{ t: "బువ్వ", m: "Cooked rice", s: "Crowd" },
|
| 597 |
-
{ t: "తవాచీ", m: "Shelf with doors", s: "Crowd" },
|
| 598 |
-
{ t: "తపుకు", m: "Plate on vessel", s: "Crowd" },
|
| 599 |
-
{ t: "లడ్లు", m: "అరిసెలు", s: "Crowd" },
|
| 600 |
-
{ t: "దారి", m: "బాట", s: "Crowd" },
|
| 601 |
{ t: "నల్ల", m: "Black", s: "General" }, { t: "కొండ", m: "Hill", s: "Geo" },
|
| 602 |
{ t: "ఫ్లోరోసిస్", m: "Disease", s: "History" }, { t: "నీళ్ళు", m: "Water", s: "General" },
|
| 603 |
{ t: "బావి", m: "Well", s: "Agri" }, { t: "ఏడ", m: "Where", s: "Grammar" },
|
|
@@ -632,10 +480,6 @@
|
|
| 632 |
name: "Medak", lat: 18.0487, lng: 78.2657, region: "Heritage West",
|
| 633 |
history: "Historical seat of power. 'Metuku' (rice grain) is the etymological root.",
|
| 634 |
words: [
|
| 635 |
-
{ t: "కీసా", m: "జేబు", s: "Crowd" },
|
| 636 |
-
{ t: "పైను", m: "ఆరు (Six)", s: "Crowd" },
|
| 637 |
-
{ t: "కీసా", m: "జేబు", s: "Crowd" },
|
| 638 |
-
{ t: "పైను", m: "ఆరు (Six)", s: "Crowd" },
|
| 639 |
{ t: "చర్చి", m: "Church", s: "Landmark" }, { t: "మెతుకు", m: "Rice Grain", s: "Etymology" },
|
| 640 |
{ t: "దుర్గం", m: "Fort", s: "History" }, { t: "కోట", m: "Fort", s: "History" },
|
| 641 |
{ t: "గడి", m: "Room", s: "Rural" }, { t: "సింహ", m: "Lion", s: "Art" },
|
|
@@ -658,28 +502,6 @@
|
|
| 658 |
name: "Siddipet", lat: 18.1018, lng: 78.8520, region: "Political Hub",
|
| 659 |
history: "A vibrant, politically active district. Home to Komuravelli Mallanna.",
|
| 660 |
words: [
|
| 661 |
-
{ t: "అంగీ", m: "Shirt", s: "Crowd" },
|
| 662 |
-
{ t: "పొయ్యిర్రు", m: "వెళ్ళారు", s: "Crowd" },
|
| 663 |
-
{ t: "మెగులుతుంది", m: "వర్షం వచ్���ి ఆగిన", s: "Crowd" },
|
| 664 |
-
{ t: "అలుకురు", m: "Pre cultivation", s: "Crowd" },
|
| 665 |
-
{ t: "పయిలం", m: "జాగ్రత్త", s: "Crowd" },
|
| 666 |
-
{ t: "తప్పెలు", m: "Rice plate", s: "Crowd" },
|
| 667 |
-
{ t: "పందిట్లు", m: "పందిరి", s: "Crowd" },
|
| 668 |
-
{ t: "రాకొచ్చింది", m: "రాదు", s: "Crowd" },
|
| 669 |
-
{ t: "పోకొచ్చింది", m: "పోదు", s: "Crowd" },
|
| 670 |
-
{ t: "కుకో", m: "కూర్చో", s: "Crowd" },
|
| 671 |
-
{ t: "ఏడారు", m: "Afternoon time", s: "Crowd" },
|
| 672 |
-
{ t: "అంగీ", m: "Shirt", s: "Crowd" },
|
| 673 |
-
{ t: "పొయ్యిర్రు", m: "వెళ్ళారు", s: "Crowd" },
|
| 674 |
-
{ t: "మెగులుతుంది", m: "వర్షం వచ్చి ఆగిన", s: "Crowd" },
|
| 675 |
-
{ t: "అలుకురు", m: "Pre cultivation", s: "Crowd" },
|
| 676 |
-
{ t: "పయిలం", m: "జాగ్రత్త", s: "Crowd" },
|
| 677 |
-
{ t: "తప్పెలు", m: "Rice plate", s: "Crowd" },
|
| 678 |
-
{ t: "పందిట్లు", m: "పందిరి", s: "Crowd" },
|
| 679 |
-
{ t: "రాకొచ్చింది", m: "రాదు", s: "Crowd" },
|
| 680 |
-
{ t: "పోకొచ్చింది", m: "పోదు", s: "Crowd" },
|
| 681 |
-
{ t: "కుకో", m: "కూర్చో", s: "Crowd" },
|
| 682 |
-
{ t: "ఏడారు", m: "Afternoon time", s: "Crowd" },
|
| 683 |
{ t: "కోటి", m: "Monkey", s: "Local" }, { t: "మల్లన్న", m: "God Name", s: "Religion" },
|
| 684 |
{ t: "పట్నం", m: "City", s: "General" }, { t: "చెరువు", m: "Lake", s: "Geo" },
|
| 685 |
{ t: "బతుకమ్మ", m: "Festival", s: "Culture" }, { t: "పూలు", m: "Flowers", s: "Nature" },
|
|
@@ -691,16 +513,6 @@
|
|
| 691 |
name: "Rangareddy", lat: 17.3457, lng: 78.5522, region: "Peri-Urban",
|
| 692 |
history: "Surrounds Hyderabad. Mix of rural farms and real estate boom vocabulary.",
|
| 693 |
words: [
|
| 694 |
-
{ t: "వీరునో", m: "తెలుగు", s: "Crowd" },
|
| 695 |
-
{ t: "తొక్కుడు", m: "మంచం", s: "Crowd" },
|
| 696 |
-
{ t: "మూర", m: "ముంగిలి", s: "Crowd" },
|
| 697 |
-
{ t: "కారం", m: "పచ్చడి", s: "Crowd" },
|
| 698 |
-
{ t: "ఈ గడ", m: "కడ", s: "Crowd" },
|
| 699 |
-
{ t: "వీరునో", m: "తెలుగు", s: "Crowd" },
|
| 700 |
-
{ t: "తొక్కుడు", m: "మంచం", s: "Crowd" },
|
| 701 |
-
{ t: "మూర", m: "ముంగిలి", s: "Crowd" },
|
| 702 |
-
{ t: "కారం", m: "పచ్చడి", s: "Crowd" },
|
| 703 |
-
{ t: "ఈ గడ", m: "కడ", s: "Crowd" },
|
| 704 |
{ t: "ఎయిర్పోర్ట్", m: "Airport", s: "Infra" }, { t: "ఫ్లైట్", m: "Plane", s: "Transport" },
|
| 705 |
{ t: "రియల్ ఎస్టేట్", m: "Land Biz", s: "Biz" }, { t: "ప్లాట్", m: "Plot", s: "Biz" },
|
| 706 |
{ t: "రేటు", m: "Price", s: "Biz" }, { t: "మచ్చ", m: "Friend", s: "Slang" },
|
|
@@ -734,28 +546,6 @@
|
|
| 734 |
name: "Hyderabad", lat: 17.3850, lng: 78.4867, region: "Capital",
|
| 735 |
history: "The historic capital. Famous for the unique Dakhni-Telugu fusion dialect.",
|
| 736 |
words: [
|
| 737 |
-
{ t: "కిటికీ", m: "Window", s: "Crowd" },
|
| 738 |
-
{ t: "అంగీ", m: "Shirt", s: "Crowd" },
|
| 739 |
-
{ t: "కుక్క", m: "Dog", s: "Crowd" },
|
| 740 |
-
{ t: "కుర్చీ", m: "Chair", s: "Crowd" },
|
| 741 |
-
{ t: "Amma buvva pettava", m: "Mother feed me", s: "Crowd" },
|
| 742 |
-
{ t: "Chaderghat", m: "Location", s: "Crowd" },
|
| 743 |
-
{ t: "తొవ్వ దారి", m: "Way/Path", s: "Crowd" },
|
| 744 |
-
{ t: "పాతాళగరిసె", m: "Tool to remove bucket", s: "Crowd" },
|
| 745 |
-
{ t: "అంబటాలు", m: "Afternoon time", s: "Crowd" },
|
| 746 |
-
{ t: "ఇన్సురాయి", m: "Stone tool", s: "Crowd" },
|
| 747 |
-
{ t: "బుక్కెట్", m: "Tool for well", s: "Crowd" },
|
| 748 |
-
{ t: "కిటికీ", m: "Window", s: "Crowd" },
|
| 749 |
-
{ t: "అంగీ", m: "Shirt", s: "Crowd" },
|
| 750 |
-
{ t: "కుక్క", m: "Dog", s: "Crowd" },
|
| 751 |
-
{ t: "కుర్చీ", m: "Chair", s: "Crowd" },
|
| 752 |
-
{ t: "Amma buvva pettava", m: "Mother feed me", s: "Crowd" },
|
| 753 |
-
{ t: "Chaderghat", m: "Location", s: "Crowd" },
|
| 754 |
-
{ t: "తొవ్వ దారి", m: "Way/Path", s: "Crowd" },
|
| 755 |
-
{ t: "పాతాళగరిసె", m: "Tool to remove bucket", s: "Crowd" },
|
| 756 |
-
{ t: "అంబటాలు", m: "Afternoon time", s: "Crowd" },
|
| 757 |
-
{ t: "ఇన్సురాయి", m: "Stone tool", s: "Crowd" },
|
| 758 |
-
{ t: "బుక్కెట్", m: "Tool for well", s: "Crowd" },
|
| 759 |
{ t: "కైకు", m: "Why", s: "Dakhni" }, { t: "నక్కో", m: "No", s: "Dakhni" },
|
| 760 |
{ t: "హౌ", m: "Yes", s: "Dakhni" }, { t: "బైగన్", m: "Useless", s: "Slang" },
|
| 761 |
{ t: "చిచ్చా", m: "Uncle", s: "Slang" }, { t: "పోట్టి", m: "Girl", s: "Slang" },
|
|
@@ -765,162 +555,537 @@
|
|
| 765 |
}
|
| 766 |
];
|
| 767 |
|
| 768 |
-
|
| 769 |
-
|
| 770 |
-
|
| 771 |
-
|
| 772 |
-
|
| 773 |
-
|
| 774 |
-
|
| 775 |
-
|
| 776 |
-
|
| 777 |
-
|
| 778 |
-
|
| 779 |
-
|
| 780 |
-
|
| 781 |
-
|
| 782 |
-
|
| 783 |
-
|
| 784 |
-
|
| 785 |
-
|
| 786 |
-
|
| 787 |
-
|
| 788 |
-
|
| 789 |
-
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
|
| 793 |
-
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
|
| 799 |
-
}
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
|
| 807 |
-
|
| 808 |
-
|
| 809 |
-
|
| 810 |
-
|
| 811 |
-
|
| 812 |
-
|
| 813 |
-
|
| 814 |
-
|
| 815 |
-
|
| 816 |
-
|
| 817 |
-
|
| 818 |
-
|
| 819 |
-
}
|
| 820 |
-
|
| 821 |
-
|
| 822 |
-
|
| 823 |
-
|
| 824 |
-
|
| 825 |
-
|
| 826 |
-
|
| 827 |
-
|
| 828 |
-
|
| 829 |
-
|
| 830 |
-
|
| 831 |
-
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
|
| 836 |
-
|
| 837 |
-
|
| 838 |
-
|
| 839 |
-
|
| 840 |
-
|
| 841 |
-
|
| 842 |
-
|
| 843 |
-
|
| 844 |
-
|
| 845 |
-
|
| 846 |
-
|
| 847 |
-
|
| 848 |
-
|
| 849 |
-
|
| 850 |
-
|
| 851 |
-
|
| 852 |
-
|
| 853 |
-
|
| 854 |
-
|
| 855 |
-
|
| 856 |
-
|
| 857 |
-
|
| 858 |
-
|
| 859 |
-
|
| 860 |
-
|
| 861 |
-
|
| 862 |
-
|
| 863 |
-
|
| 864 |
-
|
| 865 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 866 |
}
|
| 867 |
-
|
|
|
|
|
|
|
|
|
|
| 868 |
|
| 869 |
// --- 2. MAP SETUP ---
|
| 870 |
-
//
|
| 871 |
-
|
| 872 |
-
|
| 873 |
-
|
| 874 |
-
|
| 875 |
-
|
| 876 |
-
|
| 877 |
-
|
| 878 |
-
|
| 879 |
-
|
| 880 |
-
|
| 881 |
-
|
| 882 |
-
|
| 883 |
-
|
| 884 |
-
|
| 885 |
-
|
| 886 |
-
|
| 887 |
-
attribution: '© OSM contributors'
|
| 888 |
-
}).addTo(map);
|
| 889 |
-
|
| 890 |
-
// --- 3. MARKERS & INTERACTION ---
|
| 891 |
-
const sidebarPanel = document.getElementById('info-panel');
|
| 892 |
-
|
| 893 |
-
// Red Marker Style
|
| 894 |
-
const redIcon = L.divIcon({
|
| 895 |
-
className: 'custom-marker',
|
| 896 |
-
html: '📍',
|
| 897 |
-
iconSize: [30, 30],
|
| 898 |
-
iconAnchor: [15, 30]
|
| 899 |
-
});
|
| 900 |
|
| 901 |
-
|
| 902 |
-
|
|
|
|
| 903 |
|
| 904 |
-
|
| 905 |
-
|
| 906 |
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
});
|
| 912 |
});
|
|
|
|
| 913 |
|
| 914 |
-
|
| 915 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 916 |
<tr>
|
| 917 |
<td class="telugu-word">${w.t}</td>
|
| 918 |
<td>${w.m}</td>
|
| 919 |
-
<td style="color:#777; font-size:0.7rem;">${
|
| 920 |
</tr>
|
| 921 |
-
|
|
|
|
| 922 |
|
| 923 |
-
|
| 924 |
<div style="animation:fadeIn 0.4s;">
|
| 925 |
<h2 class="district-title">${data.name}</h2>
|
| 926 |
<span class="region-tag">${data.region}</span>
|
|
@@ -931,11 +1096,7 @@
|
|
| 931 |
</table>
|
| 932 |
</div>
|
| 933 |
`;
|
| 934 |
-
}
|
| 935 |
}
|
| 936 |
-
|
| 937 |
-
// Start the application
|
| 938 |
-
initializeMap();
|
| 939 |
</script>
|
| 940 |
</body>
|
| 941 |
|
|
|
|
| 4 |
<head>
|
| 5 |
<meta charset="UTF-8">
|
| 6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<title>Telugu States Digital Dialect Map</title>
|
| 8 |
|
| 9 |
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
| 10 |
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
|
|
|
|
| 122 |
font-size: 0.95rem;
|
| 123 |
}
|
| 124 |
|
| 125 |
+
/* Hyperlink Styles */
|
| 126 |
+
.source-link {
|
| 127 |
+
color: #3498db;
|
| 128 |
+
text-decoration: none;
|
| 129 |
+
font-size: 0.75rem;
|
| 130 |
+
border-bottom: 1px dotted #3498db;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
.source-link:hover {
|
| 134 |
+
color: #2980b9;
|
| 135 |
+
border-bottom: 1px solid #2980b9;
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
#map {
|
| 139 |
flex-grow: 1;
|
| 140 |
height: 100%;
|
|
|
|
| 164 |
|
| 165 |
<div id="sidebar">
|
| 166 |
<div class="header">
|
| 167 |
+
<h1>Telugu States Dialect Map</h1>
|
| 168 |
+
<p>Verified Data • Telangana & Andhra Pradesh</p>
|
| 169 |
</div>
|
| 170 |
<div id="info-panel">
|
| 171 |
<div style="text-align: center; color: #888; margin-top: 60px;">
|
|
|
|
| 181 |
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
| 182 |
|
| 183 |
<script>
|
| 184 |
+
// --- 1. THE DATA ---
|
| 185 |
+
|
| 186 |
+
const Telangana_Data = [
|
| 187 |
// === NORTHERN TELANGANA ===
|
| 188 |
{
|
| 189 |
name: "Adilabad", lat: 19.6641, lng: 78.5320, region: "Northern Forest",
|
| 190 |
history: "Heavily influenced by Gondi tribal dialects and Marathi due to the Maharashtra border.",
|
| 191 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 192 |
{ t: "కోయంగ్", m: "Dialect/Language", s: "Gondi" }, { t: "పైలం", m: "Careful", s: "Mandalikalu" },
|
| 193 |
{ t: "ఆడ", m: "There", s: "General" }, { t: "కాకా", m: "Uncle", s: "Marathi Infl." },
|
| 194 |
{ t: "పటేల్", m: "Village Head", s: "Tribal" }, { t: "గూడ", m: "Hamlet", s: "Rural" },
|
|
|
|
| 234 |
name: "Nizamabad", lat: 18.6725, lng: 78.0941, region: "Indur Agrarian",
|
| 235 |
history: "Rich agricultural zone (Turmeric). Strong Dakhni Urdu influence from the Nizam era.",
|
| 236 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
{ t: "పసుపు", m: "Turmeric", s: "Agri" }, { t: "ఐగలు", m: "Priest", s: "Mandalikalu" },
|
| 238 |
{ t: "హామీ", m: "Assurance", s: "Urdu Infl." }, { t: "జీరా", m: "Boundary", s: "Agri" },
|
| 239 |
{ t: "పుంటికూర", m: "Gongura", s: "Food" }, { t: "అంగడి", m: "Shop", s: "Rural" },
|
|
|
|
| 257 |
name: "Karimnagar", lat: 18.4386, lng: 79.1288, region: "Cultural Core",
|
| 258 |
history: "Considered the standard for 'Telangana Slang' in media. Sharp, distinct pronunciation.",
|
| 259 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 260 |
{ t: "తోపు", m: "Great/Top", s: "Slang" }, { t: "కేక", m: "Super", s: "Slang" },
|
| 261 |
{ t: "లొల్లి", m: "Fight/Noise", s: "General" }, { t: "శాన", m: "Very", s: "Mandalikalu" },
|
| 262 |
{ t: "పైసల్", m: "Money", s: "General" }, { t: "గత్తర", m: "Mess", s: "Slang" },
|
|
|
|
| 279 |
name: "Peddapalli", lat: 18.6146, lng: 79.3705, region: "Industrial Hub",
|
| 280 |
history: "Home to NTPC and Coal mines. Vocabulary is a mix of rural and industrial English loan words.",
|
| 281 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
{ t: "బొగ్గు", m: "Coal", s: "Mining" }, { t: "కరెంట్", m: "Power", s: "Utility" },
|
| 283 |
{ t: "క్వార్టర్", m: "Housing", s: "Industry" }, { t: "షిఫ్ట్", m: "Work Shift", s: "Labor" },
|
| 284 |
{ t: "గేట్", m: "Entrance", s: "General" }, { t: "పోరడు", m: "Boy", s: "General" },
|
|
|
|
| 302 |
name: "Warangal", lat: 17.9689, lng: 79.5941, region: "Kakatiya Rural",
|
| 303 |
history: "Historic Orugallu. Retains classical Telugu terms mixed with rural agricultural slang.",
|
| 304 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 305 |
{ t: "చెల్క", m: "Field", s: "Agri" }, { t: "గ���్డపార", m: "Crowbar", s: "Tools" },
|
| 306 |
{ t: "నాగలి", m: "Plough", s: "Agri" }, { t: "ఎడ్లు", m: "Bulls", s: "Agri" },
|
| 307 |
{ t: "పంట", m: "Crop", s: "Agri" }, { t: "ఎరువ", m: "Fertilizer", s: "Agri" },
|
|
|
|
| 324 |
name: "Jangaon", lat: 17.7226, lng: 79.1685, region: "Central Junction",
|
| 325 |
history: "A crossroads district. Famous for Jatharas and rural festivals.",
|
| 326 |
words: [
|
|
|
|
|
|
|
| 327 |
{ t: "గుట్ట", m: "Hillock", s: "Geo" }, { t: "జాతర", m: "Fair", s: "Culture" },
|
| 328 |
{ t: "బోనం", m: "Offering", s: "Ritual" }, { t: "సాక", m: "Branch", s: "Nature" },
|
| 329 |
{ t: "కోడి", m: "Chicken", s: "Food" }, { t: "మేక", m: "Goat", s: "Agri" },
|
|
|
|
| 346 |
name: "Mahabubabad", lat: 17.5956, lng: 80.0053, region: "Tribal Corridor",
|
| 347 |
history: "Strong Lambadi/Banjara tribal presence influences the local lexicon.",
|
| 348 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 349 |
{ t: "తండా", m: "Hamlet", s: "Tribal" }, { t: "బంజారా", m: "Tribe", s: "Community" },
|
| 350 |
{ t: "గూడు", m: "Nest/Hut", s: "General" }, { t: "తవ్వు", m: "Dig", s: "Action" },
|
| 351 |
{ t: "పాట", m: "Song", s: "Culture" }, { t: "ఆట", m: "Dance/Play", s: "Culture" },
|
|
|
|
| 391 |
name: "Mahabubnagar", lat: 16.7488, lng: 78.0035, region: "Palamuru",
|
| 392 |
history: "Palamuru region. Known for migration (Valasa) and distinct, rougher intonation.",
|
| 393 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 394 |
{ t: "పాలమూరు", m: "Mahabubnagar", s: "Place" }, { t: "వలస", m: "Migration", s: "Social" },
|
| 395 |
{ t: "కూలీ", m: "Laborer", s: "Social" }, { t: "అడ్డా", m: "Stand/Place", s: "Social" },
|
| 396 |
{ t: "అప్ప", m: "Father", s: "Seema Infl." }, { t: "అయ్య", m: "Father", s: "General" },
|
|
|
|
| 402 |
name: "Nagarkurnool", lat: 16.4856, lng: 78.3305, region: "Nallamalla Zone",
|
| 403 |
history: "Covers the Nallamalla forest. Chenchu tribal words are part of the local mix.",
|
| 404 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 405 |
{ t: "నల్ల", m: "Black", s: "General" }, { t: "మళ్ళ", m: "Again", s: "General" },
|
| 406 |
{ t: "కొండ", m: "Hill", s: "Geo" }, { t: "వాగు", m: "Stream", s: "Geo" },
|
| 407 |
{ t: "చెంచు", m: "Tribe", s: "Community" }, { t: "తేనె", m: "Honey", s: "Forest" },
|
|
|
|
| 413 |
name: "Wanaparthy", lat: 16.3621, lng: 78.0617, region: "Samsthanam",
|
| 414 |
history: "A historic Samsthanam (Estate). The dialect reflects a feudal/royal past.",
|
| 415 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 416 |
{ t: "సంస్థానం", m: "Estate", s: "History" }, { t: "రాజా", m: "King", s: "History" },
|
| 417 |
{ t: "కోట", m: "Fort", s: "History" }, { t: "బంగారు", m: "Golden", s: "General" },
|
| 418 |
{ t: "పట్టు", m: "Silk", s: "Textile" }, { t: "చీర", m: "Saree", s: "Textile" },
|
|
|
|
| 424 |
name: "Jogulamba Gadwal", lat: 16.2343, lng: 77.7289, region: "River Doab",
|
| 425 |
history: "Between Krishna and Tungabhadra rivers. Known for Handlooms and temples.",
|
| 426 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 427 |
{ t: "నడుము", m: "Waist/Middle", s: "Body" }, { t: "గడ్డ", m: "Land/Bank", s: "Geo" },
|
| 428 |
{ t: "కృష్ణ", m: "River", s: "Geo" }, { t: "తుంగభద్ర", m: "River", s: "Geo" },
|
| 429 |
{ t: "పదిహేను", m: "Fifteen", s: "Standard" }, { t: "పదహైదు", m: "Fifteen", s: "Local" },
|
|
|
|
| 435 |
name: "Narayanpet", lat: 16.7323, lng: 77.4988, region: "Karnataka Border",
|
| 436 |
history: "Strong Kannada influence due to location. Cuisine terms (Rotti) are common.",
|
| 437 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 438 |
{ t: "పేట", m: "Town", s: "Suffix" }, { t: "చీర", m: "Saree", s: "Textile" },
|
| 439 |
{ t: "మగ్గ", m: "Loom", s: "Textile" }, { t: "బోర్డర్", m: "Border", s: "Geo" },
|
| 440 |
{ t: "కన్నడ", m: "Language", s: "Influence" }, { t: "రొట్టి", m: "Bread", s: "Food" },
|
|
|
|
| 446 |
name: "Nalgonda", lat: 17.0577, lng: 79.2683, region: "Southern Plains",
|
| 447 |
history: "Known for the Nalgonda movement. Dialect is direct, sharp, and iconic.",
|
| 448 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 449 |
{ t: "నల్ల", m: "Black", s: "General" }, { t: "కొండ", m: "Hill", s: "Geo" },
|
| 450 |
{ t: "ఫ్లోరోసిస్", m: "Disease", s: "History" }, { t: "నీళ్ళు", m: "Water", s: "General" },
|
| 451 |
{ t: "బావి", m: "Well", s: "Agri" }, { t: "ఏడ", m: "Where", s: "Grammar" },
|
|
|
|
| 480 |
name: "Medak", lat: 18.0487, lng: 78.2657, region: "Heritage West",
|
| 481 |
history: "Historical seat of power. 'Metuku' (rice grain) is the etymological root.",
|
| 482 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 483 |
{ t: "చర్చి", m: "Church", s: "Landmark" }, { t: "మెతుకు", m: "Rice Grain", s: "Etymology" },
|
| 484 |
{ t: "దుర్గం", m: "Fort", s: "History" }, { t: "కోట", m: "Fort", s: "History" },
|
| 485 |
{ t: "గడి", m: "Room", s: "Rural" }, { t: "సింహ", m: "Lion", s: "Art" },
|
|
|
|
| 502 |
name: "Siddipet", lat: 18.1018, lng: 78.8520, region: "Political Hub",
|
| 503 |
history: "A vibrant, politically active district. Home to Komuravelli Mallanna.",
|
| 504 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 505 |
{ t: "కోటి", m: "Monkey", s: "Local" }, { t: "మల్లన్న", m: "God Name", s: "Religion" },
|
| 506 |
{ t: "పట్నం", m: "City", s: "General" }, { t: "చెరువు", m: "Lake", s: "Geo" },
|
| 507 |
{ t: "బతుకమ్మ", m: "Festival", s: "Culture" }, { t: "పూలు", m: "Flowers", s: "Nature" },
|
|
|
|
| 513 |
name: "Rangareddy", lat: 17.3457, lng: 78.5522, region: "Peri-Urban",
|
| 514 |
history: "Surrounds Hyderabad. Mix of rural farms and real estate boom vocabulary.",
|
| 515 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 516 |
{ t: "ఎయిర్పోర్ట్", m: "Airport", s: "Infra" }, { t: "ఫ్లైట్", m: "Plane", s: "Transport" },
|
| 517 |
{ t: "రియల్ ఎస్టేట్", m: "Land Biz", s: "Biz" }, { t: "ప్లాట్", m: "Plot", s: "Biz" },
|
| 518 |
{ t: "రేటు", m: "Price", s: "Biz" }, { t: "మచ్చ", m: "Friend", s: "Slang" },
|
|
|
|
| 546 |
name: "Hyderabad", lat: 17.3850, lng: 78.4867, region: "Capital",
|
| 547 |
history: "The historic capital. Famous for the unique Dakhni-Telugu fusion dialect.",
|
| 548 |
words: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 549 |
{ t: "కైకు", m: "Why", s: "Dakhni" }, { t: "నక్కో", m: "No", s: "Dakhni" },
|
| 550 |
{ t: "హౌ", m: "Yes", s: "Dakhni" }, { t: "బైగన్", m: "Useless", s: "Slang" },
|
| 551 |
{ t: "చిచ్చా", m: "Uncle", s: "Slang" }, { t: "పోట్టి", m: "Girl", s: "Slang" },
|
|
|
|
| 555 |
}
|
| 556 |
];
|
| 557 |
|
| 558 |
+
const andhraData = [
|
| 559 |
+
// === UTTARANDHRA REGION ===
|
| 560 |
+
{
|
| 561 |
+
name: "Srikakulam",
|
| 562 |
+
lat: 18.2949, lng: 83.8938,
|
| 563 |
+
region: "Kalingandhra",
|
| 564 |
+
history: "Bordering Odisha, this dialect (Srikakulam Mandalikam) is distinct with 'Elugu' sounds and Odiya influence. It preserves archaic Telugu forms.",
|
| 565 |
+
words: [
|
| 566 |
+
{ t: "ఎలుగు", m: "Bear", s: "Local Usage", l: "https://en.wikipedia.org/wiki/Srikakulam_district" },
|
| 567 |
+
{ t: "బయ", m: "Fear", s: "Mandalikalu", l: "https://archive.org/details/mandalikalu_vol1" },
|
| 568 |
+
{ t: "కాడ", m: "Stalk/Stick", s: "Agri", l: "https://andhrabharati.com" },
|
| 569 |
+
{ t: "మునగాకు", m: "Drumstick Leaf", s: "Food", l: "https://andhrabharati.com" },
|
| 570 |
+
{ t: "పైడి", m: "Gold/Money", s: "Community", l: "https://en.wikipedia.org/wiki/Paidi" },
|
| 571 |
+
{ t: "దొర", m: "Lord/Master", s: "Caste Title", l: "https://en.wikipedia.org/wiki/Velama" },
|
| 572 |
+
{ t: "వలి", m: "Wind", s: "Nature", l: "https://andhrabharati.com" },
|
| 573 |
+
{ t: "నీళ్ళు", m: "Water (Neellu)", s: "General", l: "https://andhrabharati.com" },
|
| 574 |
+
{ t: "బువ్వ", m: "Rice", s: "Food", l: "https://andhrabharati.com" },
|
| 575 |
+
{ t: "అమ్మోరు", m: "Goddess", s: "Religion", l: "https://en.wikipedia.org/wiki/Gramadevata" }
|
| 576 |
+
]
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
name: "Vizianagaram",
|
| 580 |
+
lat: 18.1067, lng: 83.3956,
|
| 581 |
+
region: "Kalingandhra",
|
| 582 |
+
history: "A hub of education and culture (Vidyanagaram). The dialect is soft, musical, and heavily influenced by the Gajapati kingdom's history.",
|
| 583 |
+
words: [
|
| 584 |
+
{ t: "గెడ్డ", m: "Buffalo", s: "Rural", l: "https://andhrabharati.com" },
|
| 585 |
+
{ t: "సరే", m: "Okay", s: "Common", l: "https://en.wiktionary.org/wiki/sare" },
|
| 586 |
+
{ t: "ఆయ", m: "Yes", s: "Uttarandhra", l: "https://en.wiktionary.org/wiki/avunu" },
|
| 587 |
+
{ t: "పులస", m: "Hilsa Fish", s: "Food", l: "https://en.wikipedia.org/wiki/Tenualosa_ilisha" },
|
| 588 |
+
{ t: "తోట", m: "Garden/Farm", s: "Agri", l: "https://andhrabharati.com" },
|
| 589 |
+
{ t: "అయ్య", m: "Father", s: "Relations", l: "https://andhrabharati.com" },
|
| 590 |
+
{ t: "కోడి", m: "Chicken", s: "Food", l: "https://andhrabharati.com" },
|
| 591 |
+
{ t: "పండుగ", m: "Festival", s: "Culture", l: "https://en.wikipedia.org/wiki/Sankranti" },
|
| 592 |
+
{ t: "గుడి", m: "Temple", s: "Religion", l: "https://en.wikipedia.org/wiki/Hindu_temple" },
|
| 593 |
+
{ t: "ఊరు", m: "Village", s: "General", l: "https://en.wikipedia.org/wiki/Village" }
|
| 594 |
+
]
|
| 595 |
+
},
|
| 596 |
+
{
|
| 597 |
+
name: "Parvathipuram Manyam",
|
| 598 |
+
lat: 18.7800, lng: 83.4300,
|
| 599 |
+
region: "Manyam (Tribal)",
|
| 600 |
+
history: "Carved from Vizianagaram/Srikakulam. Heavily tribal (Savara/Jatapu) population. 'Manyam' refers to the forest/hill region.",
|
| 601 |
+
words: [
|
| 602 |
+
{ t: "బిరింద", m: "Family/Clan", s: "Savara Tribe", l: "http://s3-ap-southeast-1.amazonaws.com/ijmer/pdf/volume10/volume10-issue12(2)/1.pdf" },
|
| 603 |
+
{ t: "గూడ", m: "Hamlet", s: "Savara/Jatapu", l: "http://s3-ap-southeast-1.amazonaws.com/ijmer/pdf/volume10/volume10-issue12(2)/1.pdf" },
|
| 604 |
+
{ t: "సవర", m: "Tribe Name", s: "Community", l: "https://en.wikipedia.org/wiki/Sora_people" },
|
| 605 |
+
{ t: "జాతాపు", m: "Tribe Name", s: "Community", l: "https://en.wikipedia.org/wiki/Jatapu" },
|
| 606 |
+
{ t: "పోడు", m: "Shifting Culti.", s: "Agri", l: "https://en.wikipedia.org/wiki/Podu_(agriculture)" },
|
| 607 |
+
{ t: "కొండ", m: "Hill", s: "Geo", l: "https://andhrabharati.com" },
|
| 608 |
+
{ t: "ఏరు", m: "Stream", s: "Geo", l: "https://andhrabharati.com" },
|
| 609 |
+
{ t: "వేట", m: "Hunt", s: "Tribal", l: "https://andhrabharati.com" },
|
| 610 |
+
{ t: "విల్లు", m: "Bow", s: "Weapon", l: "https://andhrabharati.com" },
|
| 611 |
+
{ t: "తేనె", m: "Honey", s: "Forest Produce", l: "https://andhrabharati.com" }
|
| 612 |
+
]
|
| 613 |
+
},
|
| 614 |
+
{
|
| 615 |
+
name: "Visakhapatnam",
|
| 616 |
+
lat: 17.6868, lng: 83.2185,
|
| 617 |
+
region: "Coastal Metro",
|
| 618 |
+
history: "A cosmopolitan port city. The 'Vizag' dialect mixes Uttarandhra rural slang with English/Hindi industrial loan words.",
|
| 619 |
+
words: [
|
| 620 |
+
{ t: "యా", m: "What (Etla)", s: "Slang", l: "https://en.wikipedia.org/wiki/Visakhapatnam" },
|
| 621 |
+
{ t: "మత్స్య", m: "Fish/Marine", s: "Fishing", l: "https://en.wikipedia.org/wiki/Fisheries" },
|
| 622 |
+
{ t: "రేవు", m: "Port/Harbor", s: "Maritime", l: "https://en.wikipedia.org/wiki/Visakhapatnam_Port" },
|
| 623 |
+
{ t: "షిప్పు", m: "Ship", s: "Industrial", l: "https://en.wikipedia.org/wiki/Hindustan_Shipyard" },
|
| 624 |
+
{ t: "స్టీలు", m: "Steel", s: "Industrial", l: "https://en.wikipedia.org/wiki/Visakhapatnam_Steel_Plant" },
|
| 625 |
+
{ t: "బీచ్", m: "Beach", s: "Tourism", l: "https://en.wikipedia.org/wiki/RK_Beach" },
|
| 626 |
+
{ t: "కొండ", m: "Hill (Dolphin Nose)", s: "Geo", l: "https://en.wikipedia.org/wiki/Dolphin%27s_Nose" },
|
| 627 |
+
{ t: "లోవ", m: "Valley", s: "Geo", l: "https://andhrabharati.com" },
|
| 628 |
+
{ t: "సిటీ", m: "City", s: "Urban", l: "https://en.wikipedia.org/wiki/Smart_Cities_Mission" },
|
| 629 |
+
{ t: "ఆంధ్రా", m: "Andhra Univ.", s: "Edu", l: "https://www.andhrauniversity.edu.in/" }
|
| 630 |
+
]
|
| 631 |
+
},
|
| 632 |
+
{
|
| 633 |
+
name: "Anakapalli",
|
| 634 |
+
lat: 17.6913, lng: 83.0039,
|
| 635 |
+
region: "North Coastal Rural",
|
| 636 |
+
history: "Famous for its Jaggery market (Bellam). The dialect is typical rural Visakha, distinct from the urban port city.",
|
| 637 |
+
words: [
|
| 638 |
+
{ t: "బెల్లం", m: "Jaggery", s: "Trade", l: "https://en.wikipedia.org/wiki/Anakapalle#Economy" },
|
| 639 |
+
{ t: "చెరకు", m: "Sugarcane", s: "Agri", l: "https://en.wikipedia.org/wiki/Sugarcane" },
|
| 640 |
+
{ t: "సంత", m: "Market", s: "Trade", l: "https://en.wikipedia.org/wiki/Market" },
|
| 641 |
+
{ t: "ఏటికొప్పాక", m: "Toy Town", s: "Craft", l: "https://en.wikipedia.org/wiki/Etikoppaka" },
|
| 642 |
+
{ t: "బొమ్మ", m: "Toy", s: "Craft", l: "https://en.wikipedia.org/wiki/Etikoppaka_toys" },
|
| 643 |
+
{ t: "లక్క", m: "Lacquer", s: "Craft", l: "https://en.wikipedia.org/wiki/Lac" },
|
| 644 |
+
{ t: "నూకమ్మ", m: "Goddess", s: "Religion", l: "https://en.wikipedia.org/wiki/Nookambika_Temple" },
|
| 645 |
+
{ t: "జాతర", m: "Fair", s: "Culture", l: "https://en.wikipedia.org/wiki/Jatra" },
|
| 646 |
+
{ t: "ఏరు", m: "River (Sarada)", s: "Geo", l: "https://en.wikipedia.org/wiki/Sarada_River" },
|
| 647 |
+
{ t: "రైతు", m: "Farmer", s: "Agri", l: "https://andhrabharati.com" }
|
| 648 |
+
]
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
name: "Alluri Sitharama Raju",
|
| 652 |
+
lat: 18.0667, lng: 82.6500,
|
| 653 |
+
region: "Agency/Tribal",
|
| 654 |
+
history: "Named after the freedom fighter. Home to the Rampa Rebellion. Dialect is heavily influenced by Koya, Konda, and other tribal languages.",
|
| 655 |
+
words: [
|
| 656 |
+
{ t: "మన్యం", m: "Forest/Hill Area", s: "History", l: "https://en.wikipedia.org/wiki/Manyam_Rebellion" },
|
| 657 |
+
{ t: "ఫితూరీ", m: "Rebellion", s: "History", l: "https://en.wikipedia.org/wiki/Rampa_Rebellion_of_1922" },
|
| 658 |
+
{ t: "రాముడు", m: "Alluri (God)", s: "Legend", l: "https://en.wikipedia.org/wiki/Alluri_Sitarama_Raju" },
|
| 659 |
+
{ t: "పోడు", m: "Shifting Agri", s: "Tribal", l: "https://en.wikipedia.org/wiki/Podu" },
|
| 660 |
+
{ t: "కాఫీ", m: "Coffee", s: "Agri", l: "https://en.wikipedia.org/wiki/Araku_Valley_Coffee" },
|
| 661 |
+
{ t: "లోయ", m: "Valley (Araku)", s: "Geo", l: "https://en.wikipedia.org/wiki/Araku_Valley" },
|
| 662 |
+
{ t: "బొర్రా", m: "Cave/Hole", s: "Geo", l: "https://en.wikipedia.org/wiki/Borra_Caves" },
|
| 663 |
+
{ t: "గిరిజన", m: "Tribal", s: "Admin", l: "https://en.wikipedia.org/wiki/Scheduled_Tribes_in_India" },
|
| 664 |
+
{ t: "విల్లు", m: "Bow", s: "Weapon", l: "https://andhrabharati.com" },
|
| 665 |
+
{ t: "బాణం", m: "Arrow", s: "Weapon", l: "https://andhrabharati.com" }
|
| 666 |
+
]
|
| 667 |
+
},
|
| 668 |
+
|
| 669 |
+
// === GODAVARI REGION ===
|
| 670 |
+
{
|
| 671 |
+
name: "Kakinada",
|
| 672 |
+
lat: 16.9891, lng: 82.2475,
|
| 673 |
+
region: "East Godavari",
|
| 674 |
+
history: "The 'Pensioner's Paradise'. Known for the distinct 'Aay' (Yes) and polite, drawn-out Godavari accent. Famous for Kaja.",
|
| 675 |
+
words: [
|
| 676 |
+
{ t: "కాజా", m: "Sweet", s: "Food", l: "https://en.wikipedia.org/wiki/Kakinada_Kaja" },
|
| 677 |
+
{ t: "బాసు", m: "Boss (Friend)", s: "Slang", l: "https://en.wiktionary.org/wiki/boss" },
|
| 678 |
+
{ t: "రేవు", m: "Port", s: "Marine", l: "https://en.wikipedia.org/wiki/Kakinada_Port" },
|
| 679 |
+
{ t: "పిఠాపురం", m: "Place Name", s: "History", l: "https://en.wikipedia.org/wiki/Pithapuram" },
|
| 680 |
+
{ t: "శక్తి", m: "Power (Peetham)", s: "Religion", l: "https://en.wikipedia.org/wiki/Puruhutika_Devi_Temple" },
|
| 681 |
+
{ t: "బీచ్", m: "Beach", s: "Tourism", l: "https://en.wikipedia.org/wiki/Uppada_Beach" },
|
| 682 |
+
{ t: "పట్టు", m: "Silk (Uppada)", s: "Textile", l: "https://en.wikipedia.org/wiki/Uppada_Jamdani_Sari" },
|
| 683 |
+
{ t: "నౌక", m: "Boat/Ship", s: "Marine", l: "https://andhrabharati.com" },
|
| 684 |
+
{ t: "వంట", m: "Cooking", s: "Culture", l: "https://andhrabharati.com" },
|
| 685 |
+
{ t: "మర్యాద", m: "Respect", s: "Culture", l: "https://andhrabharati.com" }
|
| 686 |
+
]
|
| 687 |
+
},
|
| 688 |
+
{
|
| 689 |
+
name: "Dr. B.R. Ambedkar Konaseema",
|
| 690 |
+
lat: 16.5794, lng: 81.9930,
|
| 691 |
+
region: "Konaseema",
|
| 692 |
+
history: "The Delta region. Extremely fertile, known for coconut groves and distinct river-island vocabulary like 'Lanka' and 'Revu'.",
|
| 693 |
+
words: [
|
| 694 |
+
{ t: "లంక", m: "Island", s: "Geo", l: "https://te.wikipedia.org/wiki/%E0%B0%97%E0%B1%8B%E0%B0%A6%E0%B0%BE%E0%B0%B5%E0%B0%B0%E0%B0%BF_%E0%B0%AF%E0%B0%BE%E0%B0%B8" },
|
| 695 |
+
{ t: "రేవు", m: "River Bank", s: "Geo", l: "https://te.wikipedia.org/wiki/%E0%B0%97%E0%B1%8B%E0%B0%A6%E0%B0%BE%E0%B0%B5%E0%B0%B0%E0%B0%BF_%E0%B0%AF%E0%B0%BE%E0%B0%B8" },
|
| 696 |
+
{ t: "కొబ్బరి", m: "Coconut", s: "Agri", l: "http://jaganalluri.blogspot.com/2010/10/konaseema-telugu-is-delta-located-in.html" },
|
| 697 |
+
{ t: "డిబ్బ", m: "Mound/Islet", s: "Geo", l: "http://jaganalluri.blogspot.com/2010/10/konaseema-telugu-is-delta-located-in.html" },
|
| 698 |
+
{ t: "ఆయ్", m: "Yes (Respectful)", s: "Slang", l: "http://jaganalluri.blogspot.com/2010/10/konaseema-telugu-is-delta-located-in.html" },
|
| 699 |
+
{ t: "పంటి", m: "Raft/Ferry", s: "Transport", l: "http://jaganalluri.blogspot.com/2010/10/konaseema-telugu-is-delta-located-in.html" },
|
| 700 |
+
{ t: "గోదారి", m: "Godavari", s: "Geo", l: "http://jaganalluri.blogspot.com/2010/10/konaseema-telugu-is-delta-located-in.html" },
|
| 701 |
+
{ t: "అరిటాకు", m: "Banana Leaf", s: "Food", l: "https://andhrabharati.com" },
|
| 702 |
+
{ t: "పూతరేకు", m: "Paper Sweet", s: "Food", l: "https://en.wikipedia.org/wiki/Pootharekulu" },
|
| 703 |
+
{ t: "అన్నం", m: "Rice", s: "Food", l: "https://andhrabharati.com" }
|
| 704 |
+
]
|
| 705 |
+
},
|
| 706 |
+
{
|
| 707 |
+
name: "East Godavari",
|
| 708 |
+
lat: 17.0005, lng: 81.8040,
|
| 709 |
+
region: "Godavari",
|
| 710 |
+
history: "Headquartered at Rajamahendravaram. Cultural capital of Andhra. Standard Telugu ('Grandhika') has strong roots here.",
|
| 711 |
+
words: [
|
| 712 |
+
{ t: "పుష్కర", m: "River Festival", s: "Culture", l: "https://en.wikipedia.org/wiki/Godavari_Pushkaralu" },
|
| 713 |
+
{ t: "ఘాట్", m: "Bathing Steps", s: "Religion", l: "https://en.wikipedia.org/wiki/Ghat" },
|
| 714 |
+
{ t: "ఆదికవి", m: "First Poet (Nannaya)", s: "Lit", l: "https://en.wikipedia.org/wiki/Nannayya" },
|
| 715 |
+
{ t: "బ్యారేజ్", m: "Barrage", s: "Infra", l: "https://en.wikipedia.org/wiki/Dowleswaram_Barrage" },
|
| 716 |
+
{ t: "నర్సరీ", m: "Plant Nursery", s: "Agri", l: "https://en.wikipedia.org/wiki/Kadiyam" },
|
| 717 |
+
{ t: "పువ్వులు", m: "Flowers", s: "Agri", l: "https://en.wikipedia.org/wiki/Kadiyam" },
|
| 718 |
+
{ t: "రోజా", m: "Rose", s: "Agri", l: "https://andhrabharati.com" },
|
| 719 |
+
{ t: "రైలు", m: "Train (Bridge)", s: "Transport", l: "https://en.wikipedia.org/wiki/Godavari_Bridge" },
|
| 720 |
+
{ t: "గోదావరి", m: "River", s: "Geo", l: "https://en.wikipedia.org/wiki/Godavari_River" },
|
| 721 |
+
{ t: "సంస్కృతి", m: "Culture", s: "General", l: "https://andhrabharati.com" }
|
| 722 |
+
]
|
| 723 |
+
},
|
| 724 |
+
{
|
| 725 |
+
name: "West Godavari",
|
| 726 |
+
lat: 16.5417, lng: 81.5233,
|
| 727 |
+
region: "Godavari Delta",
|
| 728 |
+
history: "Centered around Bhimavaram. Known for aquaculture (Prawns/Fish) and cockfights (Kodi Pandem) during Sankranti.",
|
| 729 |
+
words: [
|
| 730 |
+
{ t: "రొయ్యలు", m: "Prawns", s: "Aqua", l: "https://en.wikipedia.org/wiki/Aquaculture_in_India" },
|
| 731 |
+
{ t: "చేపలు", m: "Fish", s: "Aqua", l: "https://en.wikipedia.org/wiki/Fish_farming" },
|
| 732 |
+
{ t: "పందెం", m: "Bet/Race", s: "Culture", l: "https://en.wikipedia.org/wiki/Cockfight" },
|
| 733 |
+
{ t: "సంక్రాంతి", m: "Harvest Fest", s: "Culture", l: "https://en.wikipedia.org/wiki/Sankranti" },
|
| 734 |
+
{ t: "కోడి", m: "Rooster", s: "Culture", l: "https://en.wikipedia.org/wiki/Cockfight" },
|
| 735 |
+
{ t: "బరి", m: "Arena", s: "Culture", l: "https://andhrabharati.com" },
|
| 736 |
+
{ t: "కత్తి", m: "Knife (Cockfight)", s: "Tool", l: "https://andhrabharati.com" },
|
| 737 |
+
{ t: "చెరువు", m: "Pond (Aqua)", s: "Agri", l: "https://en.wikipedia.org/wiki/Fish_pond" },
|
| 738 |
+
{ t: "గట్టు", m: "Bund", s: "Geo", l: "https://andhrabharati.com" },
|
| 739 |
+
{ t: "ఊరు", m: "Village", s: "General", l: "https://andhrabharati.com" }
|
| 740 |
+
]
|
| 741 |
+
},
|
| 742 |
+
{
|
| 743 |
+
name: "Eluru",
|
| 744 |
+
lat: 16.7107, lng: 81.0952,
|
| 745 |
+
region: "Kolleru Belt",
|
| 746 |
+
history: "Between Krishna and Godavari. Home to Kolleru Lake. Famous for carpets and woolen piles.",
|
| 747 |
+
words: [
|
| 748 |
+
{ t: "కొల్లేరు", m: "Lake Name", s: "Geo", l: "https://en.wikipedia.org/wiki/Kolleru_Lake" },
|
| 749 |
+
{ t: "పక్షులు", m: "Birds", s: "Nature", l: "https://en.wikipedia.org/wiki/Kolleru_Bird_Sanctuary" },
|
| 750 |
+
{ t: "తివాచీ", m: "Carpet", s: "Craft", l: "https://en.wikipedia.org/wiki/Eluru#Economy" },
|
| 751 |
+
{ t: "ఉన్ని", m: "Wool", s: "Material", l: "https://andhrabharati.com" },
|
| 752 |
+
{ t: "ద్వారకా", m: "Tirumala (Little)", s: "Religion", l: "https://en.wikipedia.org/wiki/Dwaraka_Tirumala" },
|
| 753 |
+
{ t: "గుడి", m: "Temple", s: "Religion", l: "https://andhrabharati.com" },
|
| 754 |
+
{ t: "మొక్కు", m: "Vow", s: "Religion", l: "https://andhrabharati.com" },
|
| 755 |
+
{ t: "లంక", m: "Island", s: "Geo", l: "https://andhrabharati.com" },
|
| 756 |
+
{ t: "పొలము", m: "Field", s: "Agri", l: "https://andhrabharati.com" },
|
| 757 |
+
{ t: "వరి", m: "Paddy", s: "Agri", l: "https://en.wikipedia.org/wiki/Paddy" }
|
| 758 |
+
]
|
| 759 |
+
},
|
| 760 |
+
|
| 761 |
+
// === KRISHNA-GUNTUR REGION ===
|
| 762 |
+
{
|
| 763 |
+
name: "Krishna",
|
| 764 |
+
lat: 16.1808, lng: 81.1303,
|
| 765 |
+
region: "Krishna Delta",
|
| 766 |
+
history: "Headquartered at Machilipatnam. Historic port town with Dutch/British influence. Famous for Kalamkari.",
|
| 767 |
+
words: [
|
| 768 |
+
{ t: "కలంకారీ", m: "Pen Art", s: "Art", l: "https://en.wikipedia.org/wiki/Kalamkari" },
|
| 769 |
+
{ t: "బందరు", m: "Machilipatnam", s: "Place", l: "https://en.wikipedia.org/wiki/Machilipatnam" },
|
| 770 |
+
{ t: "లడ్డు", m: "Sweet (Bandar)", s: "Food", l: "https://en.wikipedia.org/wiki/Bandar_Laddu" },
|
| 771 |
+
{ t: "బీచ్", m: "Beach", s: "Tourism", l: "https://en.wikipedia.org/wiki/Manginapudi_Beach" },
|
| 772 |
+
{ t: "కోట", m: "Fort (Dutch)", s: "History", l: "https://en.wikipedia.org/wiki/Machilipatnam#History" },
|
| 773 |
+
{ t: "నగల", m: "Imitation Gold", s: "Craft", l: "https://en.wikipedia.org/wiki/Machilipatnam" },
|
| 774 |
+
{ t: "డచ్", m: "Dutch", s: "History", l: "https://en.wikipedia.org/wiki/Dutch_Coromandel" },
|
| 775 |
+
{ t: "ఓడరేవు", m: "Seaport", s: "Marine", l: "https://andhrabharati.com" },
|
| 776 |
+
{ t: "చేనేత", m: "Handloom", s: "Craft", l: "https://andhrabharati.com" },
|
| 777 |
+
{ t: "నది", m: "River", s: "Geo", l: "https://andhrabharati.com" }
|
| 778 |
+
]
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
name: "NTR",
|
| 782 |
+
lat: 16.5062, lng: 80.6480,
|
| 783 |
+
region: "Central Capital",
|
| 784 |
+
history: "Vijayawada region. The political and commercial heart. Standard Telugu is spoken here but with a distinct speed.",
|
| 785 |
+
words: [
|
| 786 |
+
{ t: "బెజవాడ", m: "Vijayawada", s: "Place", l: "https://en.wikipedia.org/wiki/Vijayawada" },
|
| 787 |
+
{ t: "దుర్గమ్మ", m: "Goddess", s: "Religion", l: "https://en.wikipedia.org/wiki/Kanaka_Durga_Temple" },
|
| 788 |
+
{ t: "ప్రకాశం", m: "Barrage", s: "Infra", l: "https://en.wikipedia.org/wiki/Prakasam_Barrage" },
|
| 789 |
+
{ t: "రైలు", m: "Train (Junction)", s: "Transport", l: "https://en.wikipedia.org/wiki/Vijayawada_Junction_railway_station" },
|
| 790 |
+
{ t: "రాజధాని", m: "Capital", s: "Admin", l: "https://en.wikipedia.org/wiki/Amaravati" },
|
| 791 |
+
{ t: "రాజకీయం", m: "Politics", s: "Society", l: "https://en.wikipedia.org/wiki/Politics_of_Andhra_Pradesh" },
|
| 792 |
+
{ t: "వ్యాపారం", m: "Business", s: "Economy", l: "https://andhrabharati.com" },
|
| 793 |
+
{ t: "కొండ", m: "Hill (Indrakeeladri)", s: "Geo", l: "https://en.wikipedia.org/wiki/Indrakeeladri" },
|
| 794 |
+
{ t: "నది", m: "River (Krishna)", s: "Geo", l: "https://en.wikipedia.org/wiki/Krishna_River" },
|
| 795 |
+
{ t: "ఆటో", m: "Auto", s: "Transport", l: "https://en.wikipedia.org/wiki/Auto_rickshaw" }
|
| 796 |
+
]
|
| 797 |
+
},
|
| 798 |
+
{
|
| 799 |
+
name: "Guntur",
|
| 800 |
+
lat: 16.3067, lng: 80.4365,
|
| 801 |
+
region: "Central Andhra",
|
| 802 |
+
history: "Known for Chillies and Education. The dialect here is crisp and considered 'textbook' standard.",
|
| 803 |
+
words: [
|
| 804 |
+
{ t: "మిరప", m: "Chilli", s: "Agri", l: "https://en.wikipedia.org/wiki/Guntur_chilli" },
|
| 805 |
+
{ t: "కారం", m: "Spicy", s: "Food", l: "https://andhrabharati.com" },
|
| 806 |
+
{ t: "గోంగూర", m: "Sorrel Leaf", s: "Food", l: "https://en.wikipedia.org/wiki/Gongura" },
|
| 807 |
+
{ t: "పచ్చడి", m: "Pickle", s: "Food", l: "https://en.wikipedia.org/wiki/South_Indian_pickle" },
|
| 808 |
+
{ t: "పొగాకు", m: "Tobacco", s: "Agri", l: "https://en.wikipedia.org/wiki/Tobacco" },
|
| 809 |
+
{ t: "యార్డు", m: "Market Yard", s: "Trade", l: "https://en.wikipedia.org/wiki/Guntur" },
|
| 810 |
+
{ t: "జిన్నా", m: "Tower Name", s: "Landmark", l: "https://en.wikipedia.org/wiki/Jinnah_Tower" },
|
| 811 |
+
{ t: "చదువు", m: "Education", s: "General", l: "https://andhrabharati.com" },
|
| 812 |
+
{ t: "ఉప్పు", m: "Salt", s: "Food", l: "https://andhrabharati.com" },
|
| 813 |
+
{ t: "రాళ్ళు", m: "Stones", s: "General", l: "https://andhrabharati.com" }
|
| 814 |
+
]
|
| 815 |
+
},
|
| 816 |
+
{
|
| 817 |
+
name: "Palnadu",
|
| 818 |
+
lat: 16.2366, lng: 80.0515,
|
| 819 |
+
region: "Palnadu",
|
| 820 |
+
history: "Historic battlefield of Palnati Yuddham. Known for bravery and specific factional history. 'Pourusham' (Valor) is a key theme.",
|
| 821 |
+
words: [
|
| 822 |
+
{ t: "పౌరుషం", m: "Valor", s: "History", l: "https://en.wikipedia.org/wiki/Palnadu" },
|
| 823 |
+
{ t: "యుద్ధం", m: "War", s: "History", l: "https://te.wikipedia.org/wiki/%E0%B0%AA%E0%B0%B2%E0%B1%8D%E0%B0%A8%E0%B0%BE%E0%B0%9F%E0%B0%BF_%E0%B0%AF%E0%B1%81%E0%B0%A6%E0%B1%8D%E0%B0%A7%E0%B0%82" },
|
| 824 |
+
{ t: "బ్రహ్మనాయుడు", m: "Hero Name", s: "Legend", l: "https://en.wikipedia.org/wiki/Brahma_Naidu" },
|
| 825 |
+
{ t: "నాగమ్మ", m: "Leader Name", s: "Legend", l: "https://en.wikipedia.org/wiki/Nayakuralu_Nagamma" },
|
| 826 |
+
{ t: "కోడి", m: "Rooster (Fight)", s: "History", l: "https://en.wikipedia.org/wiki/Palnati_Yuddham_(1947_film)" },
|
| 827 |
+
{ t: "బొంగరం", m: "Top (Game)", s: "Culture", l: "https://te.wikipedia.org/wiki/%E0%B0%AA%E0%B0%B2%E0%B1%8D%E0%B0%A8%E0%B0%BE%E0%B0%9F%E0%B0%BF_%E0%B0%AF%E0%B1%81%E0%B0%A6%E0%B1%8D%E0%B0%A7%E0%B0%82" },
|
| 828 |
+
{ t: "సమరం", m: "Battle", s: "History", l: "https://te.wikipedia.org/wiki/%E0%B0%AA%E0%B0%B2%E0%B1%8D%E0%B0%A8%E0%B0%BE%E0%B0%9F%E0%B0%BF_%E0%B0%AF%E0%B1%81%E0%B0%A6%E0%B1%8D%E0%B0%A7%E0%B0%82" },
|
| 829 |
+
{ t: "పల్నాడు", m: "Region", s: "Geo", l: "https://en.wikipedia.org/wiki/Palnadu_district" },
|
| 830 |
+
{ t: "కత్తి", m: "Sword", s: "Weapon", l: "https://andhrabharati.com" },
|
| 831 |
+
{ t: "రక్తం", m: "Blood", s: "General", l: "https://andhrabharati.com" }
|
| 832 |
+
]
|
| 833 |
+
},
|
| 834 |
+
{
|
| 835 |
+
name: "Bapatla",
|
| 836 |
+
lat: 15.9038, lng: 80.4682,
|
| 837 |
+
region: "Coastal Guntur",
|
| 838 |
+
history: "Includes Chirala and Bapatla. Known for Weaving (Chirala) and Air Force Base. Coastal dialect.",
|
| 839 |
+
words: [
|
| 840 |
+
{ t: "చీరాల", m: "Place Name", s: "Geo", l: "https://en.wikipedia.org/wiki/Chirala" },
|
| 841 |
+
{ t: "నేత", m: "Weaving", s: "Craft", l: "https://en.wikipedia.org/wiki/Chirala" },
|
| 842 |
+
{ t: "బీచ్", m: "Beach (Suryalanka)", s: "Tourism", l: "https://en.wikipedia.org/wiki/Suryalanka_Beach" },
|
| 843 |
+
{ t: "జీడిపప్పు", m: "Cashew", s: "Agri", l: "https://andhrabharati.com" },
|
| 844 |
+
{ t: "ఇసుక", m: "Sand", s: "Geo", l: "https://andhrabharati.com" },
|
| 845 |
+
{ t: "వాయుసేన", m: "Air Force", s: "Defense", l: "https://en.wikipedia.org/wiki/Suryalanka_Air_Force_Station" },
|
| 846 |
+
{ t: "భావనారాయణ", m: "God Name", s: "Religion", l: "https://en.wikipedia.org/wiki/Bhavanarayana_Temple" },
|
| 847 |
+
{ t: "గుడి", m: "Temple", s: "Religion", l: "https://andhrabharati.com" },
|
| 848 |
+
{ t: "సముద్రం", m: "Sea", s: "Geo", l: "https://andhrabharati.com" },
|
| 849 |
+
{ t: "పడవ", m: "Boat", s: "Marine", l: "https://andhrabharati.com" }
|
| 850 |
+
]
|
| 851 |
+
},
|
| 852 |
+
{
|
| 853 |
+
name: "Prakasam",
|
| 854 |
+
lat: 15.5057, lng: 80.0499,
|
| 855 |
+
region: "South Coastal",
|
| 856 |
+
history: "Ongole is famous for its Bulls. The dialect is a transition between Guntur and Nellore.",
|
| 857 |
+
words: [
|
| 858 |
+
{ t: "గిత్త", m: "Bull", s: "Agri", l: "https://en.wikipedia.org/wiki/Ongole_cattle" },
|
| 859 |
+
{ t: "ఒంగోలు", m: "Ongole", s: "Place", l: "https://en.wikipedia.org/wiki/Ongole" },
|
| 860 |
+
{ t: "పాల", m: "Milk (Galaxy)", s: "Industry", l: "https://en.wikipedia.org/wiki/Dairy" },
|
| 861 |
+
{ t: "గ్రానైట్", m: "Granite", s: "Industry", l: "https://en.wikipedia.org/wiki/Granite" },
|
| 862 |
+
{ t: "బండ", m: "Rock", s: "Geo", l: "https://andhrabharati.com" },
|
| 863 |
+
{ t: "పలక", m: "Slate (Markapur)", s: "Mining", l: "https://en.wikipedia.org/wiki/Markapur" },
|
| 864 |
+
{ t: "అడవి", m: "Forest (Nallamala)", s: "Geo", l: "https://en.wikipedia.org/wiki/Nallamala_Hills" },
|
| 865 |
+
{ t: "నీళ్లు", m: "Water", s: "General", l: "https://andhrabharati.com" },
|
| 866 |
+
{ t: "వేట", m: "Hunt", s: "Action", l: "https://andhrabharati.com" },
|
| 867 |
+
{ t: "రైతు", m: "Farmer", s: "Agri", l: "https://andhrabharati.com" }
|
| 868 |
+
]
|
| 869 |
+
},
|
| 870 |
+
{
|
| 871 |
+
name: "Sri Potti Sriramulu Nellore",
|
| 872 |
+
lat: 14.4426, lng: 79.9865,
|
| 873 |
+
region: "Nellore",
|
| 874 |
+
history: "Distinct dialect ('Yeta' for 'Atu'). Famous for Ranganayaka Swamy and ISRO (Sriharikota). Transition to Tamil influence starts here.",
|
| 875 |
+
words: [
|
| 876 |
+
{ t: "ఏటి", m: "What (Yeti)", s: "Nellore Slang", l: "https://en.wikipedia.org/wiki/Nellore" },
|
| 877 |
+
{ t: "చేప", m: "Fish", s: "Food", l: "https://en.wikipedia.org/wiki/Nellore#Economy" },
|
| 878 |
+
{ t: "మందు", m: "Medicine", s: "General", l: "https://en.wikipedia.org/wiki/Anandaiah_COVID-19_Herbal_Cure" },
|
| 879 |
+
{ t: "రాకెట్", m: "Rocket", s: "Science", l: "https://en.wikipedia.org/wiki/Satish_Dhawan_Space_Centre" },
|
| 880 |
+
{ t: "చెరువు", m: "Lake (Pulicat)", s: "Geo", l: "https://en.wikipedia.org/wiki/Pulicat_Lake" },
|
| 881 |
+
{ t: "పక్షి", m: "Bird (Flamingo)", s: "Nature", l: "https://en.wikipedia.org/wiki/Nelapattu_Bird_Sanctuary" },
|
| 882 |
+
{ t: "పెన్న", m: "Penna River", s: "Geo", l: "https://en.wikipedia.org/wiki/Penna_River" },
|
| 883 |
+
{ t: "వడ్లు", m: "Paddy", s: "Agri", l: "https://en.wikipedia.org/wiki/Rice" },
|
| 884 |
+
{ t: "కారం", m: "Spicy", s: "Food", l: "https://andhrabharati.com" },
|
| 885 |
+
{ t: "దోవ", m: "Way/Path", s: "Rural", l: "https://www.reddit.com/r/Dravidiology/comments/1cmmve7/nellorekurrapalli_telugu_swadesh_list/" }
|
| 886 |
+
]
|
| 887 |
+
},
|
| 888 |
+
|
| 889 |
+
// === RAYALASEEMA REGION ===
|
| 890 |
+
{
|
| 891 |
+
name: "Kurnool",
|
| 892 |
+
lat: 15.8281, lng: 78.0373,
|
| 893 |
+
region: "Rayalaseema",
|
| 894 |
+
history: "Gateway to Rayalaseema. Historic capital. Dialect uses 'Emappa' and has rougher intonations.",
|
| 895 |
+
words: [
|
| 896 |
+
{ t: "కొండ", m: "Reddy (Fort)", s: "History", l: "https://en.wikipedia.org/wiki/Konda_Reddy_Fort" },
|
| 897 |
+
{ t: "బూర్జు", m: "Bastion", s: "History", l: "https://en.wikipedia.org/wiki/Konda_Reddy_Fort" },
|
| 898 |
+
{ t: "అప్ప", m: "Friend/Father", s: "Slang", l: "https://www.quora.com/What-are-some-common-phrases-in-the-Rayalaseema-Dialect-of-Telugu" },
|
| 899 |
+
{ t: "ఏమప్ప", m: "What man?", s: "Slang", l: "https://www.quora.com/What-are-some-common-phrases-in-the-Rayalaseema-Dialect-of-Telugu" },
|
| 900 |
+
{ t: "కర్నూలు", m: "City Name", s: "Place", l: "https://en.wikipedia.org/wiki/Kurnool" },
|
| 901 |
+
{ t: "తుంగభద్ర", m: "River", s: "Geo", l: "https://en.wikipedia.org/wiki/Tungabhadra_River" },
|
| 902 |
+
{ t: "సంగం", m: "Confluence", s: "Geo", l: "https://en.wikipedia.org/wiki/Sangameswara_Temple,_Kurnool" },
|
| 903 |
+
{ t: "రాళ్లు", m: "Stones", s: "Geo", l: "https://andhrabharati.com" },
|
| 904 |
+
{ t: "పులుసు", m: "Stew", s: "Food", l: "https://andhrabharati.com" },
|
| 905 |
+
{ t: "చేను", m: "Field", s: "Agri", l: "https://www.quora.com/What-are-some-common-phrases-in-the-Rayalaseema-Dialect-of-Telugu" }
|
| 906 |
+
]
|
| 907 |
+
},
|
| 908 |
+
{
|
| 909 |
+
name: "Nandyal",
|
| 910 |
+
lat: 15.4849, lng: 78.4867,
|
| 911 |
+
region: "Rayalaseema",
|
| 912 |
+
history: "Splintered from Kurnool. Famous for Mahanandi and Agriculture. 'Nandi' (Bull) is central to its identity.",
|
| 913 |
+
words: [
|
| 914 |
+
{ t: "నంది", m: "Bull", s: "Religion", l: "https://en.wikipedia.org/wiki/Mahanandi" },
|
| 915 |
+
{ t: "ఆలయం", m: "Temple", s: "Religion", l: "https://en.wikipedia.org/wiki/Mahanandi" },
|
| 916 |
+
{ t: "నీరు", m: "Water", s: "General", l: "https://andhrabharati.com" },
|
| 917 |
+
{ t: "మహానంది", m: "Place Name", s: "Geo", l: "https://en.wikipedia.org/wiki/Mahanandi" },
|
| 918 |
+
{ t: "అడవి", m: "Forest", s: "Geo", l: "https://en.wikipedia.org/wiki/Nallamala_Hills" },
|
| 919 |
+
{ t: "పులి", m: "Tiger", s: "Wildlife", l: "https://en.wikipedia.org/wiki/Nagarjunsagar-Srisailam_Tiger_Reserve" },
|
| 920 |
+
{ t: "విత్తనాలు", m: "Seeds", s: "Agri", l: "https://en.wikipedia.org/wiki/Nandyal" },
|
| 921 |
+
{ t: "పంట", m: "Crop", s: "Agri", l: "https://andhrabharati.com" },
|
| 922 |
+
{ t: "కొండ", m: "Hill", s: "Geo", l: "https://andhrabharati.com" },
|
| 923 |
+
{ t: "రైతు", m: "Farmer", s: "Agri", l: "https://andhrabharati.com" }
|
| 924 |
+
]
|
| 925 |
+
},
|
| 926 |
+
{
|
| 927 |
+
name: "Ananthapuramu",
|
| 928 |
+
lat: 14.6819, lng: 77.6006,
|
| 929 |
+
region: "Rayalaseema",
|
| 930 |
+
history: "Driest region. Groundnut (Verusenaga) is the main crop. Dialect is distinct Rayalaseema.",
|
| 931 |
+
words: [
|
| 932 |
+
{ t: "వేరుశనగ", m: "Groundnut", s: "Agri", l: "https://en.wikipedia.org/wiki/Anantapur_district#Economy" },
|
| 933 |
+
{ t: "కరవు", m: "Drought", s: "Climate", l: "https://en.wikipedia.org/wiki/Anantapur_district#Climate" },
|
| 934 |
+
{ t: "సీమ", m: "Region", s: "Geo", l: "https://en.wikipedia.org/wiki/Rayalaseema" },
|
| 935 |
+
{ t: "రాళ్లు", m: "Rocks", s: "Geo", l: "https://andhrabharati.com" },
|
| 936 |
+
{ t: "పవన", m: "Wind", s: "Energy", l: "https://en.wikipedia.org/wiki/Wind_power_in_India" },
|
| 937 |
+
{ t: "విద్యుత్", m: "Power", s: "Energy", l: "https://en.wikipedia.org/wiki/Solar_power_in_India" },
|
| 938 |
+
{ t: "కోట", m: "Fort (Gooty)", s: "History", l: "https://en.wikipedia.org/wiki/Gooty_Fort" },
|
| 939 |
+
{ t: "ట్యాంక్", m: "Tank", s: "Water", l: "https://en.wikipedia.org/wiki/Anantapur" },
|
| 940 |
+
{ t: "పొలము", m: "Field", s: "Agri", l: "https://andhrabharati.com" },
|
| 941 |
+
{ t: "లేపాక్షి", m: "Lepakshi", s: "Art", l: "https://en.wikipedia.org/wiki/Lepakshi" }
|
| 942 |
+
]
|
| 943 |
+
},
|
| 944 |
+
{
|
| 945 |
+
name: "Sri Sathya Sai",
|
| 946 |
+
lat: 14.1683, lng: 77.8117,
|
| 947 |
+
region: "Spiritual Rayalaseema",
|
| 948 |
+
history: "Headquartered at Puttaparthi. Global influence due to Sathya Sai Baba. Vocabulary includes spiritual terms.",
|
| 949 |
+
words: [
|
| 950 |
+
{ t: "సాయి", m: "Sai Baba", s: "Religion", l: "https://en.wikipedia.org/wiki/Sathya_Sai_Baba" },
|
| 951 |
+
{ t: "సేవ", m: "Service", s: "Religion", l: "https://www.sathyasai.org/resources/indic-glossary" },
|
| 952 |
+
{ t: "భక్తి", m: "Devotion", s: "Religion", l: "https://www.sathyasai.org/resources/indic-glossary" },
|
| 953 |
+
{ t: "ఆశ్రమం", m: "Ashram", s: "Place", l: "https://en.wikipedia.org/wiki/Prasanthi_Nilayam" },
|
| 954 |
+
{ t: "విమానం", m: "Airport", s: "Transport", l: "https://en.wikipedia.org/wiki/Sri_Sathya_Sai_Airport" },
|
| 955 |
+
{ t: "వైద్యం", m: "Medicine", s: "Health", l: "https://en.wikipedia.org/wiki/Sri_Sathya_Sai_Institute_of_Higher_Medical_Sciences,_Prasanthigram" },
|
| 956 |
+
{ t: "ప్రశాంతి", m: "Peace", s: "Philosophy", l: "https://en.wikipedia.org/wiki/Prasanthi_Nilayam" },
|
| 957 |
+
{ t: "నిలయం", m: "Abode", s: "Place", l: "https://en.wikipedia.org/wiki/Prasanthi_Nilayam" },
|
| 958 |
+
{ t: "హారతి", m: "Offering", s: "Ritual", l: "https://www.sathyasai.org/resources/indic-glossary" },
|
| 959 |
+
{ t: "దర్శనం", m: "Sight/View", s: "Ritual", l: "https://www.sathyasai.org/resources/indic-glossary" }
|
| 960 |
+
]
|
| 961 |
+
},
|
| 962 |
+
{
|
| 963 |
+
name: "YSR Kadapa",
|
| 964 |
+
lat: 14.4673, lng: 78.8242,
|
| 965 |
+
region: "Rayalaseema",
|
| 966 |
+
history: "Heart of Rayalaseema. Known for 'Kadapa' (Threshold). Dialect uses strong words like 'Biddā' (Child/Son).",
|
| 967 |
+
words: [
|
| 968 |
+
{ t: "బిడ్డ", m: "Child/Son", s: "Slang", l: "https://kadapa.info/tag/rayalaseema-dialect/" },
|
| 969 |
+
{ t: "రాయి", m: "Stone (Kadapa)", s: "Geo", l: "https://en.wikipedia.org/wiki/Kadapa_Stone" },
|
| 970 |
+
{ t: "గడప", m: "Threshold", s: "Etymology", l: "https://en.wikipedia.org/wiki/Kadapa" },
|
| 971 |
+
{ t: "దేవుడు", m: "God (Balaji)", s: "Religion", l: "https://en.wikipedia.org/wiki/Venkateswara" },
|
| 972 |
+
{ t: "దర్గా", m: "Shrine", s: "Religion", l: "https://en.wikipedia.org/wiki/Ameen_Peer_Dargah" },
|
| 973 |
+
{ t: "మసీదు", m: "Mosque", s: "Religion", l: "https://en.wikipedia.org/wiki/Ameen_Peer_Dargah" },
|
| 974 |
+
{ t: "గండి", m: "Gorge", s: "Geo", l: "https://en.wikipedia.org/wiki/Gandikota" },
|
| 975 |
+
{ t: "కోట", m: "Fort (Gandikota)", s: "History", l: "https://en.wikipedia.org/wiki/Gandikota" },
|
| 976 |
+
{ t: "ఏరు", m: "River (Penna)", s: "Geo", l: "https://en.wikipedia.org/wiki/Penna_River" },
|
| 977 |
+
{ t: "ఊరు", m: "Village", s: "General", l: "https://andhrabharati.com" }
|
| 978 |
+
]
|
| 979 |
+
},
|
| 980 |
+
{
|
| 981 |
+
name: "Annamayya",
|
| 982 |
+
lat: 14.0772, lng: 79.0267,
|
| 983 |
+
region: "Rayalaseema",
|
| 984 |
+
history: "Named after Tallapaka Annamayya. Rayachoti is HQ. Dialect is a blend of Kadapa and Chittoor.",
|
| 985 |
+
words: [
|
| 986 |
+
{ t: "సంకీర్తన", m: "Song/Hymn", s: "Culture", l: "https://en.wikipedia.org/wiki/Annamacharya" },
|
| 987 |
+
{ t: "వెంకన్న", m: "Lord Venkateswara", s: "Religion", l: "https://en.wikipedia.org/wiki/Venkateswara" },
|
| 988 |
+
{ t: "తాళ్ళపాక", m: "Place Name", s: "History", l: "https://en.wikipedia.org/wiki/Tallapaka" },
|
| 989 |
+
{ t: "రాచవీడు", m: "Rayachoti (Old)", s: "Etymology", l: "https://en.wikipedia.org/wiki/Rayachoti" },
|
| 990 |
+
{ t: "కొండ", m: "Hill (Horsley)", s: "Geo", l: "https://en.wikipedia.org/wiki/Horsley_Hills" },
|
| 991 |
+
{ t: "మదనపల్లె", m: "Place Name", s: "Geo", l: "https://en.wikipedia.org/wiki/Madanapalle" },
|
| 992 |
+
{ t: "టమోటా", m: "Tomato", s: "Agri", l: "https://en.wikipedia.org/wiki/Madanapalle#Economy" },
|
| 993 |
+
{ t: "పట్టు", m: "Silk", s: "Textile", l: "https://annamayya.ap.gov.in/te/" },
|
| 994 |
+
{ t: "చీర", m: "Saree", s: "Textile", l: "https://annamayya.ap.gov.in/te/" },
|
| 995 |
+
{ t: "పాట", m: "Song", s: "Culture", l: "https://en.wikipedia.org/wiki/Annamacharya" }
|
| 996 |
+
]
|
| 997 |
+
},
|
| 998 |
+
{
|
| 999 |
+
name: "Tirupati",
|
| 1000 |
+
lat: 13.6288, lng: 79.4192,
|
| 1001 |
+
region: "Pilgrimage Zone",
|
| 1002 |
+
history: "The Spiritual Capital. Dialect has Tamil influence due to proximity to Chennai and millions of pilgrims.",
|
| 1003 |
+
words: [
|
| 1004 |
+
{ t: "గోవిందా", m: "God's Name", s: "Religion", l: "https://en.wikipedia.org/wiki/Govinda" },
|
| 1005 |
+
{ t: "లడ్డు", m: "Prasadam", s: "Food", l: "https://en.wikipedia.org/wiki/Tirupati_Laddu" },
|
| 1006 |
+
{ t: "కొండ", m: "Hill (Seven)", s: "Geo", l: "https://en.wikipedia.org/wiki/Tirumala" },
|
| 1007 |
+
{ t: "ఏడు", m: "Seven", s: "Number", l: "https://en.wikipedia.org/wiki/Tirumala_Venkateswara_Temple" },
|
| 1008 |
+
{ t: "వెంకటేశ్వర", m: "God", s: "Religion", l: "https://en.wikipedia.org/wiki/Venkateswara" },
|
| 1009 |
+
{ t: "కళ్యాణ", m: "Wedding", s: "Ritual", l: "https://en.wikipedia.org/wiki/Kalyanotsavam" },
|
| 1010 |
+
{ t: "జుట్టు", m: "Hair (Tonsure)", s: "Ritual", l: "https://en.wikipedia.org/wiki/Tirumala_Venkateswara_Temple#Tonsure" },
|
| 1011 |
+
{ t: "దర్శనం", m: "View", s: "Religion", l: "https://en.wikipedia.org/wiki/Darshan" },
|
| 1012 |
+
{ t: "జూ", m: "Zoo", s: "Tourism", l: "https://en.wikipedia.org/wiki/Sri_Venkateswara_Zoological_Park" },
|
| 1013 |
+
{ t: "శ్రీహరికోట", m: "Spaceport", s: "Science", l: "https://en.wikipedia.org/wiki/Satish_Dhawan_Space_Centre" }
|
| 1014 |
+
]
|
| 1015 |
+
},
|
| 1016 |
+
{
|
| 1017 |
+
name: "Chittoor",
|
| 1018 |
+
lat: 13.2172, lng: 79.1003,
|
| 1019 |
+
region: "Southern Border",
|
| 1020 |
+
history: "Strong Tamil influence (Chittoor slang). Words like 'Maa' (Mango) and dairy terms are common.",
|
| 1021 |
+
words: [
|
| 1022 |
+
{ t: "మామిడి", m: "Mango", s: "Agri", l: "https://en.wikipedia.org/wiki/Chittoor_district#Economy" },
|
| 1023 |
+
{ t: "పాలు", m: "Milk", s: "Agri", l: "https://en.wikipedia.org/wiki/Dairy" },
|
| 1024 |
+
{ t: "గ్రానైట్", m: "Granite", s: "Industry", l: "https://en.wikipedia.org/wiki/Granite" },
|
| 1025 |
+
{ t: "కాణిపాకం", m: "Place Name", s: "Religion", l: "https://en.wikipedia.org/wiki/Kanipakam" },
|
| 1026 |
+
{ t: "వినాయకుడు", m: "Ganesha", s: "Religion", l: "https://en.wikipedia.org/wiki/Kanipakam_Vinayaka_Temple" },
|
| 1027 |
+
{ t: "బెల్లం", m: "Jaggery", s: "Food", l: "https://en.wikipedia.org/wiki/Jaggery" },
|
| 1028 |
+
{ t: "అరగొండ", m: "Half Hill", s: "Place", l: "https://en.wikipedia.org/wiki/Aragonda" },
|
| 1029 |
+
{ t: "చెరకు", m: "Sugarcane", s: "Agri", l: "https://en.wikipedia.org/wiki/Sugarcane" },
|
| 1030 |
+
{ t: "తమిళం", m: "Tamil", s: "Influence", l: "https://en.wikipedia.org/wiki/Chittoor_district#Demographics" },
|
| 1031 |
+
{ t: "టెంకాయ", m: "Coconut (Tenkaaya)", s: "Slang", l: "https://andhrabharati.com" }
|
| 1032 |
+
]
|
| 1033 |
}
|
| 1034 |
+
];
|
| 1035 |
+
|
| 1036 |
+
// COMBINE DATA FOR ALL DISTRICTS
|
| 1037 |
+
const allDistrictsData = [...Telangana_Data, ...andhraData];
|
| 1038 |
|
| 1039 |
// --- 2. MAP SETUP ---
|
| 1040 |
+
// Center on the Telugu States region
|
| 1041 |
+
const map = L.map('map').setView([17.0, 80.0], 7);
|
| 1042 |
+
|
| 1043 |
+
L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png', {
|
| 1044 |
+
attribution: '© OSM contributors'
|
| 1045 |
+
}).addTo(map);
|
| 1046 |
+
|
| 1047 |
+
// --- 3. MARKERS & INTERACTION ---
|
| 1048 |
+
const sidebarPanel = document.getElementById('info-panel');
|
| 1049 |
+
|
| 1050 |
+
// Red Marker Style
|
| 1051 |
+
const iconConfig = L.divIcon({
|
| 1052 |
+
className: 'custom-icon',
|
| 1053 |
+
html: `<div style="background:#e74c3c; width:12px; height:12px; border-radius:50%; border:2px solid white; box-shadow:0 0 4px rgba(0,0,0,0.4);"></div>`,
|
| 1054 |
+
iconSize: [14, 14],
|
| 1055 |
+
iconAnchor: [7, 7]
|
| 1056 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1057 |
|
| 1058 |
+
// Loop through the combined data
|
| 1059 |
+
allDistrictsData.forEach(d => {
|
| 1060 |
+
const marker = L.marker([d.lat, d.lng], { icon: iconConfig }).addTo(map);
|
| 1061 |
|
| 1062 |
+
// Hover Label
|
| 1063 |
+
marker.bindTooltip(`<b>${d.name}</b>`, { direction: 'top', offset: [0, -5] });
|
| 1064 |
|
| 1065 |
+
// Click Action
|
| 1066 |
+
marker.on('click', () => {
|
| 1067 |
+
map.flyTo([d.lat, d.lng], 9, { duration: 1.2 });
|
| 1068 |
+
updateSidebar(d);
|
|
|
|
| 1069 |
});
|
| 1070 |
+
});
|
| 1071 |
|
| 1072 |
+
function updateSidebar(data) {
|
| 1073 |
+
const rows = data.words.map(w => {
|
| 1074 |
+
// Check if a link exists ('l' property)
|
| 1075 |
+
const sourceContent = w.l
|
| 1076 |
+
? `<a href="${w.l}" target="_blank" class="source-link">${w.s}</a>`
|
| 1077 |
+
: w.s;
|
| 1078 |
+
|
| 1079 |
+
return `
|
| 1080 |
<tr>
|
| 1081 |
<td class="telugu-word">${w.t}</td>
|
| 1082 |
<td>${w.m}</td>
|
| 1083 |
+
<td style="color:#777; font-size:0.7rem;">${sourceContent}</td>
|
| 1084 |
</tr>
|
| 1085 |
+
`;
|
| 1086 |
+
}).join('');
|
| 1087 |
|
| 1088 |
+
sidebarPanel.innerHTML = `
|
| 1089 |
<div style="animation:fadeIn 0.4s;">
|
| 1090 |
<h2 class="district-title">${data.name}</h2>
|
| 1091 |
<span class="region-tag">${data.region}</span>
|
|
|
|
| 1096 |
</table>
|
| 1097 |
</div>
|
| 1098 |
`;
|
|
|
|
| 1099 |
}
|
|
|
|
|
|
|
|
|
|
| 1100 |
</script>
|
| 1101 |
</body>
|
| 1102 |
|
requirements.txt
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
google-auth>=2.25.0
|
| 2 |
-
google-auth-oauthlib>=1.2.0
|
| 3 |
-
google-auth-httplib2>=0.2.0
|
| 4 |
-
google-api-python-client>=2.110.0
|
| 5 |
-
watchdog>=3.0.0
|
| 6 |
-
python-dotenv>=1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/automation_runner.py
DELETED
|
@@ -1,169 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
Automation Runner
|
| 4 |
-
Main orchestrator that runs all automation tasks:
|
| 5 |
-
- File watching
|
| 6 |
-
- Scheduled Google Sheets sync
|
| 7 |
-
- Initial conversion
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
import json
|
| 11 |
-
import time
|
| 12 |
-
import signal
|
| 13 |
-
import sys
|
| 14 |
-
import threading
|
| 15 |
-
import subprocess
|
| 16 |
-
from pathlib import Path
|
| 17 |
-
from datetime import datetime
|
| 18 |
-
|
| 19 |
-
# Paths
|
| 20 |
-
BASE_DIR = Path(__file__).parent.parent
|
| 21 |
-
CONFIG_FILE = BASE_DIR / "config.json"
|
| 22 |
-
SHEETS_SYNC_SCRIPT = BASE_DIR / "scripts" / "sheets_sync.py"
|
| 23 |
-
FILE_WATCHER_SCRIPT = BASE_DIR / "scripts" / "file_watcher.py"
|
| 24 |
-
CSV_TO_JSON_SCRIPT = BASE_DIR / "scripts" / "csv_to_json.py"
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
class AutomationRunner:
|
| 28 |
-
"""Manages all automation tasks"""
|
| 29 |
-
|
| 30 |
-
def __init__(self):
|
| 31 |
-
self.config = self.load_config()
|
| 32 |
-
self.running = True
|
| 33 |
-
self.watcher_process = None
|
| 34 |
-
self.sync_thread = None
|
| 35 |
-
|
| 36 |
-
# Set up signal handlers for graceful shutdown
|
| 37 |
-
signal.signal(signal.SIGINT, self.signal_handler)
|
| 38 |
-
signal.signal(signal.SIGTERM, self.signal_handler)
|
| 39 |
-
|
| 40 |
-
def signal_handler(self, sig, frame):
|
| 41 |
-
"""Handle shutdown signals"""
|
| 42 |
-
print("\n\n🛑 Shutdown signal received...")
|
| 43 |
-
self.running = False
|
| 44 |
-
|
| 45 |
-
def load_config(self):
|
| 46 |
-
"""Load configuration"""
|
| 47 |
-
if not CONFIG_FILE.exists():
|
| 48 |
-
print(f"❌ Config file not found: {CONFIG_FILE}")
|
| 49 |
-
sys.exit(1)
|
| 50 |
-
|
| 51 |
-
with open(CONFIG_FILE, 'r') as f:
|
| 52 |
-
return json.load(f)
|
| 53 |
-
|
| 54 |
-
def run_initial_conversion(self):
|
| 55 |
-
"""Run initial CSV-to-JSON conversion"""
|
| 56 |
-
print("🔄 Running initial CSV-to-JSON conversion...")
|
| 57 |
-
try:
|
| 58 |
-
subprocess.run([sys.executable, str(CSV_TO_JSON_SCRIPT)], check=True)
|
| 59 |
-
except subprocess.CalledProcessError:
|
| 60 |
-
print("⚠️ Initial conversion failed (this is OK if CSV files don't exist yet)")
|
| 61 |
-
|
| 62 |
-
def start_file_watcher(self):
|
| 63 |
-
"""Start the file watcher in a separate process"""
|
| 64 |
-
if not self.config.get('file_watcher', {}).get('enabled', True):
|
| 65 |
-
print("⚠️ File watcher disabled in config")
|
| 66 |
-
return
|
| 67 |
-
|
| 68 |
-
print("👀 Starting file watcher...")
|
| 69 |
-
self.watcher_process = subprocess.Popen(
|
| 70 |
-
[sys.executable, str(FILE_WATCHER_SCRIPT)],
|
| 71 |
-
stdout=subprocess.PIPE,
|
| 72 |
-
stderr=subprocess.STDOUT,
|
| 73 |
-
text=True,
|
| 74 |
-
bufsize=1
|
| 75 |
-
)
|
| 76 |
-
|
| 77 |
-
# Stream output in a separate thread
|
| 78 |
-
def stream_output():
|
| 79 |
-
for line in self.watcher_process.stdout:
|
| 80 |
-
print(line, end='')
|
| 81 |
-
|
| 82 |
-
threading.Thread(target=stream_output, daemon=True).start()
|
| 83 |
-
|
| 84 |
-
def sync_sheets_once(self):
|
| 85 |
-
"""Run Google Sheets sync once"""
|
| 86 |
-
print(f"\n⏰ [{datetime.now().strftime('%H:%M:%S')}] Running Google Sheets sync...")
|
| 87 |
-
try:
|
| 88 |
-
result = subprocess.run(
|
| 89 |
-
[sys.executable, str(SHEETS_SYNC_SCRIPT)],
|
| 90 |
-
capture_output=True,
|
| 91 |
-
text=True
|
| 92 |
-
)
|
| 93 |
-
print(result.stdout)
|
| 94 |
-
if result.returncode != 0:
|
| 95 |
-
print(result.stderr)
|
| 96 |
-
except Exception as e:
|
| 97 |
-
print(f"❌ Sync error: {e}")
|
| 98 |
-
|
| 99 |
-
def start_scheduled_sync(self):
|
| 100 |
-
"""Start scheduled Google Sheets sync"""
|
| 101 |
-
sheets_config = self.config.get('google_sheets', {})
|
| 102 |
-
|
| 103 |
-
if not sheets_config.get('enabled', False):
|
| 104 |
-
print("⚠️ Google Sheets sync disabled in config")
|
| 105 |
-
return
|
| 106 |
-
|
| 107 |
-
interval_minutes = sheets_config.get('sync_interval_minutes', 5)
|
| 108 |
-
print(f"⏰ Starting scheduled sync (every {interval_minutes} minutes)...")
|
| 109 |
-
|
| 110 |
-
def sync_loop():
|
| 111 |
-
# Run initial sync
|
| 112 |
-
self.sync_sheets_once()
|
| 113 |
-
|
| 114 |
-
# Continue syncing at intervals
|
| 115 |
-
while self.running:
|
| 116 |
-
time.sleep(interval_minutes * 60)
|
| 117 |
-
if self.running:
|
| 118 |
-
self.sync_sheets_once()
|
| 119 |
-
|
| 120 |
-
self.sync_thread = threading.Thread(target=sync_loop, daemon=True)
|
| 121 |
-
self.sync_thread.start()
|
| 122 |
-
|
| 123 |
-
def run(self):
|
| 124 |
-
"""Main run loop"""
|
| 125 |
-
print("=" * 60)
|
| 126 |
-
print("🚀 Dialect Map Automation System")
|
| 127 |
-
print("=" * 60)
|
| 128 |
-
print()
|
| 129 |
-
|
| 130 |
-
# Run initial conversion
|
| 131 |
-
self.run_initial_conversion()
|
| 132 |
-
print()
|
| 133 |
-
|
| 134 |
-
# Start file watcher
|
| 135 |
-
self.start_file_watcher()
|
| 136 |
-
|
| 137 |
-
# Start scheduled sync
|
| 138 |
-
self.start_scheduled_sync()
|
| 139 |
-
|
| 140 |
-
print()
|
| 141 |
-
print("=" * 60)
|
| 142 |
-
print("✅ All automation tasks started!")
|
| 143 |
-
print("=" * 60)
|
| 144 |
-
print("\n💡 Press Ctrl+C to stop all automation\n")
|
| 145 |
-
|
| 146 |
-
# Keep running until stopped
|
| 147 |
-
try:
|
| 148 |
-
while self.running:
|
| 149 |
-
time.sleep(1)
|
| 150 |
-
except KeyboardInterrupt:
|
| 151 |
-
pass
|
| 152 |
-
|
| 153 |
-
# Cleanup
|
| 154 |
-
print("\n🧹 Cleaning up...")
|
| 155 |
-
if self.watcher_process:
|
| 156 |
-
self.watcher_process.terminate()
|
| 157 |
-
self.watcher_process.wait()
|
| 158 |
-
|
| 159 |
-
print("✅ Automation stopped gracefully\n")
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
def main():
|
| 163 |
-
"""Main entry point"""
|
| 164 |
-
runner = AutomationRunner()
|
| 165 |
-
runner.run()
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
if __name__ == "__main__":
|
| 169 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/check_sheet_names.py
DELETED
|
@@ -1,63 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
Check Sheet Names
|
| 4 |
-
Quick utility to list all sheet tab names from Google Sheets
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
import json
|
| 8 |
-
from pathlib import Path
|
| 9 |
-
from google.oauth2 import service_account
|
| 10 |
-
from googleapiclient.discovery import build
|
| 11 |
-
|
| 12 |
-
# Paths
|
| 13 |
-
BASE_DIR = Path(__file__).parent.parent
|
| 14 |
-
CONFIG_FILE = BASE_DIR / "config.json"
|
| 15 |
-
CREDS_FILE = BASE_DIR / "credentials.json"
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
def get_sheet_names(spreadsheet_id, service):
|
| 19 |
-
"""Get all sheet names from a spreadsheet"""
|
| 20 |
-
try:
|
| 21 |
-
sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
|
| 22 |
-
sheets = sheet_metadata.get('sheets', [])
|
| 23 |
-
return [sheet['properties']['title'] for sheet in sheets]
|
| 24 |
-
except Exception as e:
|
| 25 |
-
print(f"❌ Error: {e}")
|
| 26 |
-
return []
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
def main():
|
| 30 |
-
# Load config
|
| 31 |
-
with open(CONFIG_FILE, 'r') as f:
|
| 32 |
-
config = json.load(f)
|
| 33 |
-
|
| 34 |
-
# Authenticate
|
| 35 |
-
print("🔐 Authenticating with Google Sheets API...\n")
|
| 36 |
-
credentials = service_account.Credentials.from_service_account_file(
|
| 37 |
-
CREDS_FILE,
|
| 38 |
-
scopes=['https://www.googleapis.com/auth/spreadsheets.readonly']
|
| 39 |
-
)
|
| 40 |
-
service = build('sheets', 'v4', credentials=credentials)
|
| 41 |
-
|
| 42 |
-
# Check each spreadsheet
|
| 43 |
-
for sheet_config in config['google_sheets']['spreadsheets']:
|
| 44 |
-
name = sheet_config['name']
|
| 45 |
-
spreadsheet_id = sheet_config['spreadsheet_id']
|
| 46 |
-
|
| 47 |
-
print(f"📊 {name}")
|
| 48 |
-
print(f" ID: {spreadsheet_id[:20]}...")
|
| 49 |
-
|
| 50 |
-
sheet_names = get_sheet_names(spreadsheet_id, service)
|
| 51 |
-
|
| 52 |
-
if sheet_names:
|
| 53 |
-
print(f" ✅ Found {len(sheet_names)} tab(s):")
|
| 54 |
-
for tab_name in sheet_names:
|
| 55 |
-
print(f" - '{tab_name}'")
|
| 56 |
-
else:
|
| 57 |
-
print(" ❌ No tabs found or error occurred")
|
| 58 |
-
|
| 59 |
-
print()
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
if __name__ == "__main__":
|
| 63 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/csv_to_json.py
DELETED
|
@@ -1,160 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
CSV to JSON Converter
|
| 4 |
-
Converts dialect CSV files from sheets_output/ to JSON format for index.html
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
import csv
|
| 8 |
-
import json
|
| 9 |
-
import os
|
| 10 |
-
from pathlib import Path
|
| 11 |
-
from collections import defaultdict
|
| 12 |
-
|
| 13 |
-
# Paths
|
| 14 |
-
BASE_DIR = Path(__file__).parent.parent
|
| 15 |
-
SHEETS_OUTPUT_DIR = BASE_DIR / "sheets_output"
|
| 16 |
-
JSON_OUTPUT_DIR = BASE_DIR / "data" / "processed"
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
def convert_processed_dialects():
|
| 20 |
-
"""Convert processed_dialects.csv to JSON format"""
|
| 21 |
-
csv_file = SHEETS_OUTPUT_DIR / "processed_dialects.csv"
|
| 22 |
-
json_file = JSON_OUTPUT_DIR / "processed_dialects.json"
|
| 23 |
-
|
| 24 |
-
if not csv_file.exists():
|
| 25 |
-
print(f"⚠️ CSV file not found: {csv_file}")
|
| 26 |
-
return False
|
| 27 |
-
|
| 28 |
-
try:
|
| 29 |
-
districts = []
|
| 30 |
-
|
| 31 |
-
with open(csv_file, 'r', encoding='utf-8') as f:
|
| 32 |
-
reader = csv.DictReader(f)
|
| 33 |
-
|
| 34 |
-
# Group words by district
|
| 35 |
-
district_words = defaultdict(lambda: {
|
| 36 |
-
'name': '',
|
| 37 |
-
'lat': 0,
|
| 38 |
-
'lng': 0,
|
| 39 |
-
'region': '',
|
| 40 |
-
'history': '',
|
| 41 |
-
'words': []
|
| 42 |
-
})
|
| 43 |
-
|
| 44 |
-
for row in reader:
|
| 45 |
-
district_name = row.get('District', '').strip()
|
| 46 |
-
if not district_name:
|
| 47 |
-
continue
|
| 48 |
-
|
| 49 |
-
# Set district metadata (from first occurrence)
|
| 50 |
-
if not district_words[district_name]['name']:
|
| 51 |
-
district_words[district_name]['name'] = district_name
|
| 52 |
-
district_words[district_name]['lat'] = float(row.get('Latitude', 0))
|
| 53 |
-
district_words[district_name]['lng'] = float(row.get('Longitude', 0))
|
| 54 |
-
district_words[district_name]['region'] = row.get('Region', '')
|
| 55 |
-
district_words[district_name]['history'] = row.get('History', '')
|
| 56 |
-
|
| 57 |
-
# Add word entry
|
| 58 |
-
word_entry = {
|
| 59 |
-
't': row.get('Telugu_Word', ''),
|
| 60 |
-
'm': row.get('Meaning', ''),
|
| 61 |
-
's': row.get('Source', '')
|
| 62 |
-
}
|
| 63 |
-
|
| 64 |
-
if word_entry['t']: # Only add if Telugu word exists
|
| 65 |
-
district_words[district_name]['words'].append(word_entry)
|
| 66 |
-
|
| 67 |
-
# Convert to list
|
| 68 |
-
districts = list(district_words.values())
|
| 69 |
-
|
| 70 |
-
# Write JSON
|
| 71 |
-
JSON_OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
| 72 |
-
with open(json_file, 'w', encoding='utf-8') as f:
|
| 73 |
-
json.dump(districts, f, ensure_ascii=False, indent=2)
|
| 74 |
-
|
| 75 |
-
print(f"✅ Converted {csv_file.name} → {json_file.name}")
|
| 76 |
-
print(f" {len(districts)} districts, {sum(len(d['words']) for d in districts)} words")
|
| 77 |
-
return True
|
| 78 |
-
|
| 79 |
-
except Exception as e:
|
| 80 |
-
print(f"❌ Error converting processed_dialects.csv: {e}")
|
| 81 |
-
return False
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
def convert_digiwords_grouped():
|
| 85 |
-
"""Convert digiwords_grouped.csv to JSON format"""
|
| 86 |
-
csv_file = SHEETS_OUTPUT_DIR / "digiwords_grouped.csv"
|
| 87 |
-
json_file = JSON_OUTPUT_DIR / "digiwords_grouped.json"
|
| 88 |
-
|
| 89 |
-
if not csv_file.exists():
|
| 90 |
-
print(f"⚠️ CSV file not found: {csv_file}")
|
| 91 |
-
return False
|
| 92 |
-
|
| 93 |
-
try:
|
| 94 |
-
data = {
|
| 95 |
-
"Telangana": defaultdict(list),
|
| 96 |
-
"Andhra Pradesh": defaultdict(list)
|
| 97 |
-
}
|
| 98 |
-
|
| 99 |
-
with open(csv_file, 'r', encoding='utf-8') as f:
|
| 100 |
-
reader = csv.DictReader(f)
|
| 101 |
-
|
| 102 |
-
for row in reader:
|
| 103 |
-
state = row.get('State', '').strip()
|
| 104 |
-
district = row.get('District', '').strip()
|
| 105 |
-
|
| 106 |
-
if not state or not district:
|
| 107 |
-
continue
|
| 108 |
-
|
| 109 |
-
word_entry = {
|
| 110 |
-
't': row.get('Telugu_Word', ''),
|
| 111 |
-
'm': row.get('Meaning', ''),
|
| 112 |
-
's': row.get('Source', 'Crowd')
|
| 113 |
-
}
|
| 114 |
-
|
| 115 |
-
if word_entry['t'] and state in data:
|
| 116 |
-
data[state][district].append(word_entry)
|
| 117 |
-
|
| 118 |
-
# Convert defaultdict to regular dict
|
| 119 |
-
output = {
|
| 120 |
-
state: dict(districts)
|
| 121 |
-
for state, districts in data.items()
|
| 122 |
-
}
|
| 123 |
-
|
| 124 |
-
# Write JSON
|
| 125 |
-
JSON_OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
| 126 |
-
with open(json_file, 'w', encoding='utf-8') as f:
|
| 127 |
-
json.dump(output, f, ensure_ascii=False, indent=2)
|
| 128 |
-
|
| 129 |
-
tg_count = sum(len(words) for words in output.get("Telangana", {}).values())
|
| 130 |
-
ap_count = sum(len(words) for words in output.get("Andhra Pradesh", {}).values())
|
| 131 |
-
|
| 132 |
-
print(f"✅ Converted {csv_file.name} → {json_file.name}")
|
| 133 |
-
print(f" Telangana: {len(output.get('Telangana', {}))} districts, {tg_count} words")
|
| 134 |
-
print(f" Andhra Pradesh: {len(output.get('Andhra Pradesh', {}))} districts, {ap_count} words")
|
| 135 |
-
return True
|
| 136 |
-
|
| 137 |
-
except Exception as e:
|
| 138 |
-
print(f"❌ Error converting digiwords_grouped.csv: {e}")
|
| 139 |
-
return False
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
def main():
|
| 143 |
-
"""Convert all CSV files to JSON"""
|
| 144 |
-
print("🔄 Starting CSV to JSON conversion...")
|
| 145 |
-
print(f"📂 Input: {SHEETS_OUTPUT_DIR}")
|
| 146 |
-
print(f"📂 Output: {JSON_OUTPUT_DIR}\n")
|
| 147 |
-
|
| 148 |
-
success_count = 0
|
| 149 |
-
|
| 150 |
-
if convert_processed_dialects():
|
| 151 |
-
success_count += 1
|
| 152 |
-
|
| 153 |
-
if convert_digiwords_grouped():
|
| 154 |
-
success_count += 1
|
| 155 |
-
|
| 156 |
-
print(f"\n✨ Conversion complete: {success_count}/2 files successfully converted")
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
if __name__ == "__main__":
|
| 160 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/file_watcher.py
DELETED
|
@@ -1,129 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
File Watcher
|
| 4 |
-
Monitors sheets_output/ directory and triggers CSV-to-JSON conversion on changes
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
import time
|
| 8 |
-
import json
|
| 9 |
-
import subprocess
|
| 10 |
-
from pathlib import Path
|
| 11 |
-
from watchdog.observers import Observer
|
| 12 |
-
from watchdog.events import FileSystemEventHandler
|
| 13 |
-
|
| 14 |
-
# Paths
|
| 15 |
-
BASE_DIR = Path(__file__).parent.parent
|
| 16 |
-
CONFIG_FILE = BASE_DIR / "config.json"
|
| 17 |
-
CONVERTER_SCRIPT = BASE_DIR / "scripts" / "csv_to_json.py"
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
class CSVChangeHandler(FileSystemEventHandler):
|
| 21 |
-
"""Handles CSV file changes"""
|
| 22 |
-
|
| 23 |
-
def __init__(self, debounce_seconds=2):
|
| 24 |
-
self.debounce_seconds = debounce_seconds
|
| 25 |
-
self.last_modified = {}
|
| 26 |
-
|
| 27 |
-
def on_modified(self, event):
|
| 28 |
-
"""Called when a file is modified"""
|
| 29 |
-
if event.is_directory:
|
| 30 |
-
return
|
| 31 |
-
|
| 32 |
-
# Only process CSV files
|
| 33 |
-
if not event.src_path.endswith('.csv'):
|
| 34 |
-
return
|
| 35 |
-
|
| 36 |
-
# Debounce: ignore rapid consecutive changes
|
| 37 |
-
now = time.time()
|
| 38 |
-
if event.src_path in self.last_modified:
|
| 39 |
-
if now - self.last_modified[event.src_path] < self.debounce_seconds:
|
| 40 |
-
return
|
| 41 |
-
|
| 42 |
-
self.last_modified[event.src_path] = now
|
| 43 |
-
|
| 44 |
-
print(f"\n📝 Detected change: {Path(event.src_path).name}")
|
| 45 |
-
self.trigger_conversion()
|
| 46 |
-
|
| 47 |
-
def on_created(self, event):
|
| 48 |
-
"""Called when a file is created"""
|
| 49 |
-
if not event.is_directory and event.src_path.endswith('.csv'):
|
| 50 |
-
print(f"\n📄 New file: {Path(event.src_path).name}")
|
| 51 |
-
self.trigger_conversion()
|
| 52 |
-
|
| 53 |
-
def trigger_conversion(self):
|
| 54 |
-
"""Run the CSV-to-JSON converter"""
|
| 55 |
-
print("🔄 Running CSV-to-JSON conversion...")
|
| 56 |
-
|
| 57 |
-
try:
|
| 58 |
-
result = subprocess.run(
|
| 59 |
-
['python3', str(CONVERTER_SCRIPT)],
|
| 60 |
-
capture_output=True,
|
| 61 |
-
text=True,
|
| 62 |
-
cwd=str(BASE_DIR)
|
| 63 |
-
)
|
| 64 |
-
|
| 65 |
-
if result.returncode == 0:
|
| 66 |
-
print(result.stdout)
|
| 67 |
-
else:
|
| 68 |
-
print(f"❌ Conversion failed:")
|
| 69 |
-
print(result.stderr)
|
| 70 |
-
|
| 71 |
-
except Exception as e:
|
| 72 |
-
print(f"❌ Error running converter: {e}")
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
def load_config():
|
| 76 |
-
"""Load configuration"""
|
| 77 |
-
if not CONFIG_FILE.exists():
|
| 78 |
-
return {
|
| 79 |
-
'file_watcher': {
|
| 80 |
-
'enabled': True,
|
| 81 |
-
'watch_directory': 'sheets_output',
|
| 82 |
-
'debounce_seconds': 2
|
| 83 |
-
}
|
| 84 |
-
}
|
| 85 |
-
|
| 86 |
-
with open(CONFIG_FILE, 'r') as f:
|
| 87 |
-
return json.load(f)
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
def main():
|
| 91 |
-
"""Start file watcher"""
|
| 92 |
-
config = load_config()
|
| 93 |
-
watcher_config = config.get('file_watcher', {})
|
| 94 |
-
|
| 95 |
-
if not watcher_config.get('enabled', True):
|
| 96 |
-
print("⚠️ File watcher is disabled in config.json")
|
| 97 |
-
return
|
| 98 |
-
|
| 99 |
-
watch_dir = BASE_DIR / watcher_config.get('watch_directory', 'sheets_output')
|
| 100 |
-
debounce = watcher_config.get('debounce_seconds', 2)
|
| 101 |
-
|
| 102 |
-
if not watch_dir.exists():
|
| 103 |
-
print(f"❌ Watch directory not found: {watch_dir}")
|
| 104 |
-
print(f"Creating directory: {watch_dir}")
|
| 105 |
-
watch_dir.mkdir(parents=True, exist_ok=True)
|
| 106 |
-
|
| 107 |
-
print("👀 File Watcher Started")
|
| 108 |
-
print(f"📂 Watching: {watch_dir}")
|
| 109 |
-
print(f"⏱️ Debounce: {debounce} seconds")
|
| 110 |
-
print("\nWaiting for CSV file changes... (Press Ctrl+C to stop)\n")
|
| 111 |
-
|
| 112 |
-
event_handler = CSVChangeHandler(debounce_seconds=debounce)
|
| 113 |
-
observer = Observer()
|
| 114 |
-
observer.schedule(event_handler, str(watch_dir), recursive=False)
|
| 115 |
-
observer.start()
|
| 116 |
-
|
| 117 |
-
try:
|
| 118 |
-
while True:
|
| 119 |
-
time.sleep(1)
|
| 120 |
-
except KeyboardInterrupt:
|
| 121 |
-
print("\n\n👋 Stopping file watcher...")
|
| 122 |
-
observer.stop()
|
| 123 |
-
|
| 124 |
-
observer.join()
|
| 125 |
-
print("✅ File watcher stopped")
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
if __name__ == "__main__":
|
| 129 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/sheets_sync.py
DELETED
|
@@ -1,190 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python3
|
| 2 |
-
"""
|
| 3 |
-
Google Sheets Sync
|
| 4 |
-
Downloads data from Google Sheets and saves as CSV files
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
import json
|
| 8 |
-
import os
|
| 9 |
-
import sys
|
| 10 |
-
from pathlib import Path
|
| 11 |
-
from google.auth.transport.requests import Request
|
| 12 |
-
from google.oauth2.credentials import Credentials
|
| 13 |
-
from google.oauth2 import service_account
|
| 14 |
-
from google_auth_oauthlib.flow import InstalledAppFlow
|
| 15 |
-
from googleapiclient.discovery import build
|
| 16 |
-
from googleapiclient.errors import HttpError
|
| 17 |
-
|
| 18 |
-
# If modifying these scopes, delete the file token.json.
|
| 19 |
-
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']
|
| 20 |
-
|
| 21 |
-
# Paths
|
| 22 |
-
BASE_DIR = Path(__file__).parent.parent
|
| 23 |
-
CONFIG_FILE = BASE_DIR / "config.json"
|
| 24 |
-
SHEETS_OUTPUT_DIR = BASE_DIR / "sheets_output"
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
def load_config():
|
| 28 |
-
"""Load configuration from config.json"""
|
| 29 |
-
if not CONFIG_FILE.exists():
|
| 30 |
-
print(f"❌ Config file not found: {CONFIG_FILE}")
|
| 31 |
-
sys.exit(1)
|
| 32 |
-
|
| 33 |
-
with open(CONFIG_FILE, 'r') as f:
|
| 34 |
-
return json.load(f)
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
def get_credentials(config):
|
| 38 |
-
"""Get Google Sheets API credentials"""
|
| 39 |
-
creds = None
|
| 40 |
-
credentials_file = BASE_DIR / config['google_sheets']['credentials_file']
|
| 41 |
-
token_file = BASE_DIR / 'token.json'
|
| 42 |
-
|
| 43 |
-
# Check if credentials file exists
|
| 44 |
-
if not credentials_file.exists():
|
| 45 |
-
print(f"❌ Credentials file not found: {credentials_file}")
|
| 46 |
-
print("\n📝 To set up Google Sheets API:")
|
| 47 |
-
print("1. Go to https://console.cloud.google.com/")
|
| 48 |
-
print("2. Create a new project or select existing")
|
| 49 |
-
print("3. Enable Google Sheets API")
|
| 50 |
-
print("4. Create credentials (OAuth 2.0 or Service Account)")
|
| 51 |
-
print(f"5. Download credentials.json to {BASE_DIR}")
|
| 52 |
-
sys.exit(1)
|
| 53 |
-
|
| 54 |
-
# Try service account first (recommended for automation)
|
| 55 |
-
try:
|
| 56 |
-
creds = service_account.Credentials.from_service_account_file(
|
| 57 |
-
str(credentials_file), scopes=SCOPES)
|
| 58 |
-
print("✅ Using service account credentials")
|
| 59 |
-
return creds
|
| 60 |
-
except Exception:
|
| 61 |
-
pass
|
| 62 |
-
|
| 63 |
-
# Fall back to OAuth flow
|
| 64 |
-
if token_file.exists():
|
| 65 |
-
creds = Credentials.from_authorized_user_file(str(token_file), SCOPES)
|
| 66 |
-
|
| 67 |
-
# If there are no (valid) credentials available, let the user log in.
|
| 68 |
-
if not creds or not creds.valid:
|
| 69 |
-
if creds and creds.expired and creds.refresh_token:
|
| 70 |
-
creds.refresh(Request())
|
| 71 |
-
else:
|
| 72 |
-
flow = InstalledAppFlow.from_client_secrets_file(
|
| 73 |
-
str(credentials_file), SCOPES)
|
| 74 |
-
creds = flow.run_local_server(port=0)
|
| 75 |
-
|
| 76 |
-
# Save the credentials for the next run
|
| 77 |
-
with open(token_file, 'w') as token:
|
| 78 |
-
token.write(creds.to_json())
|
| 79 |
-
|
| 80 |
-
print("✅ Using OAuth credentials")
|
| 81 |
-
return creds
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
def download_sheet_as_csv(service, spreadsheet_id, sheet_name, output_filename):
|
| 85 |
-
"""Download a specific sheet as CSV"""
|
| 86 |
-
try:
|
| 87 |
-
# Get the sheet data
|
| 88 |
-
result = service.spreadsheets().values().get(
|
| 89 |
-
spreadsheetId=spreadsheet_id,
|
| 90 |
-
range=f"{sheet_name}!A:Z" # Adjust range as needed
|
| 91 |
-
).execute()
|
| 92 |
-
|
| 93 |
-
values = result.get('values', [])
|
| 94 |
-
|
| 95 |
-
if not values:
|
| 96 |
-
print(f"⚠️ No data found in sheet: {sheet_name}")
|
| 97 |
-
return False
|
| 98 |
-
|
| 99 |
-
# Write to CSV
|
| 100 |
-
output_file = SHEETS_OUTPUT_DIR / output_filename
|
| 101 |
-
SHEETS_OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
| 102 |
-
|
| 103 |
-
import csv
|
| 104 |
-
with open(output_file, 'w', newline='', encoding='utf-8') as f:
|
| 105 |
-
writer = csv.writer(f)
|
| 106 |
-
writer.writerows(values)
|
| 107 |
-
|
| 108 |
-
print(f"✅ Downloaded {sheet_name} → {output_filename}")
|
| 109 |
-
print(f" {len(values)} rows")
|
| 110 |
-
return True
|
| 111 |
-
|
| 112 |
-
except HttpError as error:
|
| 113 |
-
print(f"❌ Error downloading {sheet_name}: {error}")
|
| 114 |
-
return False
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
def sync_all_sheets():
|
| 118 |
-
"""Sync all configured sheets from Google Sheets"""
|
| 119 |
-
config = load_config()
|
| 120 |
-
|
| 121 |
-
if not config['google_sheets']['enabled']:
|
| 122 |
-
print("⚠️ Google Sheets sync is disabled in config.json")
|
| 123 |
-
return False
|
| 124 |
-
|
| 125 |
-
# Check if using new multi-spreadsheet config
|
| 126 |
-
spreadsheets = config['google_sheets'].get('spreadsheets', [])
|
| 127 |
-
|
| 128 |
-
if not spreadsheets:
|
| 129 |
-
# Fallback to old single spreadsheet config
|
| 130 |
-
spreadsheet_id = config['google_sheets'].get('spreadsheet_id', 'YOUR_SHEET_ID_HERE')
|
| 131 |
-
if spreadsheet_id == "YOUR_SHEET_ID_HERE":
|
| 132 |
-
print("❌ Please update config.json with your spreadsheet IDs")
|
| 133 |
-
print("\n📝 To find your spreadsheet ID:")
|
| 134 |
-
print("Open your Google Sheet and copy the ID from the URL:")
|
| 135 |
-
print("https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit")
|
| 136 |
-
return False
|
| 137 |
-
|
| 138 |
-
# Convert old format to new format for processing
|
| 139 |
-
spreadsheets = [{
|
| 140 |
-
'name': 'Main Spreadsheet',
|
| 141 |
-
'spreadsheet_id': spreadsheet_id,
|
| 142 |
-
'sheets': config['google_sheets'].get('sheets', {})
|
| 143 |
-
}]
|
| 144 |
-
|
| 145 |
-
print("🔄 Starting Google Sheets sync...")
|
| 146 |
-
print(f"📊 Syncing from {len(spreadsheets)} spreadsheet(s)\n")
|
| 147 |
-
|
| 148 |
-
try:
|
| 149 |
-
creds = get_credentials(config)
|
| 150 |
-
service = build('sheets', 'v4', credentials=creds)
|
| 151 |
-
|
| 152 |
-
total_success = 0
|
| 153 |
-
total_sheets = 0
|
| 154 |
-
|
| 155 |
-
# Process each spreadsheet
|
| 156 |
-
for spreadsheet in spreadsheets:
|
| 157 |
-
spreadsheet_id = spreadsheet.get('spreadsheet_id', '')
|
| 158 |
-
spreadsheet_name = spreadsheet.get('name', 'Unnamed')
|
| 159 |
-
sheets_config = spreadsheet.get('sheets', {})
|
| 160 |
-
|
| 161 |
-
if not spreadsheet_id or spreadsheet_id.startswith('YOUR_'):
|
| 162 |
-
print(f"⚠️ Skipping '{spreadsheet_name}': ID not configured")
|
| 163 |
-
continue
|
| 164 |
-
|
| 165 |
-
print(f"📋 {spreadsheet_name}")
|
| 166 |
-
print(f" ID: {spreadsheet_id[:20]}...")
|
| 167 |
-
|
| 168 |
-
# Download each sheet from this spreadsheet
|
| 169 |
-
for csv_name, sheet_name in sheets_config.items():
|
| 170 |
-
total_sheets += 1
|
| 171 |
-
if download_sheet_as_csv(service, spreadsheet_id, sheet_name, f"{csv_name}.csv"):
|
| 172 |
-
total_success += 1
|
| 173 |
-
|
| 174 |
-
print() # Blank line between spreadsheets
|
| 175 |
-
|
| 176 |
-
print(f"✨ Sync complete: {total_success}/{total_sheets} sheets downloaded")
|
| 177 |
-
return total_success > 0
|
| 178 |
-
|
| 179 |
-
except Exception as e:
|
| 180 |
-
print(f"❌ Error during sync: {e}")
|
| 181 |
-
return False
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
def main():
|
| 185 |
-
"""Main entry point"""
|
| 186 |
-
sync_all_sheets()
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
if __name__ == '__main__':
|
| 190 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sheets_output/digiwords_grouped.csv
DELETED
|
@@ -1,179 +0,0 @@
|
|
| 1 |
-
State,District,Telugu_Word,Meaning,Source
|
| 2 |
-
Andhra Pradesh,Anantapur,దిండు,Pillows,Crowd
|
| 3 |
-
Andhra Pradesh,Annamayya,ఆ తుప్పాస్,Nonsense/Useless,Crowd
|
| 4 |
-
Andhra Pradesh,Chittoor,ముడ్దులు,అంగడి,Crowd
|
| 5 |
-
Andhra Pradesh,Chittoor,సెమిరేసినావ,Prepared,Crowd
|
| 6 |
-
Andhra Pradesh,Chittoor,వంకాయ పులగూర్,కూర,Crowd
|
| 7 |
-
Andhra Pradesh,Chittoor,ఈరి మోది,పచ్చడి,Crowd
|
| 8 |
-
Andhra Pradesh,Chittoor,అబ్బ,Grandfather,Crowd
|
| 9 |
-
Andhra Pradesh,Chittoor,జెడి,Hair knot,Crowd
|
| 10 |
-
Andhra Pradesh,East Godavari,దుకాణం,కొట్టు,Crowd
|
| 11 |
-
Andhra Pradesh,East Godavari,పైరు,బంగాళదుంప,Crowd
|
| 12 |
-
Andhra Pradesh,East Godavari,బువ్వ,Food,Crowd
|
| 13 |
-
Andhra Pradesh,East Godavari,గుడి,దేవాలయం,Crowd
|
| 14 |
-
Andhra Pradesh,East Godavari,సామానం,ఆలస్యం చేయడం,Crowd
|
| 15 |
-
Andhra Pradesh,East Godavari,బేగ రా,తొందరగా రా,Crowd
|
| 16 |
-
Andhra Pradesh,Eluru,శనగపప్పు,వేరుశనగ,Crowd
|
| 17 |
-
Andhra Pradesh,Eluru,చాలా బాగుంది,Very good,Crowd
|
| 18 |
-
Andhra Pradesh,Kadapa,కంత,రంధ్రం (Hole),Crowd
|
| 19 |
-
Andhra Pradesh,Kadapa,బాగా ఎక్కువగా,Exceedingly,Crowd
|
| 20 |
-
Andhra Pradesh,Kadapa,చాపు మాటలు,పెద్ద మాటలు,Crowd
|
| 21 |
-
Andhra Pradesh,Kadapa,బొరుగులు,మరమరాలు,Crowd
|
| 22 |
-
Andhra Pradesh,Kadapa,రామాడం,మెత్తగా చేయడం,Crowd
|
| 23 |
-
Andhra Pradesh,Kadapa,ఎనుము,బర్రె,Crowd
|
| 24 |
-
Andhra Pradesh,Kadapa,ముక్కొల్,3 వాడిముళ్ళు,Crowd
|
| 25 |
-
Andhra Pradesh,Kurnool,బుడ్డల నూనె,పల్లి oil (Peanut oil),Crowd
|
| 26 |
-
Andhra Pradesh,Nandyal,తంగాది,కొట్టుదు ఇచ్చింది మధ్యన,Crowd
|
| 27 |
-
Andhra Pradesh,Nandyal,గుడి,దేవాలయము,Crowd
|
| 28 |
-
Andhra Pradesh,Nandyal,హితాలు,బువ్వ తిన్నారా,Crowd
|
| 29 |
-
Andhra Pradesh,Nandyal,తద్దినం,పితృ దేవతల కార్యం,Crowd
|
| 30 |
-
Andhra Pradesh,Nandyal,తువాయి,ఆవు దూడ (Calf),Crowd
|
| 31 |
-
Andhra Pradesh,Nandyal,పురుకోస,Jute thread twisted,Crowd
|
| 32 |
-
Andhra Pradesh,Ongole,బయట వెళ్ళాడు,బయటకు వెళ్ళాడు,Crowd
|
| 33 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,ఎర్రగడ్డ,Onion,Crowd
|
| 34 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,తెల్ల గడ్డ,వెల్లుల్లి,Crowd
|
| 35 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,ఉల్లగడ్డ,Potato,Crowd
|
| 36 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,ఖిన్నారా,అద్దెకు రా,Crowd
|
| 37 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,ముడక,నాగలి,Crowd
|
| 38 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,కొక,చీర,Crowd
|
| 39 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,రైన,జాకెట్,Crowd
|
| 40 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,కడ్డీలు,అగరబత్తిలు,Crowd
|
| 41 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,పెద్ద నాన్న,నాన్న అన్న,Crowd
|
| 42 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,చిన్న నాన్న,నాన్న తమ్ముడు,Crowd
|
| 43 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,పెద్దమ్మ,నాన్న అన్న భార్య,Crowd
|
| 44 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,చిన్నమ్మ,నాన్న తమ్ముడు భార్య,Crowd
|
| 45 |
-
Andhra Pradesh,P.R. నియోజకవర్గం,పొద్దు పొయ్యింది,సాయంత్రం సమయం,Crowd
|
| 46 |
-
Andhra Pradesh,Rayalaseema,లోపల,Inside,Crowd
|
| 47 |
-
Andhra Pradesh,Rayalaseema,బొగాలు,Keys,Crowd
|
| 48 |
-
Andhra Pradesh,Srikakulam,డొంక,తలుపు (Door),Crowd
|
| 49 |
-
Andhra Pradesh,Srikakulam,కుంక,Pillodu,Crowd
|
| 50 |
-
Andhra Pradesh,Srikakulam,ఖాగి,వేగంగా,Crowd
|
| 51 |
-
Andhra Pradesh,Srikakulam,బాతె,చావు,Crowd
|
| 52 |
-
Andhra Pradesh,Srikakulam,అమ్మ,Mother,Crowd
|
| 53 |
-
Andhra Pradesh,Srikakulam,తెల్లారితే,వేకువన,Crowd
|
| 54 |
-
Andhra Pradesh,Tirupati,ఊరాల్,Nonsense,Crowd
|
| 55 |
-
Andhra Pradesh,Vizianagaram,ఉకుజురు,Egg Burji,Crowd
|
| 56 |
-
Andhra Pradesh,Vizianagaram,వర్ర,కారం,Crowd
|
| 57 |
-
Andhra Pradesh,Vizianagaram,బేపి,కుక్క,Crowd
|
| 58 |
-
Andhra Pradesh,Vizianagaram,పైనా,పైన,Crowd
|
| 59 |
-
Andhra Pradesh,Vizianagaram,దొడ్డ,పెద్ద అమ్మ,Crowd
|
| 60 |
-
Andhra Pradesh,Vizianagaram,జిజ బేగరా,తొందరగా రా,Crowd
|
| 61 |
-
Andhra Pradesh,Vizianagaram,బంగాళదుంప,ఆలుగడ్డ,Crowd
|
| 62 |
-
Andhra Pradesh,Vizianagaram,ఉల్లిపాయ,ఎర్రగ���్డ,Crowd
|
| 63 |
-
Andhra Pradesh,Vizianagaram,అప్ప,అక్క,Crowd
|
| 64 |
-
Andhra Pradesh,Vizianagaram,గుంత,రంధ్రం,Crowd
|
| 65 |
-
Andhra Pradesh,Vizianagaram,గెడ/బర్రె,Buffalo,Crowd
|
| 66 |
-
Andhra Pradesh,Vizianagaram,గడ్డి,చిన్న సెలయేరు,Crowd
|
| 67 |
-
Andhra Pradesh,West Godavari,రాతు తడి,Irrigation term,Crowd
|
| 68 |
-
Telangana,Adilabad,చోలోట్,మంచి (Good),Crowd
|
| 69 |
-
Telangana,Adilabad,వంచెడ్ చిబడ్,అంటు ముట్టుకోడం,Crowd
|
| 70 |
-
Telangana,Adilabad,వడోగు,దూడ (Calf),Crowd
|
| 71 |
-
Telangana,Adilabad,ముచిలి పడన్,ఎర్ర తుమ్మెద,Crowd
|
| 72 |
-
Telangana,Adilabad,సర్కార్,నాశనం,Crowd
|
| 73 |
-
Telangana,Adilabad,వజీర్,ముసలి,Crowd
|
| 74 |
-
Telangana,Adilabad,ఖైని,వదిన,Crowd
|
| 75 |
-
Telangana,Adilabad,సూన్,కోడలు,Crowd
|
| 76 |
-
Telangana,Adilabad,Poral batal,Temple term (Keslapur),Crowd
|
| 77 |
-
Telangana,Gadwal,ఓల్లి,No,Crowd
|
| 78 |
-
Telangana,Gadwal,కూడు తింటవా,తిన్నారా,Crowd
|
| 79 |
-
Telangana,Gadwal,తువ్వ,ఎర్ర పొలం,Crowd
|
| 80 |
-
Telangana,Gadwal,పురకోస,జూట్ దార,Crowd
|
| 81 |
-
Telangana,Gadwal,జుముజలమ్మ,దేవత,Crowd
|
| 82 |
-
Telangana,Gadwal,తలుగు ఎల్లమ్మ,దేవత,Crowd
|
| 83 |
-
Telangana,Gadwal,తెల్వది,Don't know,Crowd
|
| 84 |
-
Telangana,Gadwal,మడసంగ,నెమ్మదిగా/జాగ్రత్తగా,Crowd
|
| 85 |
-
Telangana,Gadwal,రప్పున,జల్ది,Crowd
|
| 86 |
-
Telangana,Gadwal,మడసంగ,Careful,Crowd
|
| 87 |
-
Telangana,Hyderabad,కిటికీ,Window,Crowd
|
| 88 |
-
Telangana,Hyderabad,అంగీ,Shirt,Crowd
|
| 89 |
-
Telangana,Hyderabad,కుక్క,Dog,Crowd
|
| 90 |
-
Telangana,Hyderabad,కుర్చీ,Chair,Crowd
|
| 91 |
-
Telangana,Hyderabad,Amma buvva pettava,Mother feed me,Crowd
|
| 92 |
-
Telangana,Hyderabad,Chaderghat,Location,Crowd
|
| 93 |
-
Telangana,Hyderabad,తొవ్వ దారి,Way/Path,Crowd
|
| 94 |
-
Telangana,Hyderabad,పాతాళగరిసె,Tool to remove bucket,Crowd
|
| 95 |
-
Telangana,Hyderabad,అంబటాలు,Afternoon time,Crowd
|
| 96 |
-
Telangana,Hyderabad,ఇన్సురాయి,Stone tool,Crowd
|
| 97 |
-
Telangana,Hyderabad,బుక్కెట్,Tool for well,Crowd
|
| 98 |
-
Telangana,Jangaon,ఏమైంది,What happened,Crowd
|
| 99 |
-
Telangana,Karimnagar,బూరెలు,భక్ష్యాలు,Crowd
|
| 100 |
-
Telangana,Karimnagar,అచ్చినం,వచ్చాము,Crowd
|
| 101 |
-
Telangana,Karimnagar,పాయినం,వెళ్ళాము,Crowd
|
| 102 |
-
Telangana,Karimnagar,సవాలు,Question/Challenge,Crowd
|
| 103 |
-
Telangana,Karimnagar,గటక,Food item,Crowd
|
| 104 |
-
Telangana,Karimnagar,వస్తున్నావ,వస్తున్నావు,Crowd
|
| 105 |
-
Telangana,Karimnagar,ఊశము,బద్ధకం/అలసత్వం,Crowd
|
| 106 |
-
Telangana,Karimnagar,వందంగా ఉంది,బాగా,Crowd
|
| 107 |
-
Telangana,Karimnagar,రువిడ్లు,Shelf,Crowd
|
| 108 |
-
Telangana,Karimnagar,కార్యపాలు,వస్తున్నం/పోతున్నాం,Crowd
|
| 109 |
-
Telangana,Karimnagar,బావి,నూతి,Crowd
|
| 110 |
-
Telangana,Karimnagar,గంప,గుల్ల,Crowd
|
| 111 |
-
Telangana,Karimnagar,బంతి,Ball,Crowd
|
| 112 |
-
Telangana,Mahabubnagar,వీధి,Street,Crowd
|
| 113 |
-
Telangana,Mahabubnagar,జల్ది,తొందరగా,Crowd
|
| 114 |
-
Telangana,Mahabubnagar,జింగిడి,బర్రెల గుంపు,Crowd
|
| 115 |
-
Telangana,Mahabubnagar,బాగమ్,Exhibition,Crowd
|
| 116 |
-
Telangana,Mahabubnagar,చలక,Field,Crowd
|
| 117 |
-
Telangana,Mahabubnagar,ఈల పేట,కత్తి పేట,Crowd
|
| 118 |
-
Telangana,Mahabubabad,బొచ్చెడు,చాలా (A lot),Crowd
|
| 119 |
-
Telangana,Mahabubabad,ఏ మయింది అన్నా,What happened,Crowd
|
| 120 |
-
Telangana,Medak,కీసా,జేబు,Crowd
|
| 121 |
-
Telangana,Medak,పైను,ఆరు (Six),Crowd
|
| 122 |
-
Telangana,Nagar Kurnool,అంబటాలు,Morning meal time,Crowd
|
| 123 |
-
Telangana,Nagar Kurnool,మంకర,Winter cold,Crowd
|
| 124 |
-
Telangana,Nagar Kurnool,లాడు,తల్లి కూతురు,Crowd
|
| 125 |
-
Telangana,Nagar Kurnool,గెనిమ,పొలం గట్టు,Crowd
|
| 126 |
-
Telangana,Nagar Kurnool,కోంత లోలు,Old name for Nagar Kurnool,Crowd
|
| 127 |
-
Telangana,Nalgonda,Dupa aithundhi,దాహం వేస్తుంది,Crowd
|
| 128 |
-
Telangana,Nalgonda,సేరు,1kg measuring device,Crowd
|
| 129 |
-
Telangana,Nalgonda,Kurdedu Biyam,Amount of rice,Crowd
|
| 130 |
-
Telangana,Nalgonda,Anglam dundu,అగ్గి పెట్టె,Crowd
|
| 131 |
-
Telangana,Nalgonda,సది,Take the box,Crowd
|
| 132 |
-
Telangana,Nalgonda,తట్ట,పళ్ళెం,Crowd
|
| 133 |
-
Telangana,Nalgonda,కోవెల,గుడి,Crowd
|
| 134 |
-
Telangana,Nalgonda,ఊసలు,Weaving technique,Crowd
|
| 135 |
-
Telangana,Nalgonda,బువ్వ,Cooked rice,Crowd
|
| 136 |
-
Telangana,Nalgonda,తవాచీ,Shelf with doors,Crowd
|
| 137 |
-
Telangana,Nalgonda,తపుకు,Plate on vessel,Crowd
|
| 138 |
-
Telangana,Nalgonda,లడ్లు,అరిసెలు,Crowd
|
| 139 |
-
Telangana,Nalgonda,దారి,బాట,Crowd
|
| 140 |
-
Telangana,Narayanpet,బుబ్బి,అమ్మ,Crowd
|
| 141 |
-
Telangana,Narayanpet,పడం,మట్టి,Crowd
|
| 142 |
-
Telangana,Narayanpet,చెముక్కలు,మోకాళ్ళు,Crowd
|
| 143 |
-
Telangana,Narayanpet,మొర,మంచం,Crowd
|
| 144 |
-
Telangana,Narayanpet,అబుత,జుట్టు,Crowd
|
| 145 |
-
Telangana,Narayanpet,జేజి,Fat,Crowd
|
| 146 |
-
Telangana,Narayanpet,అంబలి,జావ,Crowd
|
| 147 |
-
Telangana,Nizamabad,పంపేవుడు,పంపించడం,Crowd
|
| 148 |
-
Telangana,Nizamabad,Pillodu,Bindu,Crowd
|
| 149 |
-
Telangana,Nizamabad,వచ్చిండు,అచ్చిండు,Crowd
|
| 150 |
-
Telangana,Peddapally,గుమ్ము,Storage,Crowd
|
| 151 |
-
Telangana,Peddapally,గట్టు,దారి,Crowd
|
| 152 |
-
Telangana,Rangareddy,వీరునో,తెలుగు,Crowd
|
| 153 |
-
Telangana,Rangareddy,తొక్కుడు,మంచం,Crowd
|
| 154 |
-
Telangana,Rangareddy,మూర,ముంగిలి,Crowd
|
| 155 |
-
Telangana,Rangareddy,కారం,పచ్చడి,Crowd
|
| 156 |
-
Telangana,Rangareddy,ఈ గడ,కడ,Crowd
|
| 157 |
-
Telangana,Siddipet,అంగీ,Shirt,Crowd
|
| 158 |
-
Telangana,Siddipet,పొయ్యిర్రు,వెళ్ళారు,Crowd
|
| 159 |
-
Telangana,Siddipet,మెగులుతుంది,వర్షం వచ్చి ఆగిన,Crowd
|
| 160 |
-
Telangana,Siddipet,అలుకురు,Pre cultivation,Crowd
|
| 161 |
-
Telangana,Siddipet,పయిలం,జాగ్రత్త,Crowd
|
| 162 |
-
Telangana,Siddipet,తప్పెలు,Rice plate,Crowd
|
| 163 |
-
Telangana,Siddipet,పందిట్లు,పందిరి,Crowd
|
| 164 |
-
Telangana,Siddipet,రాకొచ్చింది,రాదు,Crowd
|
| 165 |
-
Telangana,Siddipet,పోకొచ్చింది,పోదు,Crowd
|
| 166 |
-
Telangana,Siddipet,కుకో,కూర్చో,Crowd
|
| 167 |
-
Telangana,Siddipet,ఏడారు,Afternoon time,Crowd
|
| 168 |
-
Telangana,Wanaparthy,చెప్పలకాయలు,గొంకరకాయలు,Crowd
|
| 169 |
-
Telangana,Wanaparthy,మలంచా,చెంబు,Crowd
|
| 170 |
-
Telangana,Wanaparthy,సొరకాయ,ఆనకాయ,Crowd
|
| 171 |
-
Telangana,Wanaparthy,పాశాల,Clothes,Crowd
|
| 172 |
-
Telangana,Wanaparthy,మట్టుగుండు,Keep calm,Crowd
|
| 173 |
-
Telangana,Wanaparthy,అంబరుంది,Excellent,Crowd
|
| 174 |
-
Telangana,Warangal,చేను,Crop/చలక,Crowd
|
| 175 |
-
Telangana,Warangal,పొయ్యం రారా,ఇన్నానిల్లు,Crowd
|
| 176 |
-
Telangana,Warangal,అసుంట,అటు వైపు,Crowd
|
| 177 |
-
Telangana,Warangal,ఇసుంట,ఇటు వైపు,Crowd
|
| 178 |
-
Telangana,Warangal,చద్దెర,Bed sheet,Crowd
|
| 179 |
-
Andhra Pradesh,Guntur,నగబు ,An ancient word for snake,Crowd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sheets_output/processed_dialects.csv
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|