Convert Figma logo to code with AI

praw-dev logopraw

PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API.

3,571
467
3,571
8

Top Related Projects

16,851

historical code from reddit.com

1,313

Pushshift API

A multi-function Discord bot

An API wrapper for Discord written in Python.

Quick Overview

PRAW (Python Reddit API Wrapper) is a Python package that provides a simple, efficient interface for interacting with the Reddit API. It allows developers to easily access and manipulate data from the Reddit platform, such as posts, comments, and user information.

Pros

  • Simplifies Reddit API Interaction: PRAW abstracts away the complexities of the Reddit API, allowing developers to focus on building their applications rather than dealing with the intricacies of the API.
  • Extensive Documentation: The PRAW project has comprehensive documentation, making it easy for developers to get started and understand the library's features and capabilities.
  • Active Development and Community: PRAW is actively maintained by a team of developers, and the project has a vibrant community of contributors and users, ensuring ongoing support and improvements.
  • Supports Modern Python Versions: PRAW is compatible with the latest versions of Python, allowing developers to take advantage of the latest language features and best practices.

Cons

  • Limited Functionality: While PRAW provides a wide range of functionality, it may not cover all the use cases or features available in the Reddit API. Developers may need to resort to using the Reddit API directly for more advanced or specialized use cases.
  • Dependency on Reddit API Changes: PRAW's functionality is dependent on the Reddit API, and changes to the API may require updates to the library, which could potentially break existing code.
  • Steep Learning Curve for Beginners: The library's extensive functionality and the complexity of the Reddit API can make it challenging for beginners to get started, especially if they are new to both Python and the Reddit platform.
  • Performance Limitations: PRAW may not be the most efficient choice for high-volume or real-time applications, as it may not be able to handle large amounts of data or high-frequency requests as efficiently as a more low-level API implementation.

Code Examples

Here are a few examples of how to use PRAW:

  1. Retrieving the top posts from a subreddit:
import praw

reddit = praw.Reddit(client_id="your_client_id",
                     client_secret="your_client_secret",
                     user_agent="your_user_agent")

subreddit = reddit.subreddit("python")
top_posts = subreddit.top(limit=10)

for post in top_posts:
    print(post.title)
  1. Commenting on a post:
import praw

reddit = praw.Reddit(client_id="your_client_id",
                     client_secret="your_client_secret",
                     user_agent="your_user_agent")

submission = reddit.submission(url="https://www.reddit.com/r/python/comments/123456789/example_post/")
submission.comment("This is a comment on the post.")
  1. Retrieving a user's recent comments:
import praw

reddit = praw.Reddit(client_id="your_client_id",
                     client_secret="your_client_secret",
                     user_agent="your_user_agent")

user = reddit.redditor("username")
for comment in user.comments.new(limit=10):
    print(comment.body)
  1. Submitting a new post to a subreddit:
import praw

reddit = praw.Reddit(client_id="your_client_id",
                     client_secret="your_client_secret",
                     user_agent="your_user_agent")

subreddit = reddit.subreddit("python")
submission = subreddit.submit("Example Post Title", url="https://example.com")

Getting Started

To get started with PRAW, follow these steps:

  1. Install the PRAW library using pip:
pip install praw
  1. Create a Reddit app on the Reddit website and obtain the necessary credentials (client ID, client secret, and user agent).

  2. Initialize the PRAW client with your credentials:

import praw

reddit = praw.Reddit(client_id="your_client_id",
                     client_secret="your_client_secret",
                     user_agent="your_user_agent")
  1. Start

Competitor Comparisons

16,851

historical code from reddit.com

Pros of reddit-archive/reddit

  • Provides a more comprehensive set of features and functionality compared to PRAW, including support for various Reddit API endpoints and advanced features.
  • Offers a more robust and mature codebase, with a longer history of development and a larger community of contributors.
  • Includes built-in support for handling complex Reddit data structures and interactions, reducing the need for additional libraries or custom code.

Cons of reddit-archive/reddit

  • Has a steeper learning curve and may require more time to understand and integrate into a project compared to PRAW.
  • May have a larger codebase and dependencies, which could lead to increased complexity and potential performance issues in certain use cases.
  • May have a less active development community compared to PRAW, which could result in slower response times for issues or feature requests.

Code Comparison

PRAW (praw-dev/praw):

import praw

reddit = praw.Reddit(
    client_id="your_client_id",
    client_secret="your_client_secret",
    user_agent="your_user_agent"
)

subreddit = reddit.subreddit("python")
for submission in subreddit.hot(limit=10):
    print(submission.title)

reddit-archive/reddit:

from reddit import Reddit

reddit = Reddit(
    client_id="your_client_id",
    client_secret="your_client_secret",
    user_agent="your_user_agent"
)

subreddit = reddit.subreddit("python")
for submission in subreddit.hot(limit=10):
    print(submission.title)

As you can see, the code structure and usage are quite similar between the two libraries, with the main difference being the import statement and the class name (praw.Reddit vs. Reddit).

1,313

Pushshift API

Pros of pushshift/api

  • Provides a comprehensive API for accessing Reddit data, including comments, submissions, and user information.
  • Offers a wide range of filtering and sorting options, allowing for more targeted data retrieval.
  • Supports batch processing and pagination, enabling efficient handling of large datasets.

Cons of pushshift/api

  • Requires more manual setup and configuration compared to PRAW, as it does not provide a high-level abstraction layer.
  • May have a steeper learning curve for developers unfamiliar with building API clients.
  • Potential for rate limiting or access restrictions, depending on the API usage.

Code Comparison

PRAW (praw-dev/praw):

import praw

reddit = praw.Reddit(client_id='your_client_id',
                     client_secret='your_client_secret',
                     user_agent='your_user_agent')

subreddit = reddit.subreddit('AskReddit')
for submission in subreddit.hot(limit=10):
    print(submission.title)

pushshift/api:

import requests

url = 'https://api.pushshift.io/reddit/submission/search/'
params = {
    'subreddit': 'AskReddit',
    'limit': 10,
    'sort': 'desc',
    'sort_type': 'created_utc'
}

response = requests.get(url, params=params)
data = response.json()['data']

for submission in data:
    print(submission['title'])

A multi-function Discord bot

Pros of Red-DiscordBot

  • Red-DiscordBot is a feature-rich Discord bot that offers a wide range of functionality, including moderation tools, music playback, and custom commands.
  • The project has a large and active community, with many contributors and a well-documented codebase.
  • Red-DiscordBot is highly customizable, allowing users to create their own cogs (plugins) to extend the bot's capabilities.

Cons of Red-DiscordBot

  • The codebase of Red-DiscordBot is more complex than PRAW, which may make it more challenging for new contributors to get started.
  • The project has a steeper learning curve compared to PRAW, as it requires users to understand the bot's architecture and how to create and manage cogs.
  • Red-DiscordBot may have a higher resource footprint than PRAW, as it is a more feature-rich and complex application.

Code Comparison

PRAW (Python Reddit API Wrapper):

import praw

reddit = praw.Reddit(
    client_id="your_client_id",
    client_secret="your_client_secret",
    user_agent="your_user_agent"
)

subreddit = reddit.subreddit("python")
for submission in subreddit.hot(limit=10):
    print(submission.title)

Red-DiscordBot (Cog example):

from redbot.core import commands

class MyCustomCog(commands.Cog):
    """My custom cog"""

    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def hello(self, ctx):
        """Say hello"""
        await ctx.send("Hello!")

An API wrapper for Discord written in Python.

Pros of discord.py

  • Extensive documentation and community support
  • Comprehensive set of features for building Discord bots
  • Actively maintained and regularly updated

Cons of discord.py

  • Steeper learning curve compared to PRAW
  • Larger codebase and dependencies, which may impact performance

Code Comparison

PRAW (Reddit API):

import praw

reddit = praw.Reddit(
    client_id="your_client_id",
    client_secret="your_client_secret",
    user_agent="your_user_agent"
)

subreddit = reddit.subreddit("python")
for submission in subreddit.hot(limit=10):
    print(submission.title)

discord.py:

import discord

intents = discord.Intents.default()
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'{client.user.name} has connected to Discord!')

client.run('your_bot_token')

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

PRAW: The Python Reddit API Wrapper

.. image:: https://img.shields.io/pypi/v/praw.svg :alt: Latest PRAW Version :target: https://pypi.python.org/pypi/praw

.. image:: https://img.shields.io/pypi/pyversions/praw :alt: Supported Python Versions :target: https://pypi.python.org/pypi/praw

.. image:: https://img.shields.io/pypi/dm/praw :alt: PyPI - Downloads - Monthly :target: https://pypi.python.org/pypi/praw

.. image:: https://github.com/praw-dev/praw/actions/workflows/ci.yml/badge.svg?event=push :alt: GitHub Actions Status :target: https://github.com/praw-dev/praw/actions/workflows/ci.yml

.. image:: https://coveralls.io/repos/github/praw-dev/praw/badge.svg :alt: Coveralls Coverage :target: https://coveralls.io/github/praw-dev/praw?branch=master

.. image:: https://api.securityscorecards.dev/projects/github.com/praw-dev/praw/badge :alt: OpenSSF Scorecard :target: https://api.securityscorecards.dev/projects/github.com/praw-dev/praw

.. image:: https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg :alt: Contributor Covenant :target: https://github.com/praw-dev/.github/blob/main/CODE_OF_CONDUCT.md

.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white :alt: pre-commit :target: https://github.com/pre-commit/pre-commit

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg :alt: Black code style :target: https://github.com/psf/black

PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's API. PRAW aims to be easy to use and internally follows all of Reddit's API rules <https://github.com/reddit/reddit/wiki/API>_. With PRAW there's no need to introduce sleep calls in your code. Give your client an appropriate user agent and you're set.

.. _installation:

Installation

PRAW is supported on Python 3.8+. The recommended way to install PRAW is via pip <https://pypi.python.org/pypi/pip>_.

.. code-block:: bash

pip install praw

To install the latest development version of PRAW run the following instead:

.. code-block:: bash

pip install --upgrade https://github.com/praw-dev/praw/archive/master.zip

For instructions on installing Python and pip see "The Hitchhiker's Guide to Python" Installation Guides <https://docs.python-guide.org/en/latest/starting/installation/>_.

Quickstart

Assuming you already have a credentials for a script-type OAuth application you can instantiate an instance of PRAW like so:

.. code-block:: python

import praw

reddit = praw.Reddit(
    client_id="CLIENT_ID",
    client_secret="CLIENT_SECRET",
    password="PASSWORD",
    user_agent="USERAGENT",
    username="USERNAME",
)

With the reddit instance you can then interact with Reddit:

.. code-block:: python

# Create a submission to r/test
reddit.subreddit("test").submit("Test Submission", url="https://reddit.com")

# Comment on a known submission
submission = reddit.submission(url="https://www.reddit.com/comments/5e1az9")
submission.reply("Super rad!")

# Reply to the first comment of a weekly top thread of a moderated community
submission = next(reddit.subreddit("mod").top(time_filter="week"))
submission.comments[0].reply("An automated reply")

# Output score for the first 256 items on the frontpage
for submission in reddit.front.hot(limit=256):
    print(submission.score)

# Obtain the moderator listing for r/test
for moderator in reddit.subreddit("test").moderator():
    print(moderator)

Please see PRAW's documentation <https://praw.readthedocs.io/>_ for more examples of what you can do with PRAW.

Discord Bots and Asynchronous Environments

If you plan on using PRAW in an asynchronous environment, (e.g., discord.py, asyncio) it is strongly recommended to use Async PRAW <https://asyncpraw.readthedocs.io/>_. It is the official asynchronous version of PRAW and its usage is similar and has the same features as PRAW.

PRAW Discussion and Support

For those new to Python, or would otherwise consider themselves a Python beginner, please consider asking questions on the r/learnpython <https://www.reddit.com/r/learnpython>_ subreddit. There are wonderful people there who can help with general Python and simple PRAW related questions.

Otherwise, there are a few official places to ask questions about PRAW:

r/redditdev <https://www.reddit.com/r/redditdev>_ is the best place on Reddit to ask PRAW related questions. This subreddit is for all Reddit API related discussion so please tag submissions with [PRAW]. Please perform a search on the subreddit first to see if anyone has similar questions.

Real-time chat can be conducted via the PRAW Slack Organization <https://join.slack.com/t/praw/shared_invite/enQtOTUwMDcxOTQ0NzY5LWVkMGQ3ZDk5YmQ5MDEwYTZmMmJkMTJkNjBkNTY3OTU0Y2E2NGRlY2ZhZTAzMWZmMWRiMTMwYjdjODkxOGYyZjY>_ (please create an issue if that invite link has expired).

Please do not directly message any of the contributors via Reddit, email, or Slack unless they have indicated otherwise. We strongly encourage everyone to help others with their questions.

Please file bugs and feature requests as issues on GitHub <https://github.com/praw-dev/praw/issues>_ after first searching to ensure a similar issue was not already filed. If such an issue already exists please give it a thumbs up reaction. Comments to issues containing additional information are certainly welcome.

.. note::

This project is released with a `Contributor Code of Conduct
<https://github.com/praw-dev/.github/blob/main/CODE_OF_CONDUCT.md>`_. By
participating in this project you agree to abide by its terms.

Documentation

PRAW's documentation is located at https://praw.readthedocs.io/.

History

August 2010 <https://github.com/praw-dev/praw/commit/efef08a4a713fcfd7dfddf992097cf89426586ae>_: Timothy Mellor created a github project called reddit_api.

March 2011 <https://github.com/praw-dev/praw/commit/ebfc9caba5b58b9e68c77af9c8e53f5562a2ee64>_: The Python package reddit was registered and uploaded to pypi.

December 2011 <https://github.com/praw-dev/praw/commit/74bb962b3eefe04ce6acad88e6f53f43d10c8803>_: Bryce Boe took over as maintainer of the reddit package.

June 2012 <https://github.com/praw-dev/praw/commit/adaf89fe8631f41ab9913b379de104c9ef6a1e73>_: Bryce renamed the project PRAW and the repository was relocated to the newly created praw-dev organization on GitHub.

February 2016 <https://github.com/praw-dev/praw/commit/252083ef1dbfe6ea53c2dc99ac235b4ba330b658>_: Bryce began work on PRAW4, a complete rewrite of PRAW.

License

PRAW's source (v4.0.0+) is provided under the Simplified BSD License <https://github.com/praw-dev/praw/blob/0860c11a9309c80621c267af7caeb6a993933744/LICENSE.txt>_.

  • Copyright ©, 2016, Bryce Boe

Earlier versions of PRAW were released under GPLv3 <https://github.com/praw-dev/praw/blob/0c88697fdc26e75f87b68e2feb11e101e90ce215/COPYING>_.