/ReVot

Reverse Image Search Telegram Bot Using MS Azure

Primary LanguagePythonMIT LicenseMIT

ReVotRobot

Reverse Image Search Telegram Bot Using MS Azure/Local (server maybe off)

GitHub Readme Profile Issues GitHub Readme Profile PRs Contact


How To Use Me: Alien Monster

Send me images, gifs or stickers(non-animated), I will send you direct reverse image search links of IQDB, Google, TinEye, Yandex and Bing. For anime images IQDB and TinEye, for other images, I recommend using Google, Bing and Yandex.

Features: Roller Coaster

  • Give you image reverse search links
  • Supports normal images like JPG, PNG, WEBP
  • Supports stickers
  • Supports GIFs (can take some time till the GIFs are ready)

Commands:🧩

  • /help, /start: show a help message with information about the bot and its usage.
  • /best_match URL: Search for the best match on TinEye (and IQDB when nothing is found on TinEye). The URL is a link to an image

Local installation: Technologist Light Skin Tone

With this info, we now install our virtualenv with (check pre-installations file):

chmod +x pre-installations.sh
./pre-installations.sh
pip install pipenv  # Install pipenv
pipenv --version
git clone https://github.com/c0sm0void/ReVot.git
cd /ReVot
pipenv shell
pipenv install      # Install all requirements

You have to get an API Token from Telegram. You can easily get one via the @BotFather.

Now that you have your API Token, create a settings.py file and add one of the configurations below based on your preferred uploading method.

Option 1: SSH Uploader

If you want to upload files using SSH, use the following configuration in your settings.py:

TELEGRAM_API_TOKEN = 'Tel Bot Token By @BotFather'

UPLOADER = {
    'uploader': 'reverse_image_search_bot.uploaders.ssh.SSHUploader',
    'url': 'Host Domain Name',
    'configuration': {
        'host': 'Host IP (PUBLIC)',
        'user': 'Yourname',
        'password': 'Password',
        'upload_dir': '/path/to/ReVot/',
        'key_filename': '/path/to/.ssh/rsakey.pub (Public key)',
    }
}

Option 2: File System Uploader

If you prefer to upload files from your local file system, use the following configuration in your settings.py:

TELEGRAM_API_TOKEN = 'Tel Bot Token By @BotFather'

UPLOADER = {
    'uploader': 'reverse_image_search_bot.uploaders.file_system.FileSystemUploader',
    'url': 'Host Domain Name',
    'configuration': {
       'path': '/path/to/ReVot/',
    }
}

Finally, you can use this to start your bot.

python run_bot.py

Errors and Fixes:❌

  • Use Python v3.12 as default
  • ssh-keyscan -H <IP address/Hostname> >> ~/.shh/known_hosts
  • sudo -H pip install -U pipenv

Techstack

Programming Language:

  • Python 3.12+

Libraries:

  • pipenv: For virtual environment and dependency management
  • python-telegram-bot: For interacting with Telegram APIs
  • Reverse Image Search Engines:
    • Google
    • Bing
    • Yandex
    • TinEye
    • IQDB

Platform:

  • MS Azure for hosting
  • Ubuntu virtual machine for hosting

Repository Structure: Crystal Ball

ReVot/
│
├── .github/                  # GitHub-specific files
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.md     # Template for reporting bugs
│       ├── custom.md         # Custom issue template
│       └── feature_request.md # Template for requesting features
│
├── deploy/                   # Deployment scripts and configurations
│   ├── after_push            # Post-deployment scripts
│
├── reverse_image_search_bot/ # Main bot directory
│   ├── uploaders/            # Uploader modules
│   │   ├── __init__.py       # Initialize uploaders package
│   │   ├── base_uploader.py   # Base class for uploaders
│   │   ├── file_system.py     # File system operations
│   │   └── ssh.py            # SSH related functions
│   │
│   ├── __init__.py           # Initialize bot package
│   ├── bot.py                # Main bot logic
│   ├── commands.py           # Command handling for the bot
│   ├── image_search.py       # Functions for reverse image search
│   ├── settings.example.py    # Example settings file for API tokens
│   ├── settings.example1.py   # Another example settings file
│   ├── utils.py              # Utility functions and helpers
│
├── LICENSE                   # License information
├── Pipfile                   # Pipenv dependencies
├── Pipfile.lock              # Locked dependency versions
├── README.md                 # Main project documentation
└── run_bot.py                # Script to run the bot

License:📜

This project is licensed under the MIT License. You are free to use, modify, and distribute this software as long as the original license and copyright notice are retained.

Beating Heart Our Contributors

  • We extend our heartfelt gratitude for your invaluable contribution to our project! Your efforts play a pivotal role in elevating ReVot to greater heights.
  • Make sure you show some love by giving Star to our repository.
Pushes and Commits of c0sm0void/ReVot Top Contributors of c0sm0void/ReVot - Last 28 days