Skip to main content

JupiterEd message scraping CLI and importable Python library.

Project description

Jed API

CLI scraper for JupiterEd messages, including:

  • full message content
  • attachment links
  • sender profile photo URL
  • fast "check for new messages" mode

Features

  • Headless by default (no browser window).
  • Optional headed mode for debugging (--headed).
  • Filter scraping by newest count, days since, or date range.
  • Detect new inbox messages with persistent state tracking.
  • Optionally fetch full content for only new messages.
  • JSON export support.

Requirements

  • Python 3.10+
  • Google Chrome installed

Install dependencies:

pip install -r requirements.txt

Install as an importable package (recommended for using in other projects):

pip install -e .

Configuration

Copy config.example.json to config.json in the project root, then fill in your values.

{
  "name": "YOUR_USERNAME",
  "password": "YOUR_PASSWORD",
  "school": "YOUR_SCHOOL",
  "city": "YOUR_CITY",
  "state": "YOUR_STATE",
  "school_id": "OPTIONAL"
}

school_id can exist in the file, but current CLI flow does not require it. config.json is ignored by git to keep credentials out of the repository.

Usage

python main.py [--headless|--headed] [--json-out FILE] <command> [options]

Commands

  • newest <count>: fetch newest N messages.
  • since <days> [--limit N]: fetch messages from last N days.
  • range --from YYYY-MM-DD [--to YYYY-MM-DD] [--limit N]: fetch messages in date range.
  • all [--limit N]: fetch all available messages.
  • check-new [--state-file FILE] [--no-update] [--fetch]: detect unseen inbox messages.

Examples

Fetch newest 10:

python main.py newest 10

Fetch last 7 days, save JSON:

python main.py since 7 --json-out messages.json

Check for new messages only:

python main.py check-new

Check for new messages and fetch full details for those new ones:

python main.py check-new --fetch --json-out new_messages_full.json

Use visible browser window (debug mode):

python main.py --headed check-new --fetch

Library Usage

from jed_api import JupiterEdClient

with JupiterEdClient(config_path="config.json", headless=True) as client:
    messages = client.newest(5)
    print(messages[0]["subject"] if messages else "No messages")

Check for new messages and fetch full content:

from jed_api import JupiterEdClient

with JupiterEdClient(config_path="config.json") as client:
    result = client.check_new_messages(fetch=True)
    print("new:", len(result["new_messages"]))

Use direct credentials instead of config.json:

from jed_api import JupiterEdClient

credentials = {
    "name": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "school": "YOUR_SCHOOL",
    "city": "YOUR_CITY",
    "state": "YOUR_STATE",
}

with JupiterEdClient(credentials=credentials, headless=True) as client:
    data = client.since(7, limit=20)

New Message State File

check-new stores seen message keys in message_state.json by default.

  • First run: most/all inbox messages may be marked as new.
  • Later runs: only unseen messages are returned.
  • Use --no-update to test without modifying state.

Output Format

Scraped message JSON objects include:

  • time
  • parsed_time
  • sender
  • sender_pfp
  • subject
  • recipients
  • body
  • attachments (list of {name, url})
  • url

Notes

  • This project uses Selenium and website UI behavior can change over time.
  • Keep credentials private. Do not commit real credentials to GitHub.

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

jed_api-0.1.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jed_api-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file jed_api-0.1.0.tar.gz.

File metadata

  • Download URL: jed_api-0.1.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jed_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 51b43083fcdc08a908ad5eea85bf3462671f67a36eb23791050fb56d28093ab4
MD5 76181ddcb0b7fcf6e1cb5eb020a4ba17
BLAKE2b-256 6dc95c018db449386208218cd3e567d1adb2a82b024b1ccdc55da74d52952cdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for jed_api-0.1.0.tar.gz:

Publisher: publish-pypi.yml on x0rgo/jed-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jed_api-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jed_api-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jed_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f34b11b0d4d1c28eaf3b1d690b87ef065b8e6816d080336444d6662b2b3af99
MD5 72ba0a108eb850a11c33f5dd6d4024db
BLAKE2b-256 47320ad205297271ef33c7e923dbec8771b5acff4c56c2618c01cfd0f1bf01de

See more details on using hashes here.

Provenance

The following attestation bundles were made for jed_api-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on x0rgo/jed-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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