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

Overview

PRAW: The Python Reddit API Wrapper

Latest PRAW Version Supported Python Versions PyPI - Downloads - Monthly Coveralls Coverage Github Actions Coverage Contributor Covenant

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. 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

PRAW is supported on Python 3.6+. The recommended way to install PRAW is via pip.

pip install praw

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

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.

Quickstart

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

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:

# 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("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/redditdev
for moderator in reddit.subreddit("redditdev").moderator():
    print(moderator)

Please see PRAW's documentation 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. 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 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 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 (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 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. 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: Timothy Mellor created a github project called reddit_api.

March 2011: The Python package reddit was registered and uploaded to pypi.

December 2011: Bryce Boe took over as maintainer of the reddit package.

June 2012: Bryce renamed the project PRAW and the repository was relocated to the newly created praw-dev organization on GitHub.

February 2016: Bryce began work on PRAW4, a complete rewrite of PRAW.

License

PRAW's source (v4.0.0+) is provided under the Simplified BSD License.

  • Copyright ©, 2016, Bryce Boe

Earlier versions of PRAW were released under GPLv3.

Comments
  • Insufficient support for Multireddits

    Insufficient support for Multireddits

    I've done several searches throughout the repo, and as far as I can tell there aren't any resources for handling Multireddits. I'd love to help develop this if a project manager can get some groundwork started. Any plans? (Is there a to-do file somewhere?)

    Multireddit API

    Feature 
    opened by voussoir 36
  • Moderation streams

    Moderation streams

    Feature Summary and Justification

    This feature provides the ablilty to stream from subreddit.mod methods. Added Moderator stream for the following:

    • edited
    • mod log
    • modqueue
    • reports
    • spam
    • unmoderated
    • unread
    • modmail_conversations
    Feature 
    opened by LilSpazJoekp 35
  • Comment stream dropping comments?

    Comment stream dropping comments?

    Issue Description

    A simple consumer like the below seems to not be processing all comments.

    I observed a drop in total comment throughput with the praw stream sometime around december 2018 and it has never really recovered.

    I have tested by manually making a number of comments and observing that some of them don't get captured by the praw stream.

    IO on the client side is not a limiting factor.

    for comment in reddit.subreddit('all').stream.comments():
       do_something(comment)
    

    System Information

    • PRAW Version: 6.0.0
    • Python Version: 3.7
    • Operating System:
    Bug Documentation Verified Stale Auto-closed - Stale 
    opened by bicubic 33
  • Updating Collection Display Layout

    Updating Collection Display Layout

    Fixes # (provide issue number if applicable)

    Feature Summary and Justification

    Currently, there is no PRAW function to modify a collection's display layout to either:

    • TIMELINE: Best for event or discussion collections
    • GALLERY: Best for image-heavy or meme collections

    This feature allows the user to do just that.

    This pull request provides ... A solution to this problem.

    References

    Other

    • An additional PRAW function will need to be made that sets a display layout type when creating a new collection.
    • Sorry about the duplicate commit message. The second one should have said "Forgot to include unit test".
    opened by jsk56143 28
  • Create a new flair model

    Create a new flair model

    As of right now, flairs are returned as dicts. I was thinking of making them into Flair objects.

    Several questions:

    • How do I make the Reddit instance objectify the dict into this flair object?
    • Should I throw a ClientException when a user tries to edit a flair that it cannot, or just pass.
    • Should the flair() method accept a flair object (current), or both a flair object or an id/text combo?
    Feature 
    opened by PythonCoderAS 28
  • Suggesting a new logo for PRAW

    Suggesting a new logo for PRAW

    Feature Summary and Justification

    PRAW's current logo seemed a bit un-indicative of the package's purpose, I felt. (It would be at home if it were for a LEGO API, though). I feel that the image that should represent PRAW should also represent what it is - Python and Reddit.

    I put together a new logo as a suggestion, one that combines the double-snakes of Python with the antenna of Reddit's Snoo. The background color is #FF4500, better known as "orangered" to long-time Redditors. The font is DIN 1451, chosen to avoid overt resemblance to the Reddit wordmark and font to avoid confusion about officiality.

    I sized this to be the same size as GitHub's social media preview so it can be used for this repository as well. Humbly submitting it for consideration!

    opened by kungming2 28
  • Fixed a bug in RateLimitExceeded with incorrect key to response dict

    Fixed a bug in RateLimitExceeded with incorrect key to response dict

    RateLimitExceeded.init was setting sleep_time to response['ratelimit'] which was throwing a KeyError exception every time I hit it. Swtiched to 'delay' which seemed to fix the functionality.

    If this isn't correct, ignore this, but it fixed my problem and I thought I'd share it.

    If this isn't the correct branch to send the pull request to but the fix should still be pulled, please let me know.

    Bug 
    opened by north1 27
  • Add helper for downloading all submissions in a subreddit between two timestamps (Implements: #337)

    Add helper for downloading all submissions in a subreddit between two timestamps (Implements: #337)

    Hi, I've used this trick quite a lot, so I took some time and implemented a helper for praw. I hope you'll find it useful!

    1. Reddit seems to use created attribute for "timestamp" queries. created seems to be a sort of broken timestamp. I think this is very confusing, and I always forget to convert time.time() output to "reddit timestamp". That's why I chose to make highest_timestamp and lowest_timestamp to be normal unix timestamp(even though it is inconsistent with r.search)

    2. I am not a native speaker, so sorry in advance for possible grammatical errors in the docstring.

    3. The basic algorithm is fairly simple, it just slides a dynamic length window over reddit timestamps and tries to keep 30..99 results within the window. Whenever this condition breaks, it increases or decreases the window length by a factor of 2x. I never really bothered to optimize these parameters, they are good enough for me. Maybe it is a good idea to expose them as function parameters.

    4. Naming! TBH, I am not sure if all_submissions is a good name.

    Any feedback is appereciated!

    opened by eleweek 26
  • AssertionError: comment.parent_id in self._submission._comments_by_id

    AssertionError: comment.parent_id in self._submission._comments_by_id

    Describe the bug When loading all the comments for post 41ntws (and a handful of others), I get this assertion error. I have not had this problem on tons of other posts, just a few. In case it's helpful, here is the complete list of posts I get this error on:

    50slvn
    4wvz6z
    4fmyzj
    41ntws
    41dkav
    3gljgr
    a8ekca
    fz5363
    

    They're all AskReddit posts with pretty high comment counts, but I've downloaded posts with even more comments regularly before with no issue.

    I found that it seems to be breaking when it gets to comment cz3wnj7. Interestingly, going to the parent of that comment gives a weird "there doesn't seem to be anything here" page instead of showing a deleted comment like normal. That probably has something to do with it.

    To Reproduce Steps to reproduce the behavior:

    1. Fetch the post with ID 41ntws
    2. Do comments.replace_more(limit=None)
    3. Wait

    Expected behavior All comments get loaded

    Code/Logs Here is my exact repro code:

    import praw
    import json
    
    credentials = json.load(open("D:/~No Sync/reddit auth.json"))
    reddit = praw.Reddit(client_id=credentials['client_id'], client_secret=credentials['client_secret'], user_agent=credentials['user_agent'], username=credentials['username'], password=credentials['password'])
    post = reddit.submission(url="https://reddit.com/comments/41ntws")
    post.comments.replace_more(limit=None)
    

    Here is my stacktrace:

    Traceback (most recent call last):
      File "D:\Documents\Website Archive\code\test.py", line 7, in <module>
        post.comments.replace_more(limit=None)
      File "C:\Program Files (x86)\Python38-32\lib\site-packages\praw\models\comment_forest.py", line 194, in replace_more
        self._insert_comment(comment)
      File "C:\Program Files (x86)\Python38-32\lib\site-packages\praw\models\comment_forest.py", line 82, in _insert_comment
        assert comment.parent_id in self._submission._comments_by_id, (
    AssertionError: PRAW Error occured. Please file a bug report and include the code that caused the error.
    

    System Info

    • OS: Windows 10
    • Python: 3.8.2
    • PRAW Version: 7.0.0
    Bug 
    opened by tryashtar 25
  • Addition of the ability to set/unset submission as original content

    Addition of the ability to set/unset submission as original content

    Feature Summary and Justification

    Added two methods to the SubmissionModeration class called set_original_content() and unset_original_content(). These methods allows a moderator to set a post as "Original Content (OC)", a tag that is similar to the existing NSFW and Spoiler tags. Note that moderators can mark a post as "OC" on both Old and New Reddit; but submitters have to use New Reddit in order to mark their own posts as such. The feature itself has to be enabled in a subreddit's settings first.

    Though the admin announcement says the tag is only for New Reddit, the feature was backported to Old Reddit and is viewable on the old site as well.

    This endpoint is not officially on the main API page, and the admin response of a year ago was to consider adding it to the API, but that was never done officially. Therefore there is a chance that this endpoint will be deprecated without warning in the future but it currently works and the feature has been fully operational on both desktop versions of Reddit for over a year and a half. The feature does not yet appear on the mobile app.

    A submission with this tag will have another attribute is_original_content set to True. If that submission's OC tag is subsequently removed, its attribute is_original_content will become set to False. Generic submissions may not have is_original_content as an attribute.

    Please note that unlike the NSFW tags, this has not been integrated by Reddit into search. Therefore, while nsfw:true works, oc:true will not return any results from a search query.

    I have also tested this endpoint several times with my bot u/AssistantBOT.

    Timeline

    References

    opened by kungming2 25
  • Add support for users with long passwords and 2FA enabled

    Add support for users with long passwords and 2FA enabled

    Describe the solution you'd like Reddit's suggested solution of passing the 2FA token to /api/v1/access_token as part of the value of the password parameter, i.e 'password' = password+':'+token, doesn't work for users with long passwords because of what appears to be a bug on their end. This isn't a big deal, because instead of using Reddit's suggested method, it also turns out that you can pass the 2FA token to /api/v1/access_token in a separate otp parameter—see below. PRAW or prawcore could be tweaked to handle 2FA tokens if users input their original otp secret at initialization,

    Describe alternatives you've considered Update documentation to inform users with long passwords and 2FA enabled that they're SOL.

    Additional context Someone on /r/redditdev claimed that you couldn't use a password flow with 2FA if the password was >= 72 characters long, and it's true. Setting the password to password:token fails for large passwords, with or without PRAW. Reddit passwords can be up to 500kb long, but bcrypt only cares about the first 72 characters, so I would guess that Reddit has a bug somewhere in their password validation process.

    I used the network inspector while logging into new Reddit, and noticed that the password form had a field for the 2FA token named 'otp'. On a whim, I added 'otp':'xxxxxx' to the POST data of the usual non-PRAW oauth login with Python:

    import pyotp
    import requests
    
    otp_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    otp_token = pyotp.TOTP(otp_secret).now()
    client_auth = requests.auth.HTTPBasicAuth('client_id','client_secret')
    post_data = {
    	"grant_type": "password",
    	"username": username,
    	"password": password,
    	"otp": otp_token
    }
    headers = {"User-Agent": "xxxxxxxxxxxxxxxxxxxxxxxx"}
    response = requests.post(
    	"https://www.reddit.com/api/v1/access_token",
    	auth=client_auth,
    	data=post_data,
    	headers=headers
    )
    

    ...and it worked. response.json() returns the usual set of

    {'access_token': 'xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxx', 'token_type': 'bearer', 'expires_in': 3600, 'scope': '*'}.

    So sure enough, 'otp' is a valid parameter for /api/v1/access_token when using a password with 2FA. If a user passed in the otp_secret at initialization, when it comes time to fetch or refresh bearer tokens, PRAW could then just calculate the 2FA token with pyotp.TOTP(otp_secret).now() (or with an equivalent function) and add that to the rest of the data in the request.

    Feature Stale Auto-closed - Stale 
    opened by MaybeNetwork 24
  • documentation incorrect: muted() → praw.models.reddit.subreddit.SubredditRelationship

    documentation incorrect: muted() → praw.models.reddit.subreddit.SubredditRelationship

    Describe the Bug

    Errors when example code is executed.

    Docs here: https://praw.readthedocs.io/en/stable/code_overview/other/subredditrelationship.html#praw.models.reddit.subreddit.SubredditRelationship

    Desired Result

    Change the docs?

    Relevant Logs

    c:\python39\lib\site-packages\praw\models\reddit\base.py in __getattr__(self, attribute)
         33         if not attribute.startswith("_") and not self._fetched:
         34             self._fetch()
    ---> 35             return getattr(self, attribute)
         36         raise AttributeError(
         37             f"{self.__class__.__name__!r} object has no attribute {attribute!r}"
    
    c:\python39\lib\site-packages\praw\models\reddit\base.py in __getattr__(self, attribute)
         34             self._fetch()
         35             return getattr(self, attribute)
    ---> 36         raise AttributeError(
         37             f"{self.__class__.__name__!r} object has no attribute {attribute!r}"
         38         )
    
    AttributeError: 'Redditor' object has no attribute 'note'
    

    Code to reproduce the bug

    for mute in reddit.subreddit("test").muted():
        print(f"{mute}: {mute.note}")
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    Yes

    Operating System/Environment

    windoze

    Python Version

    python 3.9.1

    PRAW Version

    7.4.0

    Prawcore Version

    2.3.0

    Anything else?

    Docs here: https://praw.readthedocs.io/en/stable/code_overview/other/subredditrelationship.html#praw.models.reddit.subreddit.SubredditRelationship

    opened by computerologist 4
  • reddit.subreddit.mod.removal_reasons isn't indexed in display order

    reddit.subreddit.mod.removal_reasons isn't indexed in display order

    Describe the Bug

    reddit.subreddit.mod.removal_reasons isn't indexed in display order

    Desired Result

    reddit.subreddit.mod.removal_reasons should be indexed in display order

    Relevant Logs

    No response

    Code to reproduce the bug

    No response

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    Yes

    Operating System/Environment

    windows

    Python Version

    python 3.9.1

    PRAW Version

    7.4.0

    Prawcore Version

    2.3.0

    Anything else?

    No response

    opened by computerologist 2
  • submission.edit doesn't preserve photos when I edit a submission with submission.selftext.

    submission.edit doesn't preserve photos when I edit a submission with submission.selftext.

    Describe the Bug

    When I do so, it posts a link to the media instead of embedding the media like it's supposed to. This is the first time trying to edit posts at with PRAW. @LilSpazJoekp said on Reddit I should submit this.

    Desired Result

    Right now I'm trying to get submission.edit() to preserve photos and videos, and once I do I want to be able to add in new photos and or videos when editing posts.

    Relevant Logs

    No response

    Code to reproduce the bug

    import praw
    
    reddit = praw.Reddit("DEFAULT", user_agent="macos:praw:1.0.0 (by /u)") 
    submission = reddit.submission(url="https://www.reddit.com/r/KamenRider/comments/xjw2k2/kamen_rider_geats_episode_other_content_ratings/")
    submission.edit(body=submission.selftext)
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    No

    Operating System/Environment

    macOS Ventura 13.0

    Python Version

    3.9.13

    PRAW Version

    7.6.1

    Prawcore Version

    2.3.0

    Anything else?

    No response

    opened by Oneechan69 10
  • rules.mod.reorder no longer working

    rules.mod.reorder no longer working

    Describe the Bug

    Attempting to reorder the rules of a subreddit tracebacks because the response is returning None.

    Desired Result

    It looks as though this line should return an iterative function: response = self.subreddit_rules._reddit.post(API_PATH["reorder_subreddit_rules"], data=data)I've tried commenting out the lines that traceback to just see what response is, and response=None

    Relevant Logs

    File "C:\python332\lib\site-packages\praw\models\reddit\rules.py", line 448, in reorder
        for rule in response:
    TypeError: 'NoneType' object is not iterable
    >>>
    

    Code to reproduce the bug

    subreddit = reddit.subreddit("test")
    rules = list(subreddit.rules)
    # reorder them in any means you like, my preferred is:
    new = [rules[1], rules[0], rules[2]]
    subreddit.rules.mod.reorder(new)
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    No

    Operating System/Environment

    windows

    Python Version

    3.8

    PRAW Version

    7.6.0

    Prawcore Version

    2.3.0

    Anything else?

    No response

    Reddit API Change 
    opened by NathanTech7713 8
  • Add support for bytes formatted images to submit_image and submit_gallery

    Add support for bytes formatted images to submit_image and submit_gallery

    Feature Summary and Justification

    This feature enables a user to upload an image or images each represented as a Bytes Object to Reddit through the submit_image and submit_gallery functions.

    For context, my own use-case involves backblaze.com, particularly this function of their API. To summarize, a successful request to the backblaze API returns images as bytes objects. After looking into PRAW documentation I discovered that I could only submit an image through it by first downloading and saving the file before providing each of the modified functions the filepath(s) of any images I wanted to submit. Given my use case, this would mean I would need my machine to download, save, upload, and then delete any number of images on my system each time I made use of those functions.

    These changes mean an object can be pulled in from a foreign API and passed directly to PRAW for uploading. It skips the awkward saving and deleting steps which should save processing time when scaled.


    The "image_path" input parameter for both functions has been changed to "image". It still accepts image paths--it's only the name of the input parameter that has changed so as to more clearly indicate that Bytes Objects now work too. In the case of submit_gallery, the input can be mixed. So there could be any number of image paths and Bytes Objects submitted to the same gallery.

    References

    Feature Discussion 
    opened by redowul 32
Releases(v7.6.1)
  • v7.6.1(Nov 11, 2022)

    7.6.1 (2022/11/11)

    Changed

    • Revert :meth:~.Comment.edit positional argument deprecation.
    • Revert :meth:~.Comment.reply positional argument deprecation.
    • Revert :meth:~.Message.reply positional argument deprecation.
    • Revert :meth:~.Submission.edit positional argument deprecation.
    • Revert :meth:~.Submission.reply positional argument deprecation.

    Fixed

    • An issue where :class:.ModmailConversation's messages attribute would only contain the latest message.
    Source code(tar.gz)
    Source code(zip)
  • v7.6.0(May 10, 2022)

    7.6.0 (2022/05/10)

    Added

    • :meth:.pin to manage pinned submissions on the authenticated user's profile.
    • :meth:.update_display_layout to update the display layout of posts in a :class:.Collection.
    • :meth:.SubredditCollectionsModeration.create keyword argument display_layout for specifying a display layout when creating a :class:.Collection.
    • :attr:~.Message.parent to get the parent of a :class:.Message.
    • :class:.ModNote to represent a moderator note.
    • :meth:.ModNote.delete to delete a single moderator note.
    • :class:.RedditModNotes to interact with moderator notes from a :class:.Reddit instance. This provides the ability to create and fetch notes for one or more redditors from one or more subreddits.
    • :class:.RedditorModNotes to interact with moderator notes from a :class:.Redditor instance.
    • :meth:.RedditorModNotes.subreddits to obtain moderator notes from multiple subreddits for a single redditor.
    • :class:.SubredditModNotes to interact with moderator notes from a :class:.Subreddit instance.
    • :meth:.SubredditModNotes.redditors to obtain moderator notes for multiple redditors from a single subreddit.
    • :meth:~.BaseModNotes.create to create a moderator note.
    • :attr:.Redditor.notes to interact with :class:.RedditorModNotes.
    • :attr:.SubredditModeration.notes to interact with :class:.SubredditModNotes.
    • :meth:~.ModNoteMixin.create_note create a moderator note from a :class:.Comment or :class:.Submission.
    • :meth:~.ModNoteMixin.author_notes to view the moderator notes for the author of a :class:.Comment or :class:.Submission.

    Changed

    • Drop support for Python 3.6, which is end-of-life on 2021-12-23.
    • :meth:.conversations now returns a :class:.ListingGenerator allowing you to page through more than 100 conversations.

    Deprecated

    • The after argument for :meth:.conversations will now have to be included in the params keyword argument.
    • Positional keyword arguments for applicable functions and methods. Starting with PRAW 8, most functions and methods will no longer support positional arguments. It will encourage more explicit argument passing, enable arguments to be sorted alphabetically, and prevent breaking changes when adding new arguments to existing methods.
    Source code(tar.gz)
    Source code(zip)
  • v7.5.0(Nov 14, 2021)

    7.5.0 (2021/11/13)

    Added

    • Log a warning if a submission's comment_sort attribute is updated after the submission has already been fetched and a warn_comment_sort config setting to turn off the warning.
    • :meth:.user_selectable to get available subreddit link flairs.
    • Automatic RateLimit handling will support errors with millisecond resolution.

    Fixed

    • An import error when using PRAW in environments where libsqlite3-dev is needed to utilize the sqlite3 builtin.
    • Fixed bug where some keyword arguments that are passed to :meth:.Draft.submit would not have an effect.
    Source code(tar.gz)
    Source code(zip)
  • v7.4.0(Jul 30, 2021)

    7.4.0 (2021/07/30)

    Added

    • :meth:~.WikiPage.discussions to obtain site-wide link submissions that link to the WikiPage.
    • :meth:.revert to revert a WikiPage to a specified revision.
    • :meth:.Inbox.mark_all_read to mark all messages as read with one API call.
    • :meth:~.InboxableMixin.unblock_subreddit to unblock a subreddit.
    • :meth:.update_crowd_control_level to update the crowd control level of a post.
    • :meth:.moderator_subreddits, which returns information about the subreddits that the authenticated user moderates, has been restored.
    • The configuration setting refresh_token has been added back. See https://www.reddit.com/r/redditdev/comments/olk5e6/followup_oauth2_api_changes_regarding_refresh/ for more info.

    Deprecated

    • :class:.Reddit keyword argument token_manager.
    Source code(tar.gz)
    Source code(zip)
  • v7.3.0(Jun 17, 2021)

    7.3.0 (2021/06/17)

    Added

    • :class:.UserSubreddit for the subreddit attribute of :class:.Redditor.
    • :meth:.Reddit.username_available checks if a username is available.
    • :meth:.trusted to retrieve a :class:.RedditorList of trusted users.
    • :meth:.trust to add a user to the trusted list.
    • :meth:.distrust to remove a user from the trusted list.
    • :class:.SQLiteTokenManager (may not work on Windows)

    Changed

    • :meth:.Redditor.moderated will now objectify all data returned from the API.
    • The wiki_edit endpoint has been changed from r/{subreddit}/api/wiki/edit/ to r/{subreddit}/api/wiki/edit.
    • :meth:.Redditor.block no longer needs to retrieve a user's fullname.

    Deprecated

    • The subreddit attribute of :class:.Redditor is no longer a dict.
    • Legacy modmail is slated for deprecation by Reddit in June 2021. See https://www.reddit.com/r/modnews/comments/mar9ha/even_more_modmail_improvements/ for more info.

    Fixed

    • Fixed bug where :meth:.WikiPage.edit and :meth:.SubredditWiki.create would fail if passed content and reason parameters that produced a request with a body greater than 500 KiB, even when the parameters did not exceed their respective permitted maximum lengths.
    • Fixed bug where :meth:.Reddit.request could not handle instances of BadRequest\s when the JSON data contained only the keys "reason" and "message".
    • Fixed bug where :meth:.Reddit.request could not handle instances of BadRequest\s when the response did not contain valid JSON data.
    • Fixed bug where :meth:.FullnameMixin.fullname sometimes returned the wrong fullname.
    Source code(tar.gz)
    Source code(zip)
  • v7.2.0(Feb 24, 2021)

    7.2.0 (2021/02/24)

    Added

    • :class:.Reddit keyword argument token_manager.
    • :class:.FileTokenManager and its parent abstract class :class:.BaseTokenManager.

    Deprecated

    • The configuration setting refresh_token is deprecated and its use will result in a :py:class:DeprecationWarning. This deprecation applies in all ways of setting configuration values, i.e., via praw.ini, as a keyword argument when initializing an instance of :class:.Reddit, and via the PRAW_REFRESH_TOKEN environment variable. To be prepared for PRAW 8, use the new :class:.Reddit keyword argument token_manager. See :ref:refresh_token in PRAW's documentation for an example.
    • :meth:.me will no longer return None when called in :attr:.read_only mode starting in PRAW 8. A :py:class:DeprecationWarning will be issued. To switch forward to the PRAW 8 behavior set praw8_raise_exception_on_me=True in your :class:.Reddit call.
    Source code(tar.gz)
    Source code(zip)
Owner
Python Reddit API Wrapper Development
Python Reddit API Wrapper Development
Clippin n grafting Backend

Clipping' n Grafting Presenting you, 🎉 Clippin' n Grafting 🎉 , your very own ecommerce website displaying all your artsy-craftsy stuff. Not only the

Google-Developer-Student-Club-ISquareIT (GDSC I²IT) 2 Oct 22, 2021
Trading through Binance's API using Python & sqlite

pycrypt Automate trading crypto using Python to pull data from Binance's API and analyse trends. May or may not consistently lose money but oh well it

Maxim 4 Sep 02, 2022
A zero-dependency Python library for getting the Kubernetes token of a AWS EKS cluster

tokeks A zero-dependency Python library for getting the Kubernetes token of a AWS EKS cluster. No AWS CLI, third-party client or library (boto3, botoc

Chris Karageorgiou Kaneen 6 Nov 04, 2022
Search twitter by address.

Twitter Geolocate Twitter Geolocation is a console app that generates twitter search querries for a certain geolocation and opens them in your standar

David J. Kowalk 28 Dec 06, 2022
Trading bot rienforcement with python

Trading_bot_rienforcement System: Ubuntu 16.04 GPU (GeForce GTX 1080 Ti) Instructions: In order to run the code: Make sure to clone the stable baselin

1 Oct 22, 2021
Hack WhatsApp Account Easily(Android)

X-Whatsapp Hack WhatsApp Account Easily(Android) HOW TO RUN 👇 (Termux) pkg update && pkg upgrade pkg install python pkg install git git clone https:/

KiLL3R_xRO 72 Dec 21, 2022
An automated tool that fetches information about your crypto stake and generates historical data in time.

Introduction Yield explorer is a WIP! I needed a tool that would show me historical data and performance of my staked crypto but was unable to find a

Sedat Can Yalçın 42 Nov 26, 2022
Flask extension that provides integration with Azure Storage

Flask-Azure-Storage A Flask extension that provides integration with Azure Storage Table of Contents Flask-Azure-Storage Install Usage Examples Create

Alejo Arias 17 Nov 14, 2021
Oussama has taken his first dose of vaccine D days ago

Oussama has taken his first dose of vaccine D days ago. He may take the second dose no less than L days and no more than R days since his first dose. Determine if Oussama is too early, too late, or i

INDIA - ENSAM Rabat 2 Feb 01, 2022
Um bot simples para seguir as pessoas

Um bot simples para seguir pessoas no instagram, criado apeanas para testes. Utilizando o framework "Selenium", criei um bot para entrar em uma conta

Mobben 1 Nov 05, 2021
Automatically load stolen cookies from ChromePass

AutoCookie - Automatically loading stolen cookies from ChromePass View Demo · Report Bug · Request Feature Table of Contents About the Project Getting

darkArp 21 Oct 11, 2022
Local community telegram bot

Бот на районе Телеграм-бот для поиска адресов и заведений в вашем районе города или в небольшом городке. Требует недели прогулок по району д

Ilya Zverev 32 Jan 19, 2022
A client interface for Scrapinghub's API

Client interface for Scrapinghub API The scrapinghub is a Python library for communicating with the Scrapinghub API. Requirements Python 2.7 or above

Scrapinghub 184 Sep 28, 2022
Widevine CDM API

wvproxy Widevine CDM API Setup Install Python 3.6 or newer and Poetry Install Python package dependencies using poetry install Activate the virtual en

24 Dec 09, 2022
Aws-lambda-requests-wrapper - Request/Response wrapper for AWS Lambda with API Gateway

AWS Lambda Requests Wrapper Request/Response wrapper for AWS Lambda with API Gat

1 May 20, 2022
Just a python library to make reddit post caching easier

Reddist Just a python library to make reddit post caching easier. Caching Options In Memory Caching Redis Caching Pickle Caching Usage Installation: D

Samrid Pandit 3 Jan 16, 2022
Automatically check for free Anmeldung appointments.

Berlin Anmeldung Appointments (Python) This Python script will automatically check for free Anmeldung appointments in Berlin, and find them for you. T

Martín Aberastegue 6 May 19, 2022
A discord bot wrapper for python have slash command

A discord bot wrapper for python have slash command

4 Dec 04, 2021
Api REST para gerenciamento de cashback.

Documentação API para gerenciamento de cashback - MaisTODOS Features Em construção... Tecnologias utilizadas Back end Python 3.8.10 Django REST Framew

Alinne Grazielle 2 Jan 22, 2022
A bot to display per user data from the Twitch Leak

twitch-leak-bot-discord A bot to display per user data from the Twitch Leak by username Where's the data? I can't and don't want to supply the .csv's

SSSEAL-C 0 Nov 08, 2022