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.


Requirements

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

Installing

pip install camera_capture

[!CAUTION]

When installing on Windows, preferable make sure Python is installed from https://python.org. When Python is installed from the Microsoft Store, pip install camera-capture will install, but not fully adjust the Path environment variable. The installation issues a warning (the exact path is likely not the same, but it should look similar):

WARNING: The script normalizer.exe is installed in <userprofile\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script capture.exe is installed in <userprofile>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

To make full use of the camera-capture feature consider following this advice.


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.

    capture run
    

    Or, as fallback (see the caution above)

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

    capture run_repeat
    

    Or

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

    capture run_repeat_no_limit
    

    Or

    python -m camera run_repeat_no_limit
    

Config Subcommands

  • config list
    List current configuration settings.

    capture config list
    
  • config update
    Update a configuration setting.
    Example: change the image save path

    capture config update image_save_path D:/CameraImages
    

    Example: change the capture interval to 60 minutes

    capture config update interval 60
    

    Example: change the start time to 07:00

    capture config update start 07:00
    

    Example: change the end time to 19:00

    capture config update end 19:00
    

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:

    capture run
    
  • List configuration:

    capture config list
    
  • Update interval:

    capture config update interval 60
    

Logging

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


Troubleshooting

  • Use capture config list to check your configuration.
  • Use capture 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.4.tar.gz (13.8 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.4-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: camera_capture-1.0.4.tar.gz
  • Upload date:
  • Size: 13.8 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.4.tar.gz
Algorithm Hash digest
SHA256 25c3b09da13cd887e2bd62c3654125c2080646e8361bdfb6e14079ae2c0a3f12
MD5 65b813577413b9832b658259378efbd1
BLAKE2b-256 8788a36859dd73923adc316cbb68e42655237bc9340d7895cd10e64df2a4a984

See more details on using hashes here.

File details

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

File metadata

  • Download URL: camera_capture-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 13.3 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6ba44bc9b81008a420d5169f0768b54fbcbbd565a93346b14dcd5edc96f06f22
MD5 840e377a0790fa5eaff1d3ea953a72f7
BLAKE2b-256 48da85e2f4b725988b04c57e0ad11361df9db6209df17c675e7a2c46fd21ea14

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