Openphoto - python
Find a file
sneakypete81 54da488b4e For file POSTs, rather than signing params and including them in the multipart
form data, just include them as query parameters. This means they'll
be signed automatically by requests_oauthlib.

Non-file POSTs still need the parameters to be sent as form data.
2013-05-25 11:33:40 +01:00
openphoto For file POSTs, rather than signing params and including them in the multipart 2013-05-25 11:33:40 +01:00
scripts https://github.com/openphoto/openphoto-python/issues/4 2012-01-22 21:58:12 -08:00
tests Correct config test path 2013-05-18 13:09:29 +01:00
.gitignore Using tox, for the ability to test across multiple Python versions 2013-05-18 13:09:29 +01:00
LICENSE Fix #9 - include LICENSE file 2012-04-16 19:16:28 -04:00
README.markdown Allow -h to be used to specify the hostname 2013-05-07 08:55:44 +01:00
run_tests Using tox, for the ability to test across multiple Python versions 2013-05-18 13:09:29 +01:00
setup.py Updated to use requests and requests_oauthlib 2013-05-25 11:33:40 +01:00
tox.ini Add Python2.6 to tox 2013-05-18 13:09:29 +01:00

Open Photo API / Python Library

OpenPhoto, a photo service for the masses


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