{"id":16226056,"url":"https://github.com/dan6erbond/apraw","last_synced_at":"2025-03-16T12:31:50.181Z","repository":{"id":41122330,"uuid":"204319299","full_name":"Dan6erbond/aPRAW","owner":"Dan6erbond","description":"Asynchronous Python Reddit API Wrapper","archived":false,"fork":false,"pushed_at":"2021-08-31T09:52:12.000Z","size":750,"stargazers_count":49,"open_issues_count":13,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-07T17:49:59.579Z","etag":null,"topics":["api","apraw","async","asynchronous","asynchronous-requests","oauth","oauth2","python","reddit","reddit-api"],"latest_commit_sha":null,"homepage":"http://apraw.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dan6erbond.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-25T16:17:31.000Z","updated_at":"2024-11-06T23:17:12.000Z","dependencies_parsed_at":"2022-09-09T16:01:51.741Z","dependency_job_id":null,"html_url":"https://github.com/Dan6erbond/aPRAW","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dan6erbond%2FaPRAW","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dan6erbond%2FaPRAW/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dan6erbond%2FaPRAW/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dan6erbond%2FaPRAW/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dan6erbond","download_url":"https://codeload.github.com/Dan6erbond/aPRAW/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814880,"owners_count":20352037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","apraw","async","asynchronous","asynchronous-requests","oauth","oauth2","python","reddit","reddit-api"],"created_at":"2024-10-10T12:47:42.828Z","updated_at":"2025-03-16T12:31:49.865Z","avatar_url":"https://github.com/Dan6erbond.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aPRAW\r\n\r\n[![PyPi version](https://img.shields.io/pypi/v/aPRAW?style=flat-square)](https://pypi.org/project/aPRAW)\r\n![PyPi License](https://img.shields.io/pypi/l/aPRAW?style=flat-square)\r\n![PyPi Python Versions](https://img.shields.io/pypi/pyversions/aPRAW?style=flat-square)\r\n[![aPRAW Discord](https://img.shields.io/discord/721693929195569172?color=7289da\u0026label=Discord\u0026logo=discord\u0026style=flat-square)](https://discord.gg/66avTS7)\r\n![GitHub Issues](https://img.shields.io/github/issues/Dan6erbond/aPRAW?style=flat-square)\r\n![GitHub Stars](https://img.shields.io/github/stars/Dan6erbond/aPRAW?style=flat-square)\r\n![GitHub Contributors](https://img.shields.io/github/contributors/Dan6erbond/aPRAW?style=flat-square)\r\n[![Subreddit Subscribers](https://img.shields.io/reddit/subreddit-subscribers/aPRAW?style=flat-square)](https://reddit.com/r/aPRAW)\r\n\r\nAsynchronous Python Reddit API Wrapper by [Dan6erbond](https://dan6erbond.github.io).\r\n\r\n**aPRAW** is an asynchronous API wrapper written for the Reddit API that builds on the idea of [PRAW](https://github.com/praw-dev/praw) in many ways. It follows a very similar design, but adds features such as unlimited listings and, most importantly, support for asynchronous requests. This allows the library to be used in scenarios where the requests can take longer (such as with those unlimited listings and streams) and not block other tasks.\r\n\r\n**Table of Contents**\r\n\r\n - [Key Features](#key-features)\r\n - [Reporting Bugs](#installation)\r\n - [Pull Requests](#quickstart)\r\n - [Community and Support](#community-and-support)\r\n   - [Contributing](#contributing)\r\n - [Documentation](#documentation)\r\n - [Roadmap](#roadmap)\r\n - [Links](#links)\r\n - [License](#license)\r\n\r\n## Key Features\r\n\r\n - Asynchronous HTTPS requests to the Reddit API.\r\n - Unlimited listings.\r\n - Full OOP class design.\r\n\r\n## Installation\r\n\r\naPRAW requires a release of Python 3.6 or newer as it uses the inbuilt `async` and `await` syntax. You can install aPRAW via pip:\r\n\r\n```pip install apraw```\r\n\r\n## Quickstart\r\n\r\nCreate an application on your Reddit account as per their [documentation](https://github.com/reddit-archive/reddit/wiki/OAuth2-Quick-Start-Example). Once you have that, you can interact with aPRAW and its subclasses:\r\n\r\n```python\r\nimport apraw\r\nimport asyncio\r\n\r\n\r\n# instantiate a `Reddit` instance\r\n# you can also supply a key to an entry within a praw.ini\r\n# file, making your login compatible with praw as well\r\nreddit = apraw.Reddit(client_id=\"CLIENT_ID\", client_secret=\"CLIENT_SECRET\",\r\n                    password=\"PASSWORD\", user_agent=\"USERAGENT\",\r\n                    username=\"USERNAME\")\r\n\r\nasync def scan_posts():\r\n  # get an instance of a subreddit\r\n  subreddit = await reddit.subreddit(\"aprawtest\")\r\n\r\n  # loop through new posts\r\n  async for submission in subreddit.new():\r\n    print(submission.title)\r\n\r\nif __name__ == \"__main__\":\r\n    # get the asyncio event loop\r\n    loop = asyncio.get_event_loop()\r\n\r\n    # add scan_posts() to the queue and run it\r\n    loop.run_until_complete(scan_posts())\r\n```\r\n\r\nDue to the fact that aPRAW's code is almost entirely asynchronous, you will have to perform all network-related tasks within the asyncio event loop.\r\n\r\n## Community and Support\r\n\r\nIf you have any questions regarding aPRAW and its usage...\r\n\r\n - Join the [/r/aPRAW](https://reddit.com/r/aPRAW) subreddit\r\n   - Feel free to post a question in the questions thread or make your own post if it could start a big discussion!\r\n - Join the [aPRAW Discord server](https://discord.gg/66avTS7)\r\n   - Use the `#💬general` chat for discussion about the library and talking to other users.\r\n   - Use the `#❓questions` to post questions. The developers will try to get back to you as quickly as possible, but other users can help as well!\r\n   - Use the `#💡ideas` if you have any ideas for the framework but don't know how to implement them, or just want to throw in the suggestion.\r\n\r\n### Contributing\r\n\r\nOf course, aPRAW is open-source under the GPLv3 license and all additions and bug reports in the form of issues and pull requests are welcome! For further information, view the [contribution guidelines](.github/CONTRIBUTING.md) and have fun coding!\r\n\r\n## Documentation\r\n\r\nThe full API documentation can be found on [Read The Docs](http://apraw.readthedocs.io/).\r\n\r\n## Roadmap\r\n\r\n- [ ] Full coverage of Reddit's API.\r\n- [x] PyPi release.\r\n- [x] Never-ending streams.\r\n- [ ] Useful helper functions.\r\n\r\n## Links\r\n\r\n - [Documentation](https://apraw.readthedocs.io/en/latest)\r\n - [Official Discord server](https://discordapp.com/invite/66avTS7)\r\n - [PyPi Release](https://pypi.org/project/aPRAW)\r\n\r\n## License\r\n\r\naPRAW's source is provided under GPLv3.\r\n\u003e Copyright ©, RaviAnand Mohabir\r\n\r\n## Note by the Developers\r\n\r\naPRAW's development process and code is in no way affiliated with that of PRAW. The design allows for a simple adoption when moving from PRAW to aPRAW, but the developers have set out to create a wrapper from the ground-up, without the use of a pre-existing codebase.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan6erbond%2Fapraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdan6erbond%2Fapraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan6erbond%2Fapraw/lists"}