Skip to main content

An app to capture and process webcam data.

Project description

Camera Capture

A Python application to periodically capture images from a set of webcams of the Aero Club of east Africa: Kenya webcams (https://webcams.aeroclubea.com/index.html), saving them in a structured folder hierarchy. The configuration is managed via a simple CLI and a config file in your user profile.


How the App Works

  1. Configuration
    The app uses a configuration file (camera.config) in your user profile directory to store settings such as the root folder for saving images, capture interval, and start/end times.

  2. Camera Locations
    Camera URLs and location names are loaded from a user provided CSV file (default = camera_locations.txt). Each row should have a url and a location column. The user is free to add/remove locations at will.

  3. Image Capture
    For each camera, the app downloads the latest image and saves it in a folder structure:
    root_folder/location/YYYY/MM/DD/ The root_folder is read from the configuration file when starting the app.

  4. Scheduling
    The app can run once, repeat for the current day, or repeat indefinitely, based on your command line options. For all locations the scheduled start and end time per day are equal.

    The capture moments are equally spaced after the start time and will stop on or before the end time, never after.

  5. CLI Configuration
    You can list and update configuration settings using the CLI.


Command Line Options

The app provides several commands and subcommands:

Main Commands

  • run
    Capture images from all cameras once.

    python -m camera run
    
  • run_repeat
    Repeat capturing images at the configured interval for the current day.

    python -m camera run_repeat
    
  • run_repeat_no_limit
    Repeat capturing images at the configured interval indefinitely.

    python -m camera run_repeat_no_limit
    

Config Subcommands

  • config list
    List current configuration settings.

    python -m camera config list
    
  • config update
    Update a configuration setting.
    Example: change the image save path

    python -m camera config update image_save_path D:/CameraImages
    

    Example: change the capture interval to 60 minutes

    python -m camera config update interval 60
    

    Example: change the start time to 07:00

    python -m camera config update start 07:00
    

    Example: change the end time to 19:00

    python -m camera config update end 19:00
    

[!TIP] When the app is installed with pip install camera_capture, python -m camera can be replaced with capture.

For example: capture config list instead of python -m camera config list


Configuration File

The configuration file (camera.config) is stored in your user profile folder (e.g., C:\Users\<username>\camera.config). When the app is first started the configuration file will be created if it does not yet exist. The config file is stored in JSON format. Below is an example file with all currently accepted keys:

{
  "image_save_path": "D:/CameraImages",
  "start": "06:30",
  "end": "18:30",
  "interval": 30,
  "locations_file":"camera_locations.txt",
  "verbose":False
}

Currently these keys are supported:

  • image_save_path: The root folder for saving all the captured images.
  • start: local time to start the capture (HH:MM)
  • end: local time to end the capture (HH:MM)
  • interval: time in minutes between captures.
  • locations_file: name of the file containing the names of camera locations and their URLs. The file is expected in the current folder.
  • verbose: enable verbose output for debugging and information

You can use the CLI to update these values, or manually edit the file.


Folder Structure

Images are saved in a hierarchy:

<image_save_path>/<location>/<year>/<month>/<day>/<location>_<timestamp>.jpg

The timestamp is in local time.


Example Usage

  • Capture all cameras once:

    python -m camera run
    
  • List configuration:

    python -m camera config list
    
  • Update interval:

    python -m camera config update interval 60
    

Requirements

  • Python 3.7+
  • Depends on: requests, pandas, beautifulsoup4

Installing

pip install camera_capture

Logging

Logs are written to camera_capture.log in the current directory.


Troubleshooting

  • Use python -m camera config list to check your configuration.
  • Use python -m camera config update <key> <value> to fix any settings.
  • Ensure camera_locations.txt exists and has url and location columns.

Example camera_locations.txt file:

url,location
https://webcams.aeroclubea.com/Nairobi/nbo_wilsonE.html,Wilson Airport E

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

camera_capture-1.0.3.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

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

camera_capture-1.0.3-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file camera_capture-1.0.3.tar.gz.

File metadata

  • Download URL: camera_capture-1.0.3.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for camera_capture-1.0.3.tar.gz
Algorithm Hash digest
SHA256 875028b2494dd90ac77415d00b6cb21cf5b78aa5ccabfae92d308b6f24c913aa
MD5 e1d4b85bea8f548a113b574d87d08e36
BLAKE2b-256 b7392e4921c45112ee81416d4157ae3273cac8ab7f8d6e50d4cbc77607451cc7

See more details on using hashes here.

File details

Details for the file camera_capture-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: camera_capture-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for camera_capture-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 51238325094fb53606ee1583ba3ef6aeb89f5af3f02ad05ef086c3276c5a49ba
MD5 ec28a6a09e7de34a000e1398091f415e
BLAKE2b-256 a0624cc378645beb24c0c18c125fc28dc5b31c18c8b5345de6a6babab09f67a6

See more details on using hashes here.

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