Python bindings for the RGB Notes API
Project description
RGB Notes Python Library
The RGB Notes Python library provides convenient access to the RGB Notes API from applications written in the Python language. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses.
Documentation
See the API docs.
Installation
You don’t need this source code unless you want to modify the package. If you just want to use the package, just run:
pip install --upgrade rgbnotes
Install from source with:
python setup.py install
Requirements
Python 2.6+ or Python 3.3+ (PyPy supported)
Requests Module (PyPy supported)
Usage
The library needs to be configured with your account’s secret key which is available in your RGB Notes Settings.
Config
Edit rgb_api.conf located in rgbnotes
Copy and paste your client_email, client_id and client_key in the appropriate fields
For Developers
API v1
How to Create an Instance with config file: Config files with client_id and client_key can be put in one of those directories: /home/user.name/rgb_api.conf /etc/rgb_api.conf
>>> import rgbnotes
>>> api = rgbnotes.RGB_API(debug_http=True)
DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): rgbnotes.com
send: 'POST /api/token/client HTTP/1.1\r\nHost: rgbnotes.com\r\nConnection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: python-requests/2.14.2\r\nContent-Length: 58\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nclient_id=0123&client_key=0123456789abcdef0123456789abcdef'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Sat, 09 Sep 2017 12:55:11 GMT
header: Server: Apache/2.4.7 (Ubuntu)
header: X-Powered-By: PHP/5.5.9-1ubuntu4.22
header: Cache-Control: no-cache, must-revalidate
header: Expires: Fri, 23 Feb 1979 05:00:00 GMT
header: Content-Length: 200
header: Keep-Alive: timeout=5, max=100
header: Connection: Keep-Alive
header: Content-Type: application/json
DEBUG:requests.packages.urllib3.connectionpool:https://rgbnotes.com:443 "POST /api/token/client HTTP/1.1" 200 200
Load a Custom Config
You may wish to load a different config than the one that comes packaged and loaded by default by the API class. In that case you could do something like this.
>>> import rgbnotes
>>> rgbnotes.api_config.CONFIG_FILE = '/path/to/config.file'
>>> config = rgbnotes.api_config.load_config()
>>> # make an instance of the api
>>> api = rgbnotes.RGB_API(config=config, debug_http=True)
Load instance with client secrets directly
>>> import rgbnotes
>>> api = rgbnotes.RGB_API(client_id='1234',
client_key='123456abcdefghijk123567')
API Methods
Find Items
>>> api.find('project', ['title', '==', 'Gold Python'])
[{'description': 'Lorem ipsum dolor sit amet, consectetur adipiscing ', 'title': 'Gold Python', 'id': 1376, 'members': [177, 178], 'owner_id': 176}]
>>> api.find_one('project', ['title', '==', 'Gold Python'])
{'description': 'Lorem ipsum dolor sit amet, consectetur adipiscing ', 'title': 'Gold Python', 'id': 1376, 'members': [177, 178], 'owner_id': 176}
Project Files
>>> api.get_project_files(1376)
>>> from pprint import pprint
>>> pprint(rgb_api.project_files)
{u'filters': [],
u'pagination': {u'limit': 20,
u'offset': 0,
u'sort_by': u'date',
u'sort_dir': u'desc',
u'total': 2},
u'results': [{u'dateUploaded': u'2017-09-06 00:19:37',
u'description': u'Post file using token',
u'file': u'miss_fortune_surrender_league_anim_workshop.mp4',
u'filesize': 11877374,
u'filetype': u'video/mp4',
u'height': 576,
u'id': 1098,
u'project_id': 1376,
u'q_status': 50,
u'thumb': 1,
u'url': u'https://staging.rgbnotes.com/viewer/#1098',
u'user_id': 177,
u'width': 1024},
{u'dateUploaded': u'2017-08-05 01:47:02',
u'description': u'This assassin doesn\u2019t just strike from the shadows - he is the shadow. And they don\u2019t stand a chance.',
u'file': u'death_mark_league_animation.mp4',
u'filesize': 14902288,
u'filetype': u'video/mp4',
u'height': 576,
u'id': 1064,
u'project_id': 1376,
u'q_status': 50,
u'thumb': 1,
u'url': u'https://staging.rgbnotes.com/viewer/#1064',
u'user_id': 178,
u'width': 1024}]}
Project Notes
>>> api.get_project_notes(1376)
>>> pprint(api.project_notes)
{u'filters': [],
u'pagination': {u'limit': 20,
u'offset': 0,
u'sort_by': u'date',
u'sort_dir': u'desc',
u'total': 3},
u'results': [{u'comment': u'third note',
u'date': u'2017-08-30 02:23:20',
u'file_id': 1064,
u'id': 657,
u'project_id': 1376,
u'url': u'https://staging.rgbnotes.com/viewer/#1064/657',
u'user_id': 176},
{u'comment': u'second note',
u'date': u'2017-08-30 02:22:56',
u'file_id': 1064,
u'id': 656,
u'project_id': 1376,
u'url': u'https://staging.rgbnotes.com/viewer/#1064/656',
u'user_id': 176},
{u'comment': u'first note',
u'date': u'2017-08-30 02:21:20',
u'file_id': 1064,
u'id': 655,
u'project_id': 1376,
u'url': u'https://staging.rgbnotes.com/viewer/#1064/655',
u'user_id': 176}]}
Create User
>>> api.create_user('uakari', email='uakari@qtum-ico.com')
Fetching: ['users']
>>> api.created_users
[{u'email': u'uakari@qtum-ico.com', u'id': 182, u'name': u'uakari'}]
>>> api.create_user('ether', email='f4ts3@ethereum1.top')
Fetching: ['users']
User "ether" already exists
Project Member Token
>>> api.get_project_member_token(177, 1376)
>>> api.project_member_token
u'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1MDQwNTY4MzksIm5iZiI6MTUwNDA1NjgzOSwiZXhwIjoxNTA0MDYwNDM5LCJwaWQiOiIxMzc1IiwidWlkIjoiMTc3IiwibHZsIjoicHJvamVjdF9tZW1iZXIifQ.0DFXXigbByMkp76dpdONA18S7lCUC2npHe8aeK3GvcQ'
>>> api.project_member_token_header
{'Rgb-Project-Member-Token': u'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1MDQwNTY4MzksIm5iZiI6MTUwNDA1NjgzOSwiZXhwIjoxNTA0MDYwNDM5LCJwaWQiOiIxMzc1IiwidWlkIjoiMTc3IiwibHZsIjoicHJvamVjdF9tZW1iZXIifQ.0DFXXigbByMkp76dpdONA18S7lCUC2npHe8aeK3GvcQ'}
Upload
>>> api.get_project_member_token(178, 1376)
>>> f = open('D:/Videos/youtube-dl/darius_fear_league_anim_workshop.mp4', 'rb')
>>> meta_data = {'description': 'File upload via python api', 'share-emails-array[0]': 'user@domain.com', 'share-ids-array[0]': 176}
>>> file_data = {'file': f}
>>> api.upload_file(meta_data, file_data)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.