Giter Club home page Giter Club logo

i8-terminal's Introduction

i8 Terminal: Modern Market Research powered by the Command-Line

i8 terminal is a modern python-based terminal application that gives you superior power and flexibility to understand and analyze the market. The interface is simple, efficient, and powerful: it's command-line!

i8 Terminal is backed by the Investoreight Platform and currently covers major U.S. exchanges.

Features and Highlights

  • Prompt Market Insights and Analysis
  • Custom Charting, Reporting, and Visualizations
  • Powerful and Customizable Screening
  • Easy-to-Use and Extendable
  • Backed by the Investoreight Platform

i8 Terminal Features

i8 Terminal Commands

i8 Terminal offers some built-in commands to analyze and research the market. You can also create your own custom commands or extend the existing command. Find an overview of commands here.

Check out the following video to see some more commands from i8 Terminal:

i8 Terminal Sample Commands

Installing i8 Terminal

Note: i8 Terminal currently only supports Python 3.9+

If you have Python 3 installed, you can simply install the tool with Python pip:

pip install i8-terminal

We recommend installing i8 terminal in an isolated virtual environment. This can be done as follows:

On Mac OS or Linux:

python3 -m venv .venv
source .venv/bin/activate
pip install i8-terminal

On Windows:

python3 -m venv .venv
source .venv/Script/activate
pip install i8-terminal

Install i8 Terminal using the Windows Installer

On Windows, you can also install i8 Terminal using the Windows executable. Check here if you want to download the windows executable.

How to Contribute i8 Terminal

The preferred workflow for contributing to i8 Terminal is to clone the GitHub repository, develop on a branch and make a Pull Request.

See here for guidelines for contributors.

i8 Terminal is built on top of the Investoreight Core API.

How to Run i8 Terminal

You can verify whether i8 Terminal is installed successfully by running i8 script:

i8

If you are using the application for the first time, you should first sign in. Run the following command, which will open a browser and redirect you to the investoreight platform to sign in (or sign up):

i8 user login

After a successful login, the most convenient way to use i8 terminal is to use its own shell:

i8 shell

You should now be able to run i8 commands. Check our documentation for more details.

Documentation

Click here to find more details about the commands.

i8-terminal's People

Contributors

sadeghhadjigi avatar investoreight avatar mehrdadrafiei avatar panteahk avatar

Stargazers

 avatar  avatar EmuPorridge avatar 3zbumban avatar  avatar SomwareHR avatar  avatar J99-work avatar João Henrique Assunção Fernandes avatar Gintama avatar Ari Oliveira avatar Shantanu Oak avatar Tony Thell avatar Anubhav Tiwari avatar Evgeny Pogrebnyak avatar JerodG avatar Markus avatar Brendan Bennett avatar  avatar Sergey Keller avatar Hafez Jokar avatar STARSCREAM SAYS avatar Matias Emanuel Ferrigno avatar Steven avatar Christian Korneck avatar  avatar  avatar Santtu Järvi avatar Marc G avatar Alex Powers avatar Navid Haghighat avatar Fariman Kashani avatar  avatar  avatar 0xKoios avatar  avatar Witalij avatar Max van Mulken avatar Andrew avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

i8-terminal's Issues

No module named 'rich'

On sudo pip install i8-terminal and pip install i8-terminal -U I get:

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: i8-terminal in ./.local/lib/python3.10/site-packages (0.2.64)
Collecting i8-terminal
  Downloading i8-terminal-0.2.66.tar.gz (179 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 179.3/179.3 kB 1.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [19 lines of output]
      Traceback (most recent call last):
        File "/usr/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-qllafqf8/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 338, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/tmp/pip-build-env-qllafqf8/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 320, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-qllafqf8/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 484, in run_setup
          super(_BuildMetaLegacyBackend,
        File "/tmp/pip-build-env-qllafqf8/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 335, in run_setup
          exec(code, locals())
        File "<string>", line 5, in <module>
        File "/tmp/pip-install-pe1eqq9j/i8-terminal_92af71b13f9e4b34962e4db97f9779d8/i8_terminal/utils.py", line 5, in <module>
          from rich.console import Console
      ModuleNotFoundError: No module named 'rich'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Installing rich explicitly does not change anything.

Unhandled error for missing api key

Traceback (most recent call last):
  File "/home/jneidel/.local/bin/i8", line 8, in <module>
    sys.exit(main())
  File "/home/jneidel/.local/lib/python3.10/site-packages/i8_terminal/main.py", line 161, in main
    cli(obj={})
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 1655, in invoke
    sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 920, in make_context
    self.parse_args(ctx, args)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 1378, in parse_args
    value, args = param.handle_parse_result(ctx, opts, args)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 2360, in handle_parse_result
    value = self.process_value(ctx, value)
  File "/home/jneidel/.local/lib/python3.10/site-packages/click/core.py", line 2322, in process_value
    value = self.callback(ctx, self, value)
  File "/home/jneidel/.local/lib/python3.10/site-packages/i8_terminal/common/stock_info.py", line 53, in validate_ticker
    if value and value.replace(" ", "").upper() not in set(get_stocks_df()["ticker"]):
  File "/home/jneidel/.local/lib/python3.10/site-packages/i8_terminal/common/stock_info.py", line 36, in get_stocks_df
    results = investor8_sdk.StockInfoApi().get_all_active_companies()
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/api/stock_info_api.py", line 53, in get_all_active_companies
    (data) = self.get_all_active_companies_with_http_info(**kwargs)  # noqa: E501
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/api/stock_info_api.py", line 108, in get_all_active_companies_with_http_info
    return self.api_client.call_api(
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/api_client.py", line 316, in call_api
    return self.__call_api(resource_path, method,
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/api_client.py", line 148, in __call_api
    response_data = self.request(
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/api_client.py", line 338, in request
    return self.rest_client.GET(url,
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/rest.py", line 228, in GET
    return self.request("GET", url,
  File "/home/jneidel/.local/lib/python3.10/site-packages/investor8_sdk/rest.py", line 222, in request
    raise ApiException(http_resp=r)
investor8_sdk.rest.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Server': 'nginx/1.14.0 (Ubuntu)', 'Date': 'Sat, 25 Feb 2023 13:34:50 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Expires': '-1'})
HTTP response body: b'Paramter `apiKey` is not provided or not valid!'

To reproduce: i8 company details -k CNC on a fresh install (no i8 user login).

Why not using OpenBB Terminal instead?

Hey,

I'm behind the team of OpenBB and was wondering why are you building a similar terminal to what we currently have at OpenBB Terminal.

Is there anything that our current terminal isn't supporting that you would like us to?

Let me know if you want to have a chat :)

Can't `user login`

i8 user login -> https://investoreight.com/account/authorize?reqId=REQID&redirectUrl=http://localhost:8050

screenshot_23-02-25_14:46:43

Authorize redirects to https://investoreight.com/Home/Error

The following request hits a 302:

POST /Account/authorize HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 294
Content-Type: application/x-www-form-urlencoded
Cookie: COOKIE
Host: investoreight.com
Origin: https://investoreight.com
Pragma: no-cache
Referer: https://investoreight.com/account/authorize?reqId=REQID&redirectUrl=http://localhost:8050
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Sec-GPC: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
sec-ch-ua: "Chromium";v="110", "Not A(Brand";v="24", "Brave";v="110"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"

Fix tagline

"Modern Market Research with the Power of Command-Line" ->
"Modern Market Research with the Power of the Command-Line" or "Modern Market Research powered by the Command-Line"

Sounds weird without the "the".

Also i8 --help still has a different - probably the old - one: "Modern Market Research with the Power of Terminal"

After successful login there is a message "You need to login"

Step1 - Login

user login --terminal

Email: <%MyEmail%>
Password: <%MyPassword%>

User logged in successfully!

Step2 - Get some data

price list --ticker MSFT

You need to login before using i8 Terminal. Please login to i8 Terminal using user login command.

Misc

  • i8-terminal 0.2.6.2
  • Python 3.10.6
  • Ubuntu 22.04.2 LTS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.