profile
viewpoint
Seth Wilson sethwilsonUS Legally blind coder with interests in NLP, accessibility, and word games.

sethwilsonUS/codespeak 134

A web-based speech-to-code editor for humans.

sethwilsonUS/dad_bot 1

A dead simple mobile app written in Flutter that tells dad jokes.

sethwilsonUS/catalogue-of-verse 0

cataloguing the verse of J. R. R. Tolkien eventually with metrical and rhyme information

sethwilsonUS/coolsite 0

A cool Game of Thrones website

sethwilsonUS/DiscordDadBot 0

Dad Jokes for Discord

sethwilsonUS/ez-interpreter 0

Simple command interpreter written in Java.

sethwilsonUS/freeCodeCamp 0

The https://freeCodeCamp.org open source codebase and curriculum. Learn to code and help nonprofits.

sethwilsonUS/furuikeya 0

Procedural Haiku generation with Twitter API 1.1

sethwilsonUS/gatsby-starter-blog 0

Gatsby starter for creating a blog

sethwilsonUS/gimmie-sticker 0

Trade a Pull Request for a Sticker

startedchrisdrymon/greek-morph-tagger

started time in a day

issue commentseatgeek/fuzzywuzzy

Difflib and python-Levenshtein give different ratios in some cases

The difference is because difflib uses the Ratcliff-Obershelp algorithm, not the Levenshtein distance. Probably the readme should be updated, because not always Levenshtein distance is used.

theodickson

comment created time in a day

MemberEvent

pull request commentsukeesh/Jarvis

Plugin: scan_network with nmap

Yeah, Jarvis is now Python 3 only - feel free to use type hints. I should probably use them more often, too ;).

metodiistatkov

comment created time in 2 days

issue openedawsdocs/elastic-beanstalk-samples

Beanstalk not using shared load balancer and creates another one

Hi, I am trying to use a shared load balancer in the environment and i have specified everything in the ebextensions file

While uploading the app, it creates a listener in the shared load balancer but also creates another load balancer

I have specified the configuration as below

namespace: aws:elasticbeanstalk:environment option_name: ServiceRole value:

  • namespace: aws:elasticbeanstalk:environment option_name: LoadBalancerType value: application

  • namespace: aws:elasticbeanstalk:environment option_name: LoadBalancerIsShared value: true

  • namespace: aws:elbv2:loadbalancer option_name:ManagedSecurityGroup value:

  • namespace: aws:elbv2:loadbalancer option_name: SharedLoadBalancer value: arn

has anyone faced this issue before or am I missing something Thanks Sameer

created time in 3 days

Pull request review commentsukeesh/Jarvis

Plugin: scan_network with nmap

+import nmap+import json+from plugin import plugin, require, LINUX+from colorama import Fore+++def error_output(jarvis, nm_scan):+    jarvis.say('Please, check your input is correct\n', Fore.RED)+    jarvis.say('This might hint what the problem is:\n', Fore.YELLOW)+    jarvis.say(str(nm_scan.scaninfo()['error']), Fore.YELLOW)+++def show_output(jarvis, results):+    uphosts = results['nmap']['scanstats']['uphosts']+    jarvis.say('Number of hosts up: ' + uphosts + '\n', Fore.GREEN)+    devices = results['scan']+    for d in devices:+        jarvis.say(d, Fore.GREEN)+        jarvis.say('\tName: ' + devices[d]['hostnames'][0]['name'], Fore.GREEN)+        tcp_ports = devices[d]['tcp']+        for port in tcp_ports:+            jarvis.say('\tOpen TCP Port: ' + str(port), Fore.GREEN)+            jarvis.say('\t\tProtocol Name: ' + tcp_ports[port]['name'], Fore.GREEN)+            jarvis.say('\t\tProduct: ' + tcp_ports[port]['product'], Fore.GREEN)+            jarvis.say('\t\tVersion: ' + tcp_ports[port]['version'], Fore.GREEN)+        print('----------------------------\n')+++@require(network=True)+@require(native="nmap", platform=LINUX)+@plugin('scan_network')+def scan(jarvis, s):+    """+    Scans provided network for all connected devices+    Usage example: jarvis scan_network 172.16.1.10/24+    """+    nm_scan = nmap.PortScanner()+    jarvis.say('Please wait, this might take a while!')+    if not s:+        jarvis.say('You need to provide address as input!\n'+                   ' For example: jarvis scan_network x.x.x.x/24', Fore.YELLOW)+    else:+        nm_scan.scan(s)+        if 'error' in nm_scan.scaninfo():+            error_output(jarvis, nm_scan)+        else:

Makes sense, worst case scenario users will simply end up with larger error message.

metodiistatkov

comment created time in 3 days

pull request commentsukeesh/Jarvis

Plugin: scan_network with nmap

Thanks for the fast review!

Up to you really, I don't mind either way. If you want to have the functionality sooner probably merge it and I will implement your suggestions over the weekend and make a new PR. Also, I wanted to ask you about using Python type hints. I usually use type hints with python3, but I noticed that there are not any in the code. Is that because we want to have compatibility with python2? Should I add type hints in my next commits or refrain for doing that for now?

Btw, awesome project and idea!

metodiistatkov

comment created time in 3 days

Pull request review commentsukeesh/Jarvis

Plugin: scan_network with nmap

+import nmap+import json+from plugin import plugin, require, LINUX+from colorama import Fore+++def error_output(jarvis, nm_scan):+    jarvis.say('Please, check your input is correct\n', Fore.RED)+    jarvis.say('This might hint what the problem is:\n', Fore.YELLOW)+    jarvis.say(str(nm_scan.scaninfo()['error']), Fore.YELLOW)+++def show_output(jarvis, results):+    uphosts = results['nmap']['scanstats']['uphosts']+    jarvis.say('Number of hosts up: ' + uphosts + '\n', Fore.GREEN)+    devices = results['scan']+    for d in devices:+        jarvis.say(d, Fore.GREEN)+        jarvis.say('\tName: ' + devices[d]['hostnames'][0]['name'], Fore.GREEN)+        tcp_ports = devices[d]['tcp']+        for port in tcp_ports:+            jarvis.say('\tOpen TCP Port: ' + str(port), Fore.GREEN)+            jarvis.say('\t\tProtocol Name: ' + tcp_ports[port]['name'], Fore.GREEN)+            jarvis.say('\t\tProduct: ' + tcp_ports[port]['product'], Fore.GREEN)+            jarvis.say('\t\tVersion: ' + tcp_ports[port]['version'], Fore.GREEN)+        print('----------------------------\n')+++@require(network=True)+@require(native="nmap", platform=LINUX)+@plugin('scan_network')+def scan(jarvis, s):+    """+    Scans provided network for all connected devices+    Usage example: jarvis scan_network 172.16.1.10/24+    """+    nm_scan = nmap.PortScanner()+    jarvis.say('Please wait, this might take a while!')+    if not s:+        jarvis.say('You need to provide address as input!\n'+                   ' For example: jarvis scan_network x.x.x.x/24', Fore.YELLOW)+    else:+        nm_scan.scan(s)

Thanks for pointing that out!

metodiistatkov

comment created time in 3 days

Pull request review commentsukeesh/Jarvis

Plugin: scan_network with nmap

+import nmap+import json+from plugin import plugin, require, LINUX+from colorama import Fore+++def error_output(jarvis, nm_scan):+    jarvis.say('Please, check your input is correct\n', Fore.RED)+    jarvis.say('This might hint what the problem is:\n', Fore.YELLOW)+    jarvis.say(str(nm_scan.scaninfo()['error']), Fore.YELLOW)+++def show_output(jarvis, results):+    uphosts = results['nmap']['scanstats']['uphosts']+    jarvis.say('Number of hosts up: ' + uphosts + '\n', Fore.GREEN)+    devices = results['scan']+    for d in devices:+        jarvis.say(d, Fore.GREEN)+        jarvis.say('\tName: ' + devices[d]['hostnames'][0]['name'], Fore.GREEN)+        tcp_ports = devices[d]['tcp']+        for port in tcp_ports:+            jarvis.say('\tOpen TCP Port: ' + str(port), Fore.GREEN)+            jarvis.say('\t\tProtocol Name: ' + tcp_ports[port]['name'], Fore.GREEN)+            jarvis.say('\t\tProduct: ' + tcp_ports[port]['product'], Fore.GREEN)+            jarvis.say('\t\tVersion: ' + tcp_ports[port]['version'], Fore.GREEN)+        print('----------------------------\n')+++@require(network=True)+@require(native="nmap", platform=LINUX)+@plugin('scan_network')+def scan(jarvis, s):+    """+    Scans provided network for all connected devices+    Usage example: jarvis scan_network 172.16.1.10/24+    """+    nm_scan = nmap.PortScanner()+    jarvis.say('Please wait, this might take a while!')+    if not s:+        jarvis.say('You need to provide address as input!\n'+                   ' For example: jarvis scan_network x.x.x.x/24', Fore.YELLOW)+    else:+        nm_scan.scan(s)+        if 'error' in nm_scan.scaninfo():+            error_output(jarvis, nm_scan)+        else:

Looks like nmap may still produce meaningful output even if an error was reported. At last on my system it reports:

warning: Unable to determine any DNS servers.

(don't know why) but still works. Maybe remove the else-clause and call the code in any case?

metodiistatkov

comment created time in 3 days

Pull request review commentsukeesh/Jarvis

Plugin: scan_network with nmap

+import nmap+import json+from plugin import plugin, require, LINUX+from colorama import Fore+++def error_output(jarvis, nm_scan):+    jarvis.say('Please, check your input is correct\n', Fore.RED)+    jarvis.say('This might hint what the problem is:\n', Fore.YELLOW)+    jarvis.say(str(nm_scan.scaninfo()['error']), Fore.YELLOW)+++def show_output(jarvis, results):+    uphosts = results['nmap']['scanstats']['uphosts']+    jarvis.say('Number of hosts up: ' + uphosts + '\n', Fore.GREEN)+    devices = results['scan']+    for d in devices:+        jarvis.say(d, Fore.GREEN)+        jarvis.say('\tName: ' + devices[d]['hostnames'][0]['name'], Fore.GREEN)+        tcp_ports = devices[d]['tcp']+        for port in tcp_ports:+            jarvis.say('\tOpen TCP Port: ' + str(port), Fore.GREEN)+            jarvis.say('\t\tProtocol Name: ' + tcp_ports[port]['name'], Fore.GREEN)+            jarvis.say('\t\tProduct: ' + tcp_ports[port]['product'], Fore.GREEN)+            jarvis.say('\t\tVersion: ' + tcp_ports[port]['version'], Fore.GREEN)+        print('----------------------------\n')+++@require(network=True)+@require(native="nmap", platform=LINUX)+@plugin('scan_network')+def scan(jarvis, s):+    """+    Scans provided network for all connected devices+    Usage example: jarvis scan_network 172.16.1.10/24+    """+    nm_scan = nmap.PortScanner()+    jarvis.say('Please wait, this might take a while!')+    if not s:+        jarvis.say('You need to provide address as input!\n'+                   ' For example: jarvis scan_network x.x.x.x/24', Fore.YELLOW)+    else:+        nm_scan.scan(s)

Noticed python-nmap default adds '-sV' as option. According to man

-sV: Probe open ports to determine service/version info

This takes ages and in line 49 you are dropping this information anyway. As a suggestion, overwrite this parameter for extremely faster scan times:

        nm_scan.scan(s, arguments="")
metodiistatkov

comment created time in 3 days

PR opened sukeesh/Jarvis

Plugin: scan_network with nmap

Hello,

I created a plugin that uses nmap to scan a network address. It could be helpful for a quick check of what devices are active in your LAN. Also you can provide a specific address to be scanned - either private or public IPv4 one. Here are two examples of how the new Jarvis command works:

This image demonstrates scanning a particular address Screenshot from 2021-01-21 16-17-26

This example shows how you can scan your local network for example Screenshot from 2021-01-21 16-22-40

Future Work I am planning to add more functionalities that give greater flexibility. For example, scan for a specific port range, check if a particular host is up, etc. Also I will add more test cases.

+71 -0

0 comment

3 changed files

pr created time in 3 days

push eventsukeesh/Jarvis

martins6

commit sha 6f6edb5a71d6c62a1bd4307bfab91e38a9bfa667

Creating the doc for the market plugin

view details

martins6

commit sha c4c33c7e51d44d083156b1cb87e4203a707b0c7b

Create both plugins

view details

pnhofmann

commit sha b3e95ac50ee5e0048866c8bbd19476ee6d42b1df

Market Place: Load plugins in own directory

view details

push time in 4 days

PR merged sukeesh/Jarvis

Marketplace feature! Two new plugins "market find" and "market buy"!

As discussed in the #801 the idea for a marketplace would be a nice addition to the Jarvis community. I've built two new plugins which allow the user to list features ("market find") and also to install new plugins from Github repositories ("market buy"). All the codes should be spotted in the Github Topics and follow the main Jarvis branch. All the documentation and proposal is written in the PLUGINS_MARKETPLACE.md.

An example of basket of plugin is found here. (it is also an template repo.) This is a plugin to read your LinkedIn feed, it needs the Chrome browser and your credentials.

If something isn't clear in the plugins or in the general idea, please let me know! I shall try to explain better.

PS: Of course, there is lots of room for improvement!! Like how to install the necessary requirements without using the "python installer .", etc.

+168 -1

8 comments

6 changed files

Martins6

pr closed time in 4 days

pull request commentsukeesh/Jarvis

Marketplace feature! Two new plugins "market find" and "market buy"!

Like the "Duplicated plugin workspace!" warning.

Sorry about that! This warning is completely unrelated to your changes ;). Did not notice, there are two workspace-plugins, since one wasn't loaded because of '@require(native='wmctrl')'

Also, could you explain it to me how would jarvis be able to load the plugins inside the folders on the "marketplace" folder?

Because it's added to the search-path:

diff --git a/jarviscli/Jarvis.py b/jarviscli/Jarvis.py
index dba47287..23f0eb13 100644
--- a/jarviscli/Jarvis.py
+++ b/jarviscli/Jarvis.py
@@ -52,7 +52,7 @@ class Jarvis(CmdInterpreter, object):
 
     def __init__(self, first_reaction_text=first_reaction_text,
                  prompt=prompt, first_reaction=True,
-                 directories=["jarviscli/plugins", "custom"]):
+                 directories=["jarviscli/plugins", "custom", "marketplace"]):
         directories = self._rel_path_fix(directories)
 
         if sys.platform == 'win32':

=> Then I'd say; let's merge! Thanks, again!

Martins6

comment created time in 4 days

issue commentsukeesh/Jarvis

fix error on matrix_add

Thanks for reporting this issue ;).

ropoko

comment created time in 4 days

issue commentseatgeek/fuzzywuzzy

Fuzzywuzzy 4x slower *with* python-Levenshtein installed

We have a benchmark script here: https://github.com/seatgeek/fuzzywuzzy/blob/master/benchmarks.py

I assume there is some way to have these get reported back somewhere, so would be good to get them to run in CI and see if the benchmarks still hold true. Its possible that using python-levenshtein is slower for some class of strings and not others.

Hooloovoo

comment created time in 5 days

pull request commentsukeesh/Jarvis

Marketplace feature! Two new plugins "market find" and "market buy"!

So, @pnhofmann , I tried to implement your codes and got all sort of weird things. Like the "Duplicated plugin workspace!" warning. And also my path were all messed up! It kept pointing to my home directory, like "/home/adriel_martins". So I think it is better that you implement this so I could learn from it!

My two ideas are very simple.

  1. Delete all non .py files in the git clone process. In order to maintain a certain "hygiene" in the marketplace. No weird things whatsoever.

     # Installing dependencies and removing unwanted files
     basket_files = []
     for root, dirs, files in os.walk(plugin_dir):
         if '.git' in root:
             continue
         else:
             for f in files:
                 if f == 'requirements.txt':
                     os.system('cd ' + self.PATH_TO_JARVIS + ' && env/bin/pip install -U -r ' + str(Path(root) / f))
                     os.remove(plugin_dir / f)
                 if '.py' not in f:
                     os.remove(plugin_dir / f)
                 else:
                     basket_files.append(f)
     os.rmdir(plugin_dir / '.git')
    
  2. Mantain a log of downloaded (and, in the future, removed baskets of plugins!)

     # Adding log of baskets bought.
     path = 'jarviscli/data/marketplace_history.csv'
     with path.open('a') as csv_file:
             writer = csv.writer(csv_file)
             writer.writerow([s, str(datetime.datetime.now()), 'installed', basket_files])
    

Well, best regards! I'm execited to see the jarvis project grow! And if there is any more doubts you can contact me!

Martins6

comment created time in 5 days

issue openedsukeesh/Jarvis

fix error on matrix_add

after inputting the dimensions of the matrix if you input something different from a number this error appears:

issue

created time in 9 days

issue commentsukeesh/Jarvis

New feature Read out pdf file

I think pypdf2 and further pyttsx might come handy.

TobiOkanlawon

comment created time in 9 days

push eventTalAter/annyang

Tal Ater

commit sha 647f84220c3438c17e7268c3207499d3790eac23

Grammar improvement from commit 254db72 implemented more broadly

view details

Tal Ater

commit sha bbddbac42d0f5db56e22db52fc477e57dad3ef21

Update copyright year

view details

push time in 13 days

issue commentsukeesh/Jarvis

No basic commands accepted

Related to #424

dev-branch contains some improvements.

If you like, just really write done some example of common sentence you would like to use with Jarvis. Would be useful for testing ;).

Alenjojo

comment created time in 14 days

issue openedthundercomb/poetrydb

Cannot find proper information related to endpoints for different REST operations

Hi,

Came across this. Amazing job. Great going.

Can you please share how to use this API with little more information for GET, POST, PUT methods?

Thanks in advance.

created time in 15 days

issue commentsukeesh/Jarvis

No basic commands accepted

Hi! Can you give an example what you mean with "basic common commands"?

like when i tested it out, i used the common sentences that we use daily so in that sense

Alenjojo

comment created time in 15 days

IssuesEvent

issue closedsukeesh/Jarvis

No basic commands accepted

Most of the basic common commands are not defined in the program

closed time in 15 days

Alenjojo

issue commentsukeesh/Jarvis

No basic commands accepted

Maybe he is referring to https://github.com/Alenjojo/Friday 😉

Alenjojo

comment created time in 15 days

pull request commentsukeesh/Jarvis

Marketplace feature! Two new plugins "market find" and "market buy"!

Oh, I'm Sorry - totally missed your post! Thanks anyway and even if it's a bit late, of course you too a happy new year ;).

Sure, happy to hear you have some more in mind ;). Yeah, I think the straightforward way is, I'll just keep this PR open a bit longer - yes, just commit into the marketplace branch.

(And of course feel free to copy-paste + adapt my 10 code lines from above)

Martins6

comment created time in 15 days

create barnchsukeesh/Jarvis

branch : dev

created branch time in 15 days

issue commentsukeesh/Jarvis

No basic commands accepted

Hi! Can you give an example what you mean with "basic common commands"?

Alenjojo

comment created time in 16 days

issue commentsukeesh/Jarvis

i am getting this error while opening bat file

Thanks for reporting this issue! And Sorry for long delay.

In any case, this is interesting... Maybe a version miss-match between nltk and the data? I'll think try to think of something...

LordCreative97

comment created time in 16 days

more