Code Monkey home page Code Monkey logo

cambd's Introduction

cambd

Cambridge dictionary cli app

cambd, Cambridge dictionary cli app

Features

  • Autosuggest related words on typo.
  • Interactive suggestion menu to select words from in the above case.
  • Handles past and past-particle words. Returns the original word definition.
  • No API/database involved.
  • A Persistent caching mechanism. This avoids looking up already searched words; hence fast results.

Uses python's integrated sqlite3 for maintaning a persistent cache.

Installation

pip install cambd

Usage

Usage: cambd [OPTIONS] WORD

Options:
  -a, --show-all         Show all the definitions of a word.
  -d, --dictionary TEXT  Determine which dictionary region to use (uk, us) [default: uk]
  -v, --verbose          Show extra word info ie, word codes & labels. [ex: A2 informal]
  -c, --clear-cache      Clear all the stored cache from system.
  --version              Show the version and exit.
  --help                 Show this message and exit.

By default it caches words in $HOME/.cambd-cache.db. To clear the cache if needed
run cambd --clear-cache. It is strongly recommended to not modify this file manually.

FAQ

  1. Why scrape instead of using a Dictionary API?

TBH, As a non native english speaker, I find the cambridge dictionary the most easy to understand. But they don't have any public free API with all the features I want like getting suggestions on misspelled words and give both US and UK definations etc. So I ended up building this cli tool with basic scrapping for my own usecase as I am a terminal power user and don't want to leave the terminal, go to browser, open a new tab just to search for a word meaning.

LICENSE

MIT License © Rocktim Saikia 2022

cambd's People

Contributors

biobox avatar rocktimsaikia avatar xerenahmed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

cambd's Issues

Fails on the word "sappy"

I use CPython version 3.9.10.
I get the following stack trace when running cambd sappy:

Traceback (most recent call last):
  File "/home/daniel/.local/python/bin/cambd", line 8, in <module>
    sys.exit(main())
  File "/home/daniel/.local/python/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/daniel/.local/python/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/daniel/.local/python/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/daniel/.local/python/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/daniel/.local/python/lib/python3.9/site-packages/cambd/cambd.py", line 210, in main
    print_definition(word_filtered, wanted_definitions[0], True, verbose)
IndexError: list index out of range

Error when use word 'substitute'

cambd.py", line 85, in get_definitions
    definition = dcon.find(attrs={"class": "ddef_d"}).get_text()
AttributeError: 'NoneType' object has no attribute 'get_text'

Add flag to show all definitions

Currently, it shows only two definitions per word by default. We want to add a flag that will show the rest of the definitions.

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.