bangladeshi-parcel-tracker


Namebangladeshi-parcel-tracker JSON
Version 1.3.0 PyPI version JSON
download
home_pagehttps://github.com/mdminhazulhaque/bangladeshi-parcel-tracker
SummaryA Python package for tracking parcels from Bangladeshi courier services
upload_time2025-08-05 18:16:10
maintainerNone
docs_urlNone
authorMinhaz
requires_python>=3.8
licenseNone
keywords bangladesh parcel tracking courier redx steadfast pathao rokomari
VCS
bugtrack_url
requirements requests beautifulsoup4
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Bangladeshi Parcel Tracker

A Python package for tracking parcels from various Bangladeshi courier services including Redx, Steadfast, Pathao, Rokomari, and Sundarban.

[![PyPI version](https://badge.fury.io/py/bangladeshi-parcel-tracker.svg)](https://badge.fury.io/py/bangladeshi-parcel-tracker)
[![Python versions](https://img.shields.io/pypi/pyversions/bangladeshi-parcel-tracker.svg)](https://pypi.org/project/bangladeshi-parcel-tracker/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Features

- 🚚 Support for major Bangladeshi courier services
- 📦 Unified tracking interface across all providers
- ⏱️ Detailed timeline of parcel journey
- 🎯 Easy-to-use delivery status checking
- 🔄 Real-time tracking with live API integration
- 📊 Comprehensive tracking event data
- 🐍 Python 3.8+ support
- 🛠️ Command-line interface included

## Supported Courier Services

- **Redx** - Leading courier service in Bangladesh
- **Steadfast** - Reliable delivery solutions
- **Pathao** - Fast and efficient courier service  
- **Rokomari** - Book and product delivery specialist
- **Sundarban** - Comprehensive logistics and courier solutions

## Installation

The package is available on PyPI. Install it using pip:

```bash
pip install bangladeshi-parcel-tracker
```

For development installation:

```bash
git clone https://github.com/yourusername/bangladeshi-parcel-tracker.git
cd bangladeshi-parcel-tracker
pip install -e .
```

## Quick Start

### Basic Usage

```python
from bangladeshi_parcel_tracker import RedxTracker, SteadfastTracker

# Track a Redx parcel
tracker = RedxTracker("RDX123456789")
events = tracker.track()

# Check if delivered
if tracker.is_delivered():
    print("Package has been delivered!")
else:
    print(f"Current status: {tracker.get_current_status().value}")

# Print timeline
for event in events:
    print(event)
```

### Using Different Providers

```python
from bangladeshi_parcel_tracker import (
    RedxTracker, SteadfastTracker, 
    PathaoTracker, RokomariTracker, SundarbanTracker
)

tracking_number = "YOUR_TRACKING_NUMBER"

# For Pathao and Rokomari, you may need phone number
phone_number = "01700000000"  # Required for some providers

# Choose your provider
trackers = {
    'redx': RedxTracker(tracking_number),
    'steadfast': SteadfastTracker(tracking_number),
    'pathao': PathaoTracker(tracking_number, phone=phone_number),
    'rokomari': RokomariTracker(tracking_number, phone=phone_number),
    'sundarban': SundarbanTracker(tracking_number)
}

for name, tracker in trackers.items():
    try:
        events = tracker.track()
        print(f"\\n{tracker.provider_name} Tracking:")
        print(f"Status: {tracker.get_current_status().value}")
        print(f"Delivered: {tracker.is_delivered()}")
        print(f"Last Update: {tracker.get_last_update()}")
        
        for event in events:
            print(f"  {event}")
            
    except Exception as e:
        print(f"Error tracking with {name}: {e}")
```

## Command Line Interface

The package includes a powerful CLI for tracking parcels from the terminal:

### Installation & Usage

After installing the package from pip, you can use the `bangladeshi-parcel-tracker` command:

```bash
# Basic usage
bangladeshi-parcel-tracker <provider> <tracking_number>

# Show help
bangladeshi-parcel-tracker --help

# Show version
bangladeshi-parcel-tracker --version
```

### CLI Examples

```bash
# Track with Redx (detailed timeline)
bangladeshi-parcel-tracker redx RDX123456789

# Track with Steadfast (status only)
bangladeshi-parcel-tracker steadfast SF987654321 --status-only

# Track with Pathao (JSON output) - requires phone number
bangladeshi-parcel-tracker pathao PA456789123 --phone 01700000000 --json

# Track with Rokomari (detailed timeline) - requires phone number
bangladeshi-parcel-tracker rokomari RK789123456 --phone 01700000000 --detailed

# Track with Sundarban (detailed timeline)
bangladeshi-parcel-tracker sundarban 70003000778899 --detailed
```

### CLI Options

- `--status-only`, `-s`: Show only the current delivery status
- `--detailed`, `-d`: Show detailed timeline with all events (default)
- `--json`, `-j`: Output results in JSON format
- `--phone`, `-p`: Phone number (required for Pathao and Rokomari)
- `--version`, `-v`: Show version information
- `--help`, `-h`: Show help message

### CLI Output Examples

**Status Only Output:**
```
📊 Tracking Status for RDX123456789
==================================================
Provider: Redx
Status: 🚛 Out For Delivery
Delivered: ❌ No
Last Update: 2025-01-15 15:45:00
```

**Detailed Timeline:**
```
📦 Detailed Tracking for SF987654321
============================================================
Provider: Steadfast
Current Status: ✅ Delivered
Delivered: ✅ Yes
Total Events: 4

📅 Timeline:
------------------------------------------------------------
 1. ⏳ [2025-01-15 08:00:00] Pending
    📍 Location: Steadfast Hub
    📝 Order received and processing

 2. 📦 [2025-01-15 10:30:00] Picked Up
    📍 Location: Pickup Point
    📝 Package collected from merchant

 3. 🚚 [2025-01-15 14:15:00] In Transit
    📍 Location: Transit Hub
    📝 Package in transit to destination

 4. ✅ [2025-01-15 16:00:00] Delivered
    📍 Location: Customer Address
    📝 Package delivered successfully
```

**JSON Output:**
```json
{
  "tracking_number": "PA456789123",
  "provider": "Pathao",
  "current_status": "in_transit",
  "is_delivered": false,
  "last_update": "2025-01-15T13:20:00",
  "total_events": 3,
  "events": [
    {
      "timestamp": "2025-01-15T09:15:00",
      "status": "pending",
      "location": "Pathao Warehouse",
      "description": "Parcel received at warehouse",
      "details": null
    }
  ]
}
```

## API Reference

### BaseTracker

All provider classes inherit from `BaseTracker` and implement these methods:

#### Properties
- `provider_name: str` - Name of the courier service
- `tracking_number: str` - The tracking/consignment number

#### Methods
- `track() -> List[TrackingEvent]` - Fetch tracking events
- `is_delivered() -> bool` - Check if parcel is delivered
- `get_current_status() -> TrackingStatus` - Get current tracking status
- `get_last_update() -> Optional[datetime]` - Get timestamp of last update
- `refresh() -> List[TrackingEvent]` - Force refresh tracking data

### TrackingEvent

Represents a single tracking event:

```python
@dataclass
class TrackingEvent:
    timestamp: datetime
    status: TrackingStatus
    location: Optional[str] = None
    description: Optional[str] = None
    details: Optional[str] = None
```

### TrackingStatus

Enumeration of possible tracking statuses:

- `PENDING` - Order received/processing
- `PICKED_UP` - Package picked up
- `IN_TRANSIT` - Package in transit
- `OUT_FOR_DELIVERY` - Out for delivery
- `DELIVERED` - Successfully delivered
- `RETURNED` - Returned to sender
- `CANCELLED` - Order cancelled
- `FAILED_DELIVERY` - Delivery attempt failed
- `UNKNOWN` - Status unknown

## Error Handling

The package provides a custom `TrackingError` exception:

```python
from bangladeshi_parcel_tracker import TrackingError

try:
    tracker = RedxTracker("INVALID123")
    events = tracker.track()
except TrackingError as e:
    print(f"Tracking failed: {e}")
    print(f"Provider: {e.provider}")
    print(f"Tracking Number: {e.tracking_number}")
```

## Development

### Setting up Development Environment

```bash
# Clone the repository
git clone https://github.com/yourusername/bangladeshi-parcel-tracker.git
cd bangladeshi-parcel-tracker

# Install in development mode
pip install -e .

# Format code
black src/
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

### Guidelines

1. Follow the existing code style (Black formatting)
2. Update documentation as needed
3. Ensure your changes work with the existing API structure

### Provider Implementation

To add a new courier service provider:

1. Create a new file in `src/bangladeshi_parcel_tracker/providers/`
2. Inherit from `BaseTracker`
3. Implement the `track()` method
4. Add provider to `__init__.py`

Example:

```python
from ..base import BaseTracker, TrackingEvent, TrackingStatus

class NewProviderTracker(BaseTracker):
    @property
    def provider_name(self) -> str:
        return "New Provider"
    
    def track(self) -> List[TrackingEvent]:
        # Implementation here
        pass
```

## License

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

## Acknowledgments

- Available on PyPI as `bangladeshi-parcel-tracker`
- Thanks to all Bangladeshi courier services for their tracking systems
- Built with ❤️ for the Bangladeshi developer community

## Disclaimer

This package is not officially affiliated with any of the courier services. It's an independent tool created to help developers integrate parcel tracking functionality into their applications.

The package uses publicly available tracking APIs and websites to fetch parcel information. Please use responsibly and respect the terms of service of each courier provider.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mdminhazulhaque/bangladeshi-parcel-tracker",
    "name": "bangladeshi-parcel-tracker",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "bangladesh parcel tracking courier redx steadfast pathao rokomari",
    "author": "Minhaz",
    "author_email": "your.email@example.com",
    "download_url": "https://files.pythonhosted.org/packages/38/46/ecbf0619b1bbf94fa20133fb7fda32f297e622b916b9413e02009f4890af/bangladeshi_parcel_tracker-1.3.0.tar.gz",
    "platform": null,
    "description": "# Bangladeshi Parcel Tracker\n\nA Python package for tracking parcels from various Bangladeshi courier services including Redx, Steadfast, Pathao, Rokomari, and Sundarban.\n\n[![PyPI version](https://badge.fury.io/py/bangladeshi-parcel-tracker.svg)](https://badge.fury.io/py/bangladeshi-parcel-tracker)\n[![Python versions](https://img.shields.io/pypi/pyversions/bangladeshi-parcel-tracker.svg)](https://pypi.org/project/bangladeshi-parcel-tracker/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- \ud83d\ude9a Support for major Bangladeshi courier services\n- \ud83d\udce6 Unified tracking interface across all providers\n- \u23f1\ufe0f Detailed timeline of parcel journey\n- \ud83c\udfaf Easy-to-use delivery status checking\n- \ud83d\udd04 Real-time tracking with live API integration\n- \ud83d\udcca Comprehensive tracking event data\n- \ud83d\udc0d Python 3.8+ support\n- \ud83d\udee0\ufe0f Command-line interface included\n\n## Supported Courier Services\n\n- **Redx** - Leading courier service in Bangladesh\n- **Steadfast** - Reliable delivery solutions\n- **Pathao** - Fast and efficient courier service  \n- **Rokomari** - Book and product delivery specialist\n- **Sundarban** - Comprehensive logistics and courier solutions\n\n## Installation\n\nThe package is available on PyPI. Install it using pip:\n\n```bash\npip install bangladeshi-parcel-tracker\n```\n\nFor development installation:\n\n```bash\ngit clone https://github.com/yourusername/bangladeshi-parcel-tracker.git\ncd bangladeshi-parcel-tracker\npip install -e .\n```\n\n## Quick Start\n\n### Basic Usage\n\n```python\nfrom bangladeshi_parcel_tracker import RedxTracker, SteadfastTracker\n\n# Track a Redx parcel\ntracker = RedxTracker(\"RDX123456789\")\nevents = tracker.track()\n\n# Check if delivered\nif tracker.is_delivered():\n    print(\"Package has been delivered!\")\nelse:\n    print(f\"Current status: {tracker.get_current_status().value}\")\n\n# Print timeline\nfor event in events:\n    print(event)\n```\n\n### Using Different Providers\n\n```python\nfrom bangladeshi_parcel_tracker import (\n    RedxTracker, SteadfastTracker, \n    PathaoTracker, RokomariTracker, SundarbanTracker\n)\n\ntracking_number = \"YOUR_TRACKING_NUMBER\"\n\n# For Pathao and Rokomari, you may need phone number\nphone_number = \"01700000000\"  # Required for some providers\n\n# Choose your provider\ntrackers = {\n    'redx': RedxTracker(tracking_number),\n    'steadfast': SteadfastTracker(tracking_number),\n    'pathao': PathaoTracker(tracking_number, phone=phone_number),\n    'rokomari': RokomariTracker(tracking_number, phone=phone_number),\n    'sundarban': SundarbanTracker(tracking_number)\n}\n\nfor name, tracker in trackers.items():\n    try:\n        events = tracker.track()\n        print(f\"\\\\n{tracker.provider_name} Tracking:\")\n        print(f\"Status: {tracker.get_current_status().value}\")\n        print(f\"Delivered: {tracker.is_delivered()}\")\n        print(f\"Last Update: {tracker.get_last_update()}\")\n        \n        for event in events:\n            print(f\"  {event}\")\n            \n    except Exception as e:\n        print(f\"Error tracking with {name}: {e}\")\n```\n\n## Command Line Interface\n\nThe package includes a powerful CLI for tracking parcels from the terminal:\n\n### Installation & Usage\n\nAfter installing the package from pip, you can use the `bangladeshi-parcel-tracker` command:\n\n```bash\n# Basic usage\nbangladeshi-parcel-tracker <provider> <tracking_number>\n\n# Show help\nbangladeshi-parcel-tracker --help\n\n# Show version\nbangladeshi-parcel-tracker --version\n```\n\n### CLI Examples\n\n```bash\n# Track with Redx (detailed timeline)\nbangladeshi-parcel-tracker redx RDX123456789\n\n# Track with Steadfast (status only)\nbangladeshi-parcel-tracker steadfast SF987654321 --status-only\n\n# Track with Pathao (JSON output) - requires phone number\nbangladeshi-parcel-tracker pathao PA456789123 --phone 01700000000 --json\n\n# Track with Rokomari (detailed timeline) - requires phone number\nbangladeshi-parcel-tracker rokomari RK789123456 --phone 01700000000 --detailed\n\n# Track with Sundarban (detailed timeline)\nbangladeshi-parcel-tracker sundarban 70003000778899 --detailed\n```\n\n### CLI Options\n\n- `--status-only`, `-s`: Show only the current delivery status\n- `--detailed`, `-d`: Show detailed timeline with all events (default)\n- `--json`, `-j`: Output results in JSON format\n- `--phone`, `-p`: Phone number (required for Pathao and Rokomari)\n- `--version`, `-v`: Show version information\n- `--help`, `-h`: Show help message\n\n### CLI Output Examples\n\n**Status Only Output:**\n```\n\ud83d\udcca Tracking Status for RDX123456789\n==================================================\nProvider: Redx\nStatus: \ud83d\ude9b Out For Delivery\nDelivered: \u274c No\nLast Update: 2025-01-15 15:45:00\n```\n\n**Detailed Timeline:**\n```\n\ud83d\udce6 Detailed Tracking for SF987654321\n============================================================\nProvider: Steadfast\nCurrent Status: \u2705 Delivered\nDelivered: \u2705 Yes\nTotal Events: 4\n\n\ud83d\udcc5 Timeline:\n------------------------------------------------------------\n 1. \u23f3 [2025-01-15 08:00:00] Pending\n    \ud83d\udccd Location: Steadfast Hub\n    \ud83d\udcdd Order received and processing\n\n 2. \ud83d\udce6 [2025-01-15 10:30:00] Picked Up\n    \ud83d\udccd Location: Pickup Point\n    \ud83d\udcdd Package collected from merchant\n\n 3. \ud83d\ude9a [2025-01-15 14:15:00] In Transit\n    \ud83d\udccd Location: Transit Hub\n    \ud83d\udcdd Package in transit to destination\n\n 4. \u2705 [2025-01-15 16:00:00] Delivered\n    \ud83d\udccd Location: Customer Address\n    \ud83d\udcdd Package delivered successfully\n```\n\n**JSON Output:**\n```json\n{\n  \"tracking_number\": \"PA456789123\",\n  \"provider\": \"Pathao\",\n  \"current_status\": \"in_transit\",\n  \"is_delivered\": false,\n  \"last_update\": \"2025-01-15T13:20:00\",\n  \"total_events\": 3,\n  \"events\": [\n    {\n      \"timestamp\": \"2025-01-15T09:15:00\",\n      \"status\": \"pending\",\n      \"location\": \"Pathao Warehouse\",\n      \"description\": \"Parcel received at warehouse\",\n      \"details\": null\n    }\n  ]\n}\n```\n\n## API Reference\n\n### BaseTracker\n\nAll provider classes inherit from `BaseTracker` and implement these methods:\n\n#### Properties\n- `provider_name: str` - Name of the courier service\n- `tracking_number: str` - The tracking/consignment number\n\n#### Methods\n- `track() -> List[TrackingEvent]` - Fetch tracking events\n- `is_delivered() -> bool` - Check if parcel is delivered\n- `get_current_status() -> TrackingStatus` - Get current tracking status\n- `get_last_update() -> Optional[datetime]` - Get timestamp of last update\n- `refresh() -> List[TrackingEvent]` - Force refresh tracking data\n\n### TrackingEvent\n\nRepresents a single tracking event:\n\n```python\n@dataclass\nclass TrackingEvent:\n    timestamp: datetime\n    status: TrackingStatus\n    location: Optional[str] = None\n    description: Optional[str] = None\n    details: Optional[str] = None\n```\n\n### TrackingStatus\n\nEnumeration of possible tracking statuses:\n\n- `PENDING` - Order received/processing\n- `PICKED_UP` - Package picked up\n- `IN_TRANSIT` - Package in transit\n- `OUT_FOR_DELIVERY` - Out for delivery\n- `DELIVERED` - Successfully delivered\n- `RETURNED` - Returned to sender\n- `CANCELLED` - Order cancelled\n- `FAILED_DELIVERY` - Delivery attempt failed\n- `UNKNOWN` - Status unknown\n\n## Error Handling\n\nThe package provides a custom `TrackingError` exception:\n\n```python\nfrom bangladeshi_parcel_tracker import TrackingError\n\ntry:\n    tracker = RedxTracker(\"INVALID123\")\n    events = tracker.track()\nexcept TrackingError as e:\n    print(f\"Tracking failed: {e}\")\n    print(f\"Provider: {e.provider}\")\n    print(f\"Tracking Number: {e.tracking_number}\")\n```\n\n## Development\n\n### Setting up Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/bangladeshi-parcel-tracker.git\ncd bangladeshi-parcel-tracker\n\n# Install in development mode\npip install -e .\n\n# Format code\nblack src/\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.\n\n### Guidelines\n\n1. Follow the existing code style (Black formatting)\n2. Update documentation as needed\n3. Ensure your changes work with the existing API structure\n\n### Provider Implementation\n\nTo add a new courier service provider:\n\n1. Create a new file in `src/bangladeshi_parcel_tracker/providers/`\n2. Inherit from `BaseTracker`\n3. Implement the `track()` method\n4. Add provider to `__init__.py`\n\nExample:\n\n```python\nfrom ..base import BaseTracker, TrackingEvent, TrackingStatus\n\nclass NewProviderTracker(BaseTracker):\n    @property\n    def provider_name(self) -> str:\n        return \"New Provider\"\n    \n    def track(self) -> List[TrackingEvent]:\n        # Implementation here\n        pass\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Available on PyPI as `bangladeshi-parcel-tracker`\n- Thanks to all Bangladeshi courier services for their tracking systems\n- Built with \u2764\ufe0f for the Bangladeshi developer community\n\n## Disclaimer\n\nThis package is not officially affiliated with any of the courier services. It's an independent tool created to help developers integrate parcel tracking functionality into their applications.\n\nThe package uses publicly available tracking APIs and websites to fetch parcel information. Please use responsibly and respect the terms of service of each courier provider.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python package for tracking parcels from Bangladeshi courier services",
    "version": "1.3.0",
    "project_urls": {
        "Bug Reports": "https://github.com/mdminhazulhaque/bangladeshi-parcel-tracker/issues",
        "Homepage": "https://github.com/mdminhazulhaque/bangladeshi-parcel-tracker",
        "Source": "https://github.com/mdminhazulhaque/bangladeshi-parcel-tracker"
    },
    "split_keywords": [
        "bangladesh",
        "parcel",
        "tracking",
        "courier",
        "redx",
        "steadfast",
        "pathao",
        "rokomari"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8cf47124b1cc28d4f55a286739f04241899bfe754d32df3fac8c7ea48863d75a",
                "md5": "36aed33cb7c76e369a297ab43344295d",
                "sha256": "29f6b648d49b2092b317fcadf87d83c589e6bf44eb77686e58ff90367155b90a"
            },
            "downloads": -1,
            "filename": "bangladeshi_parcel_tracker-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "36aed33cb7c76e369a297ab43344295d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 27181,
            "upload_time": "2025-08-05T18:16:08",
            "upload_time_iso_8601": "2025-08-05T18:16:08.924703Z",
            "url": "https://files.pythonhosted.org/packages/8c/f4/7124b1cc28d4f55a286739f04241899bfe754d32df3fac8c7ea48863d75a/bangladeshi_parcel_tracker-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3846ecbf0619b1bbf94fa20133fb7fda32f297e622b916b9413e02009f4890af",
                "md5": "426930dde6da4f8500dff9b0e977d8b0",
                "sha256": "18724b01aab047d505528fbf331b78d4be95058c8a4d421ba21fa434b9250e17"
            },
            "downloads": -1,
            "filename": "bangladeshi_parcel_tracker-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "426930dde6da4f8500dff9b0e977d8b0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 21685,
            "upload_time": "2025-08-05T18:16:10",
            "upload_time_iso_8601": "2025-08-05T18:16:10.536298Z",
            "url": "https://files.pythonhosted.org/packages/38/46/ecbf0619b1bbf94fa20133fb7fda32f297e622b916b9413e02009f4890af/bangladeshi_parcel_tracker-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-05 18:16:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mdminhazulhaque",
    "github_project": "bangladeshi-parcel-tracker",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.28.0"
                ]
            ]
        },
        {
            "name": "beautifulsoup4",
            "specs": [
                [
                    ">=",
                    "4.11.0"
                ]
            ]
        }
    ],
    "lcname": "bangladeshi-parcel-tracker"
}
        
Elapsed time: 1.40881s