yoda

Build status SonarCloud Quality Status License Project status Code style: black

Wise and powerful personal assistant, available in your nearest terminal


Install, how to

Requirements

Run, how to

1. Docker

  1. Install docker
  2. Run docker run --rm -it yodapa/yoda:latest yoda chat Hi

2. Using pip, without cloning

You can install yoda directly from the github repository using the following commands in shell. virtualenv yodaenv ./yodaenv/bin/pip install git+https://github.com/yoda-pa/yoda

3. Using pip, with cloning

Clone this repository and create a virtual environment using Python 2 in the cloned directory (virtualenv -p /usr/bin/python2 venv). Steps after that:

Instead of pip install --editable . you can use pip install . if you don't intend to make any changes in the code.

Use this package, how to

chat

Use the chat command to talk to the inbuilt chatbot for this project.

You can test the chat functionality on api.ai agent website here

dev

This command group contains some sub-commands that may be helpful for developers and tech-geeks.

horoscope

See your horoscope

goals

Create and complete goals, add tasks and analyze your progress.

# To set a goal (name, description, deadline)
$ yoda goals new

# To show list of ideas
$ yoda goals view

# To set a goal as completed
$ yoda goals complete

# To see number of completed/incomplete goals, missed deadlines etc.
$ yoda goals analyze

# To view tasks assigned to the goal
$ yoda goals tasks

Note: Use this module with diary module and assign new tasks to the goals by typing

$ yoda diary nt

and adding the goal names to the task when prompted to do so.

diary

This command can be used to maintain a personal diary, roughly based on the concept of Bullet Journal.

For creating and writing new note type

# For writing new note
$ yoda diary nn

# First give the title of the note.
# Second give the text of the note

# Viewing all notes.
$ yoda diary notes

# Updating note
# Choose the date and then the note to update
$ yoda diary un

# Deleting Note
# Choose the date and then the note to delete
$ yoda diary dn

For writing and viewing tasks.

# Writing new task
$ yoda diary nt

# Viewing all tasks
$ yoda diary tasks

# Change the status of task to completed
$ yoda diary ct

# Update task
# Choose the date and then the task to update
$ yoda diary ut

# Delete Task
# Choose the date and then the task to delete
$ yoda diary dt

# Delete all completed tasks for today
$ yoda diary dct
# type c to confirm the deletion

love

This command can be used to maintain a profile of someone you love, take notes and remember what they like.

money

For tracking money, this is.

Get your expenses per month

$ yoda money exps_month
$ Sep: spent 75 USD
$ Nov: spent 15 USD
$ Dec: spent 125 USD

Convert currency

$ yoda money convert
Enter currency codes seperated by space:
INR USD
₹ 1 = US$ 0.0136
Enter the amount in INR to be converted to USD
100
100 INR = 1.36 USD

leaselist

Keep a record of things people have taken from you, and the things you have taken from them - to remind them / yourself to return

# To add an item
$ yoda leaselist add

# To show list of items lent/borrowed
$ yoda leaselist show

# To remove an item from the list
$ yoda leaselist remove

Idea list

For creating list of ideas, type

# To add idea
$ yoda ideas add --task <task_name> --inside <project_name>

# To show list of ideas
$ yoda ideas show

# To remove a task from idea
$ yoda ideas remove --task <task_name> --inside <project_name>

# To remove an idea completely
$ yoda ideas remove --project <project_name>

IP lookup

Get the geographical location of an IP address.

$ yoda iplookup 23.20.227.213
Virginia, United States

Custom cummands

Set a custom command.

$ yoda cc pwd
$ yoda pwd
/home/alex/git-clones/yoda

learn

This command group contains commands that, helpful in learning new things, will be.

Aliasing

This command allows you to alias cumbersome commands.

  # before: shortening a url
  $ yoda url shorten google.com

  # alias shorten to be s
  $ yoda alias new "shorten" "s"

  # can now use s in place of shorten
  $ yoda url s google.com

  # or alias the whole command as us
  $ yoda alias new "url shorten" "us"
  $ yoda us google.com

  # show your current aliases
  $ yoda alias show

  # delete aliases
  $ yoda alias delete "us"
  $ yoda alias delete "s"

ascii_transfrom

This command outputs transformed ascii version of a given image.

    # give the path of the image you want to transform
    $ yoda ascii_transform logo.png

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%..+.?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+..+..+?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..SSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%..+..+..+..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%SSSSS++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%...+.....+...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%SSS++++%%%%%%%%%%%%%%%%%%%%%%%%%%%..............S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%S+++++.%%%%%%%%%%..........?%%%................%%%%..........%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%++++...%%%%%%%%%%SSS............+++....+++.............SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%++.....%%%%%%%%%SSSS.........+....+.+....+..+......SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%.....**%%%%%%%%SSSSS...+..+......+.............SSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%...****%%%%%%%SSSSSS...........+......+..+.SSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%.******%%%%%%SSSSSS......@@.....@@......SSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%*****%%%%%%SSSS.......@......@.......SSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%******%%%%%%%%SS..........SSS.........%S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%..******%%%%%%%%%%%......................%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%....****%%%%%%%%%%%%%%.......S.............%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%++.....*%%%%%%%%%%%%%%%%%%.....%%%.S.........%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%++++....%%%%%%%%%%%%%%%%%%%%%?......%%%%%%...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%S+++++..%%%%%%%%%%%%%%%%%%%%%%%%%............?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%SSSS++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.........%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%.SSSSS++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%......?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..SSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.SSSSS++++++......*****%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.SSSSS++++++......*****%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.SSSSS++++++......*****%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Weather

This command obtains the weather information of a specified location using wttr as the weather service.

people

This is an inbuilt people manager that can be used to save profiles of people and related information, like their birthdays, likes, and some personalized notes for them.

# To add people(or a friend)
$ yoda people setup

# To show added friends
$ yoda people status
--------------------------------------
     Mob    |     DOB    |   Name
------------|------------|------------
 7503160111 | 1994-06-26 | Joy
 7503160112 | 1994-05-26 | Lobo

# To add what people like(or a friend likes)
$ yoda people like

# To add personalized notes for people(or friend)
$ yoda people note

# To view likes of your added people
$ yoda people likes
Joy
Likes:
1: #petry
2: #acting

# To view personalized notes for added people(or friend)
$ yoda people notes
Lobo
Notes:
1: stop saying start doing
2: keep chin up

lyrics

This command can be used to get the lyrics of a song.

$ yoda lyrics
Enter the artist name:
imagine dragons
Enter the title name:
thunder
--------Lyrics--------
Just a young gun with a quick fuse
I was uptight, wanna let loose
I was dreaming of bigger things in

food

Use this command to get suggestions related to food.

# To get a restaurant suggestion in your city:
$ yoda food suggest_restaurant
What city are you in? Berlin
What type of food are you interested in? Chinese

Why don't you try THIS restaurant tonight!

Shaniu's House of Noodles on Pariser Str. 58
Book a table at +493091552605

# To get a drink suggestion
$ yoda food suggest_drinks
Like you need a drink you look.  Hmmmmmm.
---------------------Jello shots---------------------
Ingredients:
Vodka x 2 cups
Jello x 3 packages
Water x 3 cups
Instructions: Boil 3 cups of water then add jello. Mix jello and water until jello is completely disolved. Add the two cups of vodka and mix together. Pour mixture into plastic shot glasses and chill until firm. Then, eat away...

# To get a recipe suggestion
$ yoda food suggest_recipes
Categories: American, British, Canadian, Chinese, Dutch, Egyptian, French, Greek, Indian, Irish, Italian, Jamaican, Japanese, Kenyan, Malaysian, Mexican, Moroccan, Russian, Spanish, Thai, Unknown, Vietnamese

Choose a category above or type 'Random' for a random recipe suggestion: Random

---------------------Spicy Arrabiata Penne---------------------

Ingredients:
penne rigate x 1 pound
olive oil x 1/4 cup
garlic x 3 cloves
chopped tomatoes x 1 tin
red chile flakes x 1/2 teaspoon
italian seasoning x 1/2 teaspoon
basil x 6 leaves
Parmigiano-Reggiano x spinkling

Instructions: Bring a large pot of water to a boil. Add kosher salt to the boiling water, then add the pasta. Cook according to the package instructions, about 9 minutes.
In a large skillet over medium-high heat, add the olive oil and heat until the oil starts to shimmer. Add the garlic and cook, stirring, until fragrant, 1 to 2 minutes. Add the chopped tomatoes, red chile flakes, Italian seasoning and salt and pepper to taste. Bring to a boil and cook for 5 minutes. Remove from the heat and add the chopped basil.
Drain the pasta and add it to the sauce. Garnish with Parmigiano-Reggiano flakes and more basil and serve warm.

feedback

To create an issue in the github repository simple thing that shows a link. Yeesssssss.

ciphers

Use this command to encrypt or decrypt text using various classical ciphers

$ yoda ciphers encrypt
0: Atbash
1: Caesar
2: ROT13
3: Vigenere
Choose a cipher: 3
The text you want to encrypt: Mary had a litle lamb
The encryption keyword: mango
ZBFF WNE O SXGUZL ANNP

$ yoda ciphers decrypt
0: Atbash
1: Caesar
2: ROT13
3: Vigenere
Choose a cipher: 3
The text you want to decrypt: ZBFF WNE O SXGUZL ANNP
The encryption keyword: mango
MARY HAD A LITTLE LAMB

Packages and services used

Contribute, you must

Please refer to the contributing guidelines for contributing to this project. This project was made possible by contributions from many awesome people.

In the news

Changelog

v1.0.0

Related milestone: v1.0.0

Changes in this version:

v0.4.0

Related milestone: v0.4.0

Changes in this version:

v0.3.0

Related milestone: v0.3.0

Changes in this version:

v0.2.0

Related milestone: v0.2.0

Changes in this version:

v0.1.0

Initial release.