Openphoto - python
Find a file
2013-06-30 17:34:41 +01:00
.travis Removed config secrets from travis setup, since we're now only running the unit tests 2013-06-29 17:02:12 +01:00
openphoto Delete methods should raise exception on failure, rather than returning False 2013-06-30 17:34:41 +01:00
scripts https://github.com/openphoto/openphoto-python/issues/4 2012-01-22 21:58:12 -08:00
tests Delete methods should raise exception on failure, rather than returning False 2013-06-30 17:34:41 +01:00
.gitignore Using tox, for the ability to test across multiple Python versions 2013-05-18 13:09:29 +01:00
.travis.yml Travis now tests all supported Python versions 2013-06-29 20:32:56 +01:00
LICENSE Fix #9 - include LICENSE file 2012-04-16 19:16:28 -04:00
README.markdown Merge branch 'python3' into development 2013-06-29 11:23:23 +01:00
run_functional_tests Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
setup.py Version bump to 0.3 2013-05-25 11:34:32 +01:00
tox.ini Latest requests_oauthlib fixes a Unicode bug, so we don't need to ask requests to decode anymore 2013-06-29 21:24:33 +01:00

Open Photo API / Python Library

OpenPhoto, a photo service for the masses

Build Status


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 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

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
        ],
        ...
        ...
    }
}