bishwenduk029 / Jarvis

IronMan's Jarvis with python

Home Page:https://thevickypedia.github.io/Jarvis/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

forthebadge made-with-python ForTheBadge built-with-swag

Python 3.8 Python 3.9

Platform Supported

Generic badge

Language Stats

Language count Code coverage

Repo Stats

GitHub Repo stars GitHub Repo forks GitHub Repo watchers

GitHub GitHub repo size GitHub code size LOC

GitHub Repo issues GitHub Repo issues GitHub Repo pr GitHub Repo pr

Code Stats

Modules Python Threads Listener Speaker Bash AppleScript Make

Deployments

docs pypi

Pypi-format Pypi-status sourcerank

Activity

GitHub Repo created GitHub commit activity GitHub last commit

Development and Maintenance

Active Development Actively Maintained

Maintained Maintainer

Reach Out

Ask Me | Anything

Jarvis

IronMan's Jarvis with python

Setup

  • Clone this repository or download it from pypi
  • Run the following commands in command line/terminal:
    • cd lib && chmod +x installs.sh - Makes installation file as executable.
    • python3 -m venv venv - Creates a virtual env named venv
    • source venv/bin/activate - Activates the virtual env venv
    • which python - Validate which python is being used. Should be the one within the virtual env venv
    • bash installs.sh - Installs the required libraries/modules.
    • python3 jarvis.py - BOOM, you're all set, go ahead and interact with Jarvis

ENV Variables

Environment variables are loaded from a .env file using the python_dotenv module.

More on Environment variables
Default args
  • offline_port - Port number to initiate offline communicator on. Defaults to 4483
  • offline_phrase - Secure phrase to be used for authentication purpose. Defaults to jarvis
- Accurate Location: (Defaults to the location based on Public IP)
  • icloud_user - iCloud account username.
  • icloud_pass - iCloud account password.
Additional args
  • git_user - GitHub Username
  • git_pass - GitHub Token
  • weather_api - API Key from openweathermap
  • news_api - API Key from newsapi
  • maps_api - API Key for maps from google
  • gmail_user - Gmail account username to send and read emails.
  • gmail_pass - Gmail account password to send and read emails.
  • offline_user - Alternate gmail account username to send an SMS. (gmail_user can be re-used)
  • offline_pass - Alternate gmail account password to send an SMS. (gmail_pass can be re-used)
  • robinhood_user - Robinhood account username.
  • robinhood_pass - Robinhood account password.
  • robinhood_qr - Robinhood login QR code
  • birthday - Birth date in the format DD-MM - Example: 24-April
  • icloud_recovery - Recovery phone number to activate lost mode on a target device - Example: +11234567890
  • phone_number - To send SMS from Jarvis - Example: +11234567890
  • think_id - API Key from wolfram alpha.
  • root_password - System password for your mac to get the system vitals.
Args for PersonalCloud integration
  • personal_cloud_host - Directory path which has to shared through the internet.
Args to control TV - Applies only for LGWebOS
  • tv_client_key - Client key to control the TV using pywebostv module.
  • tv_mac - Mac address of the TV which will be retrieved by the arp command but just in case.
Args for ip_scanner - Applies only for Netgear routers
  • router_pass - Router's admin password to get the available devices using pynetgear module.

    Note that this may be done even without the module by simply scanning the whole network. Using the module makes it easier since the devices are already connected to the router.

Built for a personalized usage.

  • ngrok_auth_key - Auth token from ngrok - Only used for offline_communicator

Automation Setup [Optional]

Executes pre-defined tasks at pre-defined times without any user interaction. Uses an automation.json file as source.

Setup Instructions

The JSON file should be a dictionary within a dictionary that looks like the below.

OPTIONAL: The key, day can be a list of days, or a str of a specific day or simply a str saying weekday or weekend when the particular automation should be executed.

Not having the key day will run the automation daily.

{
  "6:00 AM": {
    "day": "weekday",
    "task": "set my bedroom lights to 50%",
    "status": false
  },
  "6:30 AM": {
    "day": ["Monday", "wednesday", "FRIDAY"],
    "task": "set my bedroom lights to 100%",
    "status": false
  },
  "8:00 AM": {
    "day": "weekend",
    "task": "set my bedroom lights to 100%",
    "status": false
  },
  "9:00 PM": {
    "task": "set my bedroom lights to 5%",
    "status": false
  }
}

Coding Standards

Docstring format: Google
Styling conventions: PEP 8
Clean code with pre-commit hooks: flake8 and isort

Linting

PreCommit will ensure linting, and the doc creation are run on every commit.

Requirement
pip install --no-cache --upgrade sphinx pre-commit recommonmark

Usage
pre-commit run --all-files

Feature(s) Implementation

Please refer wiki for API usage, access controls, env variables, features' overview and demo videos.

Pypi Package

pypi-module

https://pypi.org/project/jarvis-ironman/

Runbook

made-with-sphinx-doc

https://thevickypedia.github.io/Jarvis/

License & copyright

© Vignesh Sivanandha Rao

Licensed under the MIT License

About

IronMan's Jarvis with python

https://thevickypedia.github.io/Jarvis/

License:MIT License


Languages

Language:Python 98.0%Language:Shell 1.5%Language:Batchfile 0.3%Language:Makefile 0.2%