Skip to main content

Search the Mines directory

Project description

The Mines DirSearch website allows search of Mines personnel who have their directory information listed in the Banner system. This is a convenient Python interface to that website.

Author:

Jack Rosenthal

Requires:

Python 3.4 or greater, Beautiful Soup 4.4.0 or greater, Requests

License:

MIT

Contributing:

See CONTRIBUTING.rst.

Installing

Clone the repository and install:

$ pip install . --user

Or install from PyPI:

$ pip install csmdirsearch --user

Usage from Python

Use search(query) to search for a user by either (part of) a username, or (part of) a full name. search is a generator that will yield unique Person objects. Typical attributes on this object include name, business_email, major, classification, and department; however, only the name attribute is guaranteed to exist.

Each Person object also has a few properties:

username:

Based on the business_email (and potentially more information in the future), a “best guess” for the username of the user, otherwise None.

desc:

An automatic, brief description of the person, for example: Undergraduate Student, Computer Science.

The name of each person is also a special Name type, containing first, last, and nick attributes. You can convert a name to a string using the strfname function, or use str(person.name) for a “reasonable default”:

>>> name = Name("Rosenthal, Jack (NickName)")
>>> name.strfname("{first} {last}")
'Jack Rosenthal'
>>> str(name)
'Jack (NickName) Rosenthal'

There’s also convenience properties to be used in strfname:

pfirst:

Short for “preferred first”. This will be set to nick if there is a nick name, first otherwise.

nickp:

Short for “nick, wrapped in parens, if there is one”. This will be set to ' (nick)' if there’s a nick name, '' otherwise.

Example:

>>> name = Name("Rosenthal, Jack (NickName)")
>>> name.strfname("{pfirst} {last}")
'NickName Rosenthal'
>>> name.strfname("{first}{nickp} {last}")
'Jack (NickName) Rosenthal'

Here is an example:

import csmdirsearch
for person in csmdirsearch.search("Jack Rosenthal"):
    print(person.name, person.desc)

If you wish to limit your search to just a partial username (no real names), use the search_by_partial generator instead of search.

Finally, if you wish to limit your search to just a partial full name (most efficent), use the search_by_name generator instead of search. This generator also has means to limit a search to a certain classification or department. Read the source code for more details.

Usage from the Command Line

This is wicked simple:

$ dirsearch "Jack Rosenthal"
Jack Rosenthal
Undergraduate Student
Business Email: ...

If you wish to use the search_by_name or search_by_partial functions to limit the scope of the input, use --input=name or --input=partial respectively:

$ dirsearch --input=partial "jrosent"
Jack Rosenthal
...

Usage from Mutt

Add to your .muttrc:

set query_command = "dirsearch --format=mutt %s"

Then press Q to compose using a search, or ^T while writing a name or address.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csmdirsearch-0.1.0.tar.gz (7.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page