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
TonplaceApi - Ton.place api wrapper

tonplaceApi ton.place/tonplaceApi Обертка для ton.place Установка pip install ht

Nickolay Samedov 3 Feb 21, 2022
A discord token grabber made in Python 3

Discord Token Grabber A Discord token grabber written in Python 3. This version of the grabber only supports Windows. Features Transfers via Discord w

Mega145 4 Aug 04, 2022
twitter bot tha uses tweepy library class to connect to TWITTER API

TWITTER-BOT-tweepy- twitter bot that uses tweepy library class to connect to TWITTER API replies to mentions automatically and follows the tweet.autho

Muziwandile Nkomo 2 Jan 08, 2022
摩尔庄园手游脚本

摩尔庄园 BlueStacks 脚本 手游上线,情怀再起,但面对游戏中枯燥无味的每日任务和资源采集,你是否觉得肝疼呢? 本项目通过生成 BlueStacks 模拟器的宏脚本,帮助玩家护肝。 使用脚本请阅读 使用方式 和对应的 功能及说明 联系 Telegram 频道 @mole61 Telegram

WH-2099 43 Dec 16, 2022
Linkvertise-Bypass - Bypass Linkvertise advertisement

Linkvertise-Bypass Bypass Linkvertise advertisement 📕 instructions Copy And Pas

Flex Tools 4 Jun 10, 2022
Tools ini hanya bisa digunakan untuk menyerang website atau http/s

☢️ Tawkun DoS ☢️ Tools ini hanya bisa digunakan untuk menyerang website atau http/s FITUR: [ ☯️ ] Proxy Mode [ 🔥 ] SOCKS Mode | Kadang Eror [ ☢️ ] Ht

Bandhitawkunthi 9 Jul 19, 2022
Webb-Tracker-Bot - This is a discord bot that displays current progress of the James Webb Space Telescope.

Webb-Tracker-Bot - This is a discord bot that displays current progress of the James Webb Space Telescope.

Copperbotte 1 Jan 05, 2022
Download videos from Youtube and other platforms through a Telegram Bot

ytdl-bot Download videos from YouTube and other platforms through a Telegram Bot Usage: https://t.me/benny_ytdlbot Send link from YouTube directly to

Telegram Bot Collection 289 Jan 03, 2023
Telegram bot for searching videos in your PDisk account by @AbirHasan2005

PDisk-Videos-Search A Telegram bot for searching videos in your PDisk account by @AbirHasan2005. Configs API_ID - Get from @TeleORG_Bot API_HASH - Get

Abir Hasan 39 Oct 21, 2022
Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI

Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI. Used REST and WebSocket API to connect to two of the most popular cry

Francis 8 Sep 15, 2022
Streaming Finance Data with AWS Lambda

A data pipeline consisting of an AWS lambda function reading data from yfinance API, an AWS Kinesis stream to receive & store data in S3 buckets and AWS Glue crawler & Athena to run SQL queries.

Aarif Munwar Jahan 4 Aug 30, 2022
A pdisk uploader bot written in Python

Pdisk Uploader Bot 🔥 Upload on Pdisk by Url, File and also by direct forward post from other channel... Features Post to Post Conversion Url Upload D

Paritosh Kumar 33 Oct 21, 2022
Free and Open Source Machine Translation API. 100% self-hosted, no limits, no ties to proprietary services. Built on top of Argos Translate.

LibreTranslate Try it online! | API Docs Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on pro

UAV4GEO 3.5k Jan 03, 2023
Guilherme Matheus 11 Sep 11, 2022
ByDiego Token Grabber is a Discord Stealer

ByDiego Token Grabber is a Discord Stealer. This way you can get too much information from x person if you pass it on and open it

zByDiegoM.T 4 Mar 11, 2022
Tsar-Bot - Crypto auto trade bot that use sentiment analysis from twitter

Tsar Bot - Crypto Sentiment Bot Tsar Bot is a Twitter Crypto Sentiment Bot that

Hilmi Azizi 26 Dec 15, 2022
Send GitHub Issues, PRs or Discussions Updates to Wechat

Send GitHub Issues, PRs or Discussions Updates to Wechat

Hollow Man 2 Jul 12, 2022
Boto3 code assistance for any API in any IDE, always up to date

botostubs Gives you code assistance for any boto3 API in any IDE. Get started by running pip install botostubs Demo Features PyPI package automaticall

Jeshan Giovanni BABOOA 94 Nov 14, 2022
Tracks twitter spaces and sends it to a discord webhook.

Tracks twitter spaces and sends it to a discord webhook. Uses the twitter api to find twitter spaces and then the m3u8 url for the space is found using selenium and will have it posted using a discor

Sam Phung 20 Dec 17, 2022
Build a better understanding of your data in PostgreSQL.

Data Fluent for PostgreSQL Build a better understanding of your data in PostgreSQL. The following shows an example report generated by this tool. It g

Mark Litwintschik 28 Aug 30, 2022