(Previously known as openphoto-python)
This library works with any Trovebox server, either self-hosted, or using the hosted service at trovebox.com. It provides full access to your photos and metadata, via a simple Pythonic API.
pip install trovebox
See the Trovebox API Documentation for full API documentation, including Python examples.
All development takes place at the openphoto-python GitHub site.
For full access to your photos, you need to create the following config
file in ~/.config/trovebox/default
:
# ~/.config/trovebox/default host = your.host.com consumerKey = your_consumer_key consumerSecret = your_consumer_secret token = your_access_token tokenSecret = your_access_token_secret
The config_file
switch lets you specify a different config file.
To get your credentials:
- Log into your Trovebox site
- Click the arrow on the top-right and select 'Settings'
- Click the 'Create a new app' button
- Click the 'View' link beside the newly created app
from trovebox import Trovebox client = Trovebox() photos = client.photos.list() photos[0].update(tags=["tag1", "tag2"]) print(photos[0].tags)
The Trovebox Python class hierarchy mirrors the Trovebox API endpoint layout. For example, the calls in the example above use the following API endpoints:
client.photos.list() -> /photos/list.json
photos[0].update() -> /photo/<id>/update.json
You can also access the API at a lower level using GET/POST methods:
resp = client.get("/photos/list.json") resp = client.post("/photo/62/update.json", tags=["tag1", "tag2"])
It may be useful to lock your application to a particular version of the Trovebox API. This ensures that future API updates won't cause unexpected breakages. To do this, configure your Trovebox client as follows:
client.configure(api_version=2)
If you connect to your Trovebox server over HTTPS, its SSL certificate is automatically verified. You can configure your Trovebox client to bypass this verification step:
client.configure(ssl_verify=False)
You can run commands to the Trovebox API from your shell!
These are the options you can pass to the shell program:
--help # Display help text -c config_file # Either the name of a config file in ~/.config/trovebox/ or a full path to a config file -h hostname # Overrides config_file for unauthenticated API calls -e endpoint # [default=/photos/list.json] -X method # [default=GET] -F params # e.g. -F 'title=my title' -F 'tags=mytag1,mytag2' -p # Pretty print the json -v # Verbose output --version # Display the current version information
Upload a public photo to the host specified in `~/.config/trovebox/default`
:
trovebox -p -X POST -e /photo/upload.json -F 'photo=@/path/to/photo/jpg' -F 'permission=1' { "code":201, "message":"Photo 1eo uploaded successfully", "result":{ "actor":"user@example.com", "albums":[], ... ... } }
Get a thumbnail URL from current.trovebox.com (unauthenticated access):
trovebox -h current.trovebox.com -p -e /photo/62/view.json -F 'returnSizes=20x20' { "code":200, "message":"Photo 62", "result":{ "actor":"", "albums":[ "1" ], ... ... "path20x20":"http://current.trovebox.com/photo/62/create/36c0a/20x20.jpg", "pathBase":"http://awesomeness.trovebox.com/base/201203/7ae997-Boracay-Philippines-007.jpg", "permission":"1", "photo20x20":[ "http://current.trovebox.com/photo/62/create/36c0a/20x20.jpg", 13, 20 ], ... ... } }