{ "info": { "author": "Karim Cheurfi (Zabana)", "author_email": "karim.cheurfi@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "\n\n# Jabbbar\n\nJabbbar is a wrapper for the Dribbble API. It is written in Python 3 and it's designed to\nhelp you interface with the resources and content served by Dribbble. It will allow you to\neffortlessly make calls.\n\n_Please note that you are limited to 60 requests per minute and 1440 requests per day (for\ncalls using OAuth)_\n\n## Requirements\n\nBefore you start using Jabbbar, please ensure you have registered an application with\nDribbble on their [developers site][1].\n\nYou will be asked to give your app a name, a description, a url and a callback url. (Which\nwill be used to redirect your users to your site after they agree to give you access to\ntheir account information).\n\nWhen your app is registered, You will be given two keys: a **client id** and a **client secret**. Make note of\nthose as you will need both to request an access token.\n\n_Be careful NOT to share your client secret publicly_\n\n[1]: http://developer.dribbble.com/\n\n## Installation\n\n_Note: jabbbar is only compatible with python 3.3 and up_\n\nYou can easily install Jabbbar through pip by like so\n```bash\npip install jabbbar\n```\n\nDepending on your setup and virtualenv settings you may need sudo privileges\n\n## Usage\n\n### Authentication\n\n```python\nfrom jabbbar import Jabbbar\n\n# Instantiate the client object\nclient = Jabbbar(client_id='CLIENT_ID', client_secret='CLIENT_SECRET', redirect_uri='https://yoursite.com/authorize')\n\n# You can also pass optional scope and state params\nclient = Jabbbar(client_id='CLIENT_ID', client_secret='CLIENT_SECRET', scope=['write','upload'], state=\"somerandomsecretstring\")\n\n# Generate an authorisation url for your application\nauth_url = client.auth_url\n```\n\nSend your users to the `auth_url`. After they authorise your app, they will be redirected\nto the `redirect_uri` you've set in the previous step. The url will contain a query\nparameter of `code` that looks something like this:\n`http://yoursite.com/your_redirect_url?code=\"CODE_RETURNED_IN_REDIRECT\"`.\n\nIn your web application back-end, retrieve the code and use it to request an access_token.\n\n```python\n# Request an access token based on the code returned in the redirect\naccess_token = client.set_access_token(\"CODE_RETURNED_IN_REDIRECT\")\n```\n\nYou can also instantiate a client directly by passing it an access_token if you have one\n```python\nclient = Jabbbar(access_token=\"YOUR_ACCESS_TOKEN\")\n```\n\nWith your access token set, you can start making calls to the API.\n\n## Userless Access\n\nSince version 0.2.0, you can make read-only requests against the API's public endpoints.\n\nTo do so, just copy your `client access token` (found in your application page on dribbble.com) and pass it to the client instance.\n\n```python\nclient = Jabbbar(client_token=\"YOUR_CLIENT_TOKEN\")\n```\n_Note that you will not be able to access protected resources with a userless client_\n\n## Usage\n\nJabbbar exposes the following classes to help you create more readable code: `Bucket`,\n`Project`, `Shot`, `Shots`, `Team`, `User`\n\nEach of these classes represent a collection of resources accessible through the API\n\nTo use them, simply import them into your app like this\n\n```python\nfrom jabbar import Bucket, Project # etc ...\n```\n\n## Examples\n\n### Users\nCreate a user object\n```python\n# ...\n# Instantiate your client above\nmy_user = User(client)\n\n```\n\n```python\n# Get your user's account details\nmy_user.get_details()\n\n# Get another user's account details\nmy_user.get_details(username=\"therealmichaeljordan\")\n```\n\n### Shots\n\n```python\n# Instantiate a Shots object\nshots = Shots(client)\n\n# List all shots\nshots.list_all()\n\n# Get a specific shot's details\nshots.get_one(1234567890)\n```\n\n### Teams\n\n```python\n# Instantiate a Team object\nmy_team = Team(client, team_name=\"name_of_the_team\")\n\n# Get a list of all of the team players\nmy_team.list_players()\n\n# You can also list the players for other teams\nmy_team.list_players(team_name=\"some_other_team\")\n```\n\n### Projects\n\n```python\n# Instantiate a Project object\nproject = Project(client, project_id=1234567890)\n\n# Get details for the instantiated project\nproject.get_details()\n\n# You can also details for other projects\nproject.get_details(project_id=12345678980)\n```\n\n### Buckets\n\n```python\n# Instantiate a Bucket object\nbucket = Bucket(client, bucket_id=1234567890)\n\n# Get details for the instantiated bucket\nbucket.get_details()\n\n# Create a bucket\nbucket.create(name=\"my_new_bucket\", description=\"a cool bucket\")\n```\n\n### Shots (individual shots)\n\n```python\n# Instantiate a Bucket object\nshot = Shot(client, shot_id=1234567890)\n\n# Get a list of all attachments for the instantiated shot\nshot.list_attachments()\n\n# Get a list of all attachments for another shot\nshot.list_attachments(shot_id=9283328392)\n```\n\n## Full List Of Methods\n\n```\nUser.get_details()\nUser.list_buckets()\nUser.list_shot_likes()\nUser.list_projects()\nUser.list_shots()\nUser.list_teams()\nUser.list_followers()\nUser.list_following()\nUser.list_shots_from_following()\nUser.check_following()\nUser.follow_user()\nUser.unfollow_user()\n\nTeam.list_players()\nTeam.list_shots()\n\nShots.list_all()\nShots.get_one()\n\nShot.list_attachments()\nShot.get_attachment()\nShot.list_buckets()\nShot.list_comments()\nShot.list_comment_likes()\nShot.get_comment()\nShot.check_user_likes_comment()\nShot.like_comment()\nShot.unlike_comment()\nShot.list_likes()\nShot.like()\nShot.unlike()\nShot.list_projects()\nShot.list_rebounds()\nShot.check_user_likes_shots()\n\nProject.get_details()\nProject.get_shots()\n\nBucket.get_details()\nBucket.create()\nBucket.update()\nBucket.delete()\nBucket.list_shots()\nBucket.add_shot()\nBucket.remove_shot()\n```\n\n## Testing\n\nIn order to run the tests, follow these 3 steps:\n\n- Rename `jabbbar/tests/credentials.example.py` to `credentials.py`\n- Fill in your credentials\n- run `nosetests`\n\n\n## Contribution and Improvements\n\nIf you spot code smells and wish to make improvements, please feel free to do so by way of\npull requests, explaining how the solution you're proposing is better (purely for learning\npurposes)\n\n## License\n\nJabbbar is licensed under the Do What The Fuck You Want license.\n\n## Todo\n\n- [ ] Create a `Jabbar.rate_limit()` method\n- [ ] Create a `Jabbar.remaining_requests()` method\n\n_Need a player account_\n- [ ] `Shots.upload`\n- [ ] `Shots.update`\n- [ ] `Shots.delete`\n- [ ] `Shot.create_attachement`\n- [ ] `Shot.delete_comment`\n- [ ] `Shot.create_comment`\n- [ ] `Shot.update_comment`\n- [ ] `Shot.delete_comment`\n\n## Build Status\n[![Build Status](https://travis-ci.org/Zabanaa/jabbbar.svg?branch=master)](https://travis-ci.org/Zabanaa/jabbbar)\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zabanaa/jabbbar", "keywords": "dribbble,api,http,wrapper,jabbbar", "license": "WTFPL", "maintainer": "", "maintainer_email": "", "name": "jabbbar", "package_url": "https://pypi.org/project/jabbbar/", "platform": "", "project_url": "https://pypi.org/project/jabbbar/", "project_urls": { "Homepage": "https://github.com/zabanaa/jabbbar" }, "release_url": "https://pypi.org/project/jabbbar/0.3.0/", "requires_dist": [ "requests" ], "requires_python": "", "summary": "A python 3 wrapper for the Dribbble API", "version": "0.3.0" }, "last_serial": 2500264, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ec063d1a78599121c25f80b23d5efb6b", "sha256": "a35d57418f11e943553e114fb1bb653e1754bd77ddd6779991727cb61f66c066" }, "downloads": -1, "filename": "jabbbar-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ec063d1a78599121c25f80b23d5efb6b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12053, "upload_time": "2016-11-18T20:08:25", "url": "https://files.pythonhosted.org/packages/47/50/a217aecabbfc712aad724660c8e3fc2781dfe64996be435b210946c13abc/jabbbar-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9ae36c51127a7c0110d372ccf675430", "sha256": "46e56ef0fe4410178591efebf212e26aeb6213da8fcdc77a340b2c6043040a8d" }, "downloads": -1, "filename": "jabbbar-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d9ae36c51127a7c0110d372ccf675430", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7471, "upload_time": "2016-11-18T20:08:28", "url": "https://files.pythonhosted.org/packages/c1/99/35f84832f8639e91b8c742265542c2cd133d02933b33822a300df4e9c891/jabbbar-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6f01a5762a807151391e350a9d930521", "sha256": "9454b82567100d90b23794db5d0f09446dc2ad90617068d9c00ff12b3e456996" }, "downloads": -1, "filename": "jabbbar-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6f01a5762a807151391e350a9d930521", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13357, "upload_time": "2016-11-19T20:07:36", "url": "https://files.pythonhosted.org/packages/df/f5/dc90dfb6febe849f2fcc7c724bca2ed75f92b0ee6f792c7da68bd693a0d2/jabbbar-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eeaa6f1e38af987653b847c0b02b77ca", "sha256": "86b001ad5a634c8b857027d742abefac71e890e351e491d680ce23c2c2d65074" }, "downloads": -1, "filename": "jabbbar-0.2.0.tar.gz", "has_sig": false, "md5_digest": "eeaa6f1e38af987653b847c0b02b77ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10571, "upload_time": "2016-11-19T20:07:38", "url": "https://files.pythonhosted.org/packages/2c/8d/5bab115825b6bd313906a4251f4748991166c7b24509cf5413b413d48378/jabbbar-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "5a14326aaa038bb0961c1b57cfac4793", "sha256": "c2cdfc35ac98174ab0ea52675b35ce3fd580153a54523022c3bd58632e8bb431" }, "downloads": -1, "filename": "jabbbar-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5a14326aaa038bb0961c1b57cfac4793", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18395, "upload_time": "2016-12-05T13:15:27", "url": "https://files.pythonhosted.org/packages/ba/39/2340ea363c5d10335385703ee26e2b34f436a46c9b10ea0534c623e53cbe/jabbbar-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71854b0e787357f94d56becfb3a8a4d8", "sha256": "e9d3b634c99625c69faf36d844fa4904ef75e414b1c2b3298778ea232c07d076" }, "downloads": -1, "filename": "jabbbar-0.3.0.tar.gz", "has_sig": false, "md5_digest": "71854b0e787357f94d56becfb3a8a4d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13866, "upload_time": "2016-12-05T13:15:30", "url": "https://files.pythonhosted.org/packages/21/79/b003c8bd52bc747cb0052665e0f522828ea8174ae230c296062b787f4312/jabbbar-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5a14326aaa038bb0961c1b57cfac4793", "sha256": "c2cdfc35ac98174ab0ea52675b35ce3fd580153a54523022c3bd58632e8bb431" }, "downloads": -1, "filename": "jabbbar-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5a14326aaa038bb0961c1b57cfac4793", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18395, "upload_time": "2016-12-05T13:15:27", "url": "https://files.pythonhosted.org/packages/ba/39/2340ea363c5d10335385703ee26e2b34f436a46c9b10ea0534c623e53cbe/jabbbar-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71854b0e787357f94d56becfb3a8a4d8", "sha256": "e9d3b634c99625c69faf36d844fa4904ef75e414b1c2b3298778ea232c07d076" }, "downloads": -1, "filename": "jabbbar-0.3.0.tar.gz", "has_sig": false, "md5_digest": "71854b0e787357f94d56becfb3a8a4d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13866, "upload_time": "2016-12-05T13:15:30", "url": "https://files.pythonhosted.org/packages/21/79/b003c8bd52bc747cb0052665e0f522828ea8174ae230c296062b787f4312/jabbbar-0.3.0.tar.gz" } ] }