Openphoto - python
Find a file
2013-09-07 13:59:55 +01:00
bin Renamed OpenPhoto to Trovebox 2013-07-19 17:46:30 +01:00
tests Put the album.photos attribute back, since this is used for album.view when includeElements=True. 2013-09-07 11:44:03 +01:00
trovebox Put the album.photos attribute back, since this is used for album.view when includeElements=True. 2013-09-07 11:44:03 +01:00
.coveragerc Add coverage.py configuration 2013-08-29 14:37:58 -07:00
.gitignore Add coverage.py configuration 2013-08-29 14:37:58 -07:00
.travis.yml Use pylint-patcher rather than my forked version of Pylint 2013-09-07 13:59:55 +01:00
CHANGELOG Add Changelog 2013-08-16 18:40:42 +01:00
LICENSE Fix #9 - include LICENSE file 2012-04-16 19:16:28 -04:00
MANIFEST.in Add MANIFEST.in, to be totally sure that README.rst gets packaged 2013-08-16 17:58:18 +01:00
README.rst Remove coverage badge until master branch is on coveralls.io 2013-09-01 14:16:12 +01:00
run_functional_tests Added HTTPS functional tests 2013-09-01 18:10:24 +01:00
setup.py Add new sub-packages to setup.py. Don't install README.rst. 2013-09-01 12:45:48 +01:00
tox.ini Run coverage as part of test suite. Travis-CI reports coverage results to coveralls.io. 2013-09-01 13:23:12 +01:00

=======================
Trovebox Python Library
=======================
(Previously known as openphoto-python)

.. image:: https://travis-ci.org/photo/openphoto-python.png?branch=master
   :alt: Build Status
   :target: https://travis-ci.org/photo/openphoto-python

.. 
   (commented out until master is on coveralls.io)
   .. image:: https://coveralls.io/repos/photo/openphoto-python/badge.png?branch=master
      :alt: Coverage Status
      :target: https://coveralls.io/r/photo/openphoto-python?branch=master
..

.. image:: https://pypip.in/v/trovebox/badge.png
   :alt: Python Package Index (PyPI)
   :target: https://pypi.python.org/pypi/trovebox

This library works with any Trovebox server, either
`self-hosted <https://github.com/photo>`__, or using the hosted service at
`trovebox.com <http://trovebox.com>`__.
It provides full access to your photos and metadata, via a simple
Pythonic API.

Installation
============
::

    pip install trovebox

Documentation
=============
See the `Trovebox API Documentation <https://trovebox.com/documentation>`__
for full API documentation, including Python examples.

All development takes place at the `openphoto-python GitHub site <https://github.com/photo/openphoto-python>`__.

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

Using the library
=================
::

    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 <https://trovebox.com/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/<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"])

API Versioning
==============
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)

SSL Verification
================
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)

Commandline Tool
================
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

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