diff --git a/docs/libraries/python.markdown b/docs/libraries/python.markdown new file mode 100644 index 0000000..ad8c113 --- /dev/null +++ b/docs/libraries/python.markdown @@ -0,0 +1,131 @@ +Open Photo API / Python Library +======================= +#### OpenPhoto, a photo service for the masses +[![Build Status](https://api.travis-ci.org/photo/openphoto-python.png)](https://travis-ci.org/photo/openphoto-python) + +---------------------------------------- + +### Installation + python setup.py install + +---------------------------------------- + +### Credentials + +For full access to your photos, you need to create the following config file in ``~/.config/openphoto/default`` + + # ~/.config/openphoto/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 + +---------------------------------------- + +### How to use the library + +You can use the library in one of two ways: + + * Direct GET/POST calls to the server + * Access via Python classes/methods + + +#### Direct GET/POST: + + from openphoto import OpenPhoto + client = OpenPhoto() + resp = client.get("/photos/list.json") + resp = client.post("/photo/62/update.json", tags=["tag1", "tag2"]) + + +#### Python classes/methods + + from openphoto import OpenPhoto + client = OpenPhoto() + photos = client.photos.list() + photos[0].update(tags=["tag1", "tag2"]) + print photos[0].tags + +The OpenPhoto Python class hierarchy mirrors the [OpenPhoto API](http://theopenphotoproject.org/documentation) 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//update.json`` + + +### API Versioning + +It may be useful to lock your application to a particular version of the OpenPhoto API. +This ensures that future API updates won't cause unexpected breakages. + +To do this, add the optional ```api_version``` parameter when creating the client object: + + from openphoto import OpenPhoto + client = OpenPhoto(api_version=2) + +---------------------------------------- + + +### Using from the command line + +You can run commands to the OpenPhoto 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/openphoto/ 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 + + +#### Command line examples + + # Upload a public photo to the host specified in ~/.config/openphoto/default + openphoto -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.openphoto.me (unauthenticated access) + openphoto -h current.openphoto.me -p -e /photo/62/view.json -F 'returnSizes=20x20' + { + "code":200, + "message":"Photo 62", + "result":{ + "actor":"", + "albums":[ + "1" + ], + ... + ... + "path20x20":"http://current.openphoto.me/photo/62/create/36c0a/20x20.jpg", + "pathBase":"http://awesomeness.openphoto.me/base/201203/7ae997-Boracay-Philippines-007.jpg", + "permission":"1", + "photo20x20":[ + "http://current.openphoto.me/photo/62/create/36c0a/20x20.jpg", + 13, + 20 + ], + ... + ... + } + }