The Reddit Instance¶
-
class
asyncpraw.
Reddit
(site_name: str = None, config_interpolation: Optional[str] = None, requestor_class: Optional[Type[asyncprawcore.requestor.Requestor]] = None, requestor_kwargs: Dict[str, Any] = None, **config_settings: Union[str, bool])¶ The Reddit class provides convenient access to Reddit’s API.
Instances of this class are the gateway to interacting with Reddit’s API through Async PRAW. The canonical way to obtain an instance of this class is via:
import asyncpraw reddit = asyncpraw.Reddit(client_id="CLIENT_ID", client_secret="CLIENT_SECRET", password="PASSWORD", user_agent="USERAGENT", username="USERNAME")
-
__init__
(site_name: str = None, config_interpolation: Optional[str] = None, requestor_class: Optional[Type[asyncprawcore.requestor.Requestor]] = None, requestor_kwargs: Dict[str, Any] = None, **config_settings: Union[str, bool])¶ Initialize a Reddit instance.
- Parameters
site_name – The name of a section in your
praw.ini
file from which to load settings from. This parameter, in tandem with an appropriately configuredpraw.ini
, file is useful if you wish to easily save credentials for different applications, or communicate with other servers running Reddit. Ifsite_name
isNone
, then the site name will be looked for in the environment variable praw_site. If it is not found there, the DEFAULT site will be used.requestor_class – A class that will be used to create a requestor. If not set, use
asyncprawcore.Requestor
(default: None).requestor_kwargs – Dictionary with additional keyword arguments used to initialize the requestor (default: None).
Additional keyword arguments will be used to initialize the
Config
object. This can be used to specify configuration settings during instantiation of theReddit
instance. For more details please see Configuring Async PRAW.Required settings are:
client_id
client_secret (for installed applications set this value to
None
)user_agent
The
requestor_class
andrequestor_kwargs
allow for customization of the requestorReddit
will use. This allows, e.g., easily adding behavior to the requestor or wrapping itsClientSession
in a caching layer. Example usage:import json import aiohttp from asyncprawcore import Requestor from asyncpraw import Reddit class JSONDebugRequestor(Requestor): async def request(self, *args, **kwargs): response = await super().request(*args, **kwargs) print(json.dumps(await response.json(), indent=4)) return response my_session = aiohttp.ClientSession(trust_env=True) reddit = Reddit(..., requestor_class=JSONDebugRequestor, requestor_kwargs={"session": my_session})
You can automatically close the requestor session by using this class as an context manager:
async with Reddit(...) as reddit: print(await reddit.user.me())
You can also call
Reddit.close()
:reddit = Reddit(...) # do stuff with reddit ... # then close the requestor when done await reddit.close()
-
auth
= None¶ An instance of
Auth
.Provides the interface for interacting with installed and web applications.
See also
-
await
close
()¶ Close the requestor.
-
await
comment
(id: Optional[str] = None, url: Optional[str] = None, lazy: bool = False)¶ Return an instance of
Comment
forid
.- Parameters
id – The ID of the comment.
url – A permalink pointing to the comment.
lazy – If True, object is loaded lazily (default: False).
If you don’t need the object fetched right away (e.g., to utilize a class method) then you can do:
comment = await reddit.comment("comment_id", lazy=True) await comment.reply("reply")
-
await
delete
(path: str, data: Union[Dict[str, Union[str, Any]], bytes, IO, str, None] = None, json=None) → Any¶ Return parsed objects returned from a DELETE request to
path
.- Parameters
path – The path to fetch.
data – Dictionary, bytes, or file-like object to send in the body of the request (default: None).
json – JSON-serializable object to send in the body of the request with a Content-Type header of application/json (default: None). If
json
is provided,data
should not be.
-
domain
(domain: str)¶ Return an instance of
DomainListing
.- Parameters
domain – The domain to obtain submission listings for.
-
front
= None¶ An instance of
Front
.Provides the interface for interacting with front page listings. For example:
async for submission in reddit.front.hot(): print(submission)
-
await
get
(path: str, params: Union[str, Dict[str, Union[str, int]], None] = None)¶ Return parsed objects returned from a GET request to
path
.- Parameters
path – The path to fetch.
params – The query parameters to add to the request (default: None).
-
inbox
= None¶ An instance of
Inbox
.Provides the interface to a user’s inbox which produces
Message
,Comment
, andSubmission
instances. For example, to iterate through comments which mention the authorized user run:async for comment in reddit.inbox.mentions(): print(comment)
-
info
(fullnames: Optional[Iterable[str]] = None, url: Optional[str] = None, subreddits: Optional[Iterable[Union[asyncpraw.models.reddit.subreddit.Subreddit, str]]] = None) → AsyncGenerator[Union[asyncpraw.models.reddit.subreddit.Subreddit, asyncpraw.models.reddit.comment.Comment, asyncpraw.models.reddit.submission.Submission], None]¶ Fetch information about each item in
fullnames
,url
, orsubreddits
.- Parameters
fullnames – A list of fullnames for comments, submissions, and/or subreddits.
url – A url (as a string) to retrieve lists of link submissions from.
subreddits – A list of subreddit names or Subreddit objects to retrieve subreddits from.
- Returns
A generator that yields found items in their relative order.
Items that cannot be matched will not be generated. Requests will be issued in batches for each 100 fullnames.
Note
For comments that are retrieved via this method, if you want to obtain its replies, you will need to call
refresh()
on the yieldedComment
.Note
When using the URL option, it is important to be aware that URLs are treated literally by Reddit’s API. As such, the URLs “youtube.com” and “https://www.youtube.com” will provide a different set of submissions.
-
live
= None¶ An instance of
LiveHelper
.Provides the interface for working with
LiveThread
instances. At present only new LiveThreads can be created.await reddit.live.create("title", "description")
-
multireddit
= None¶ An instance of
MultiredditHelper
.Provides the interface to working with
Multireddit
instances. For example, you can obtain aMultireddit
instance via:multireddit = await reddit.multireddit("samuraisam", "programming")
If you want to obtain a fetched
Multireddit
instance you can do:multireddit = await reddit.multireddit("samuraisam", "programming", fetch=True)
-
await
patch
(path: str, data: Union[Dict[str, Union[str, Any]], bytes, IO, str, None] = None, json=None) → Any¶ Return parsed objects returned from a PATCH request to
path
.- Parameters
path – The path to fetch.
data – Dictionary, bytes, or file-like object to send in the body of the request (default: None).
json – JSON-serializable object to send in the body of the request with a Content-Type header of application/json (default: None). If
json
is provided,data
should not be.
-
await
post
(path: str, data: Union[Dict[str, Union[str, Any]], bytes, IO, str, None] = None, files: Optional[Dict[str, IO]] = None, params: Union[str, Dict[str, str], None] = None, json=None) → Any¶ Return parsed objects returned from a POST request to
path
.- Parameters
path – The path to fetch.
data – Dictionary, bytes, or file-like object to send in the body of the request (default: None).
files – Dictionary, filename to file (like) object mapping (default: None).
params – The query parameters to add to the request (default: None).
json – JSON-serializable object to send in the body of the request with a Content-Type header of application/json (default: None). If
json
is provided,data
should not be.
-
await
put
(path: str, data: Union[Dict[str, Union[str, Any]], bytes, IO, str, None] = None, json=None)¶ Return parsed objects returned from a PUT request to
path
.- Parameters
path – The path to fetch.
data – Dictionary, bytes, or file-like object to send in the body of the request (default: None).
json – JSON-serializable object to send in the body of the request with a Content-Type header of application/json (default: None). If
json
is provided,data
should not be.
-
await
random_subreddit
(nsfw: bool = False) → asyncpraw.models.reddit.subreddit.Subreddit¶ Return a random instance of
Subreddit
.- Parameters
nsfw – Return a random NSFW (not safe for work) subreddit (default: False).
-
read_only
¶ Return True when using the ReadOnlyAuthorizer.
-
await
redditor
(name: Optional[str] = None, fullname: Optional[str] = None, fetch: bool = False) → asyncpraw.models.reddit.redditor.Redditor¶ Return an instance of
Redditor
.- Parameters
name – The name of the redditor.
fullname – The fullname of the redditor, starting with
t2_
.
Either
name
orfullname
can be provided, but not both.
-
redditors
= None¶ An instance of
Redditors
.Provides the interface for Redditor discovery. For example, to iterate over the newest Redditors, run:
async for redditor in reddit.redditors.new(limit=None): print(redditor)
-
await
request
(method: str, path: str, params: Union[str, Dict[str, Union[str, int]], None] = None, data: Union[Dict[str, Union[str, Any]], bytes, IO, str, None] = None, files: Optional[Dict[str, IO]] = None, json=None) → Any¶ Return the parsed JSON data returned from a request to URL.
- Parameters
method – The HTTP method (e.g., GET, POST, PUT, DELETE).
path – The path to fetch.
params – The query parameters to add to the request (default: None).
data – Dictionary, bytes, or file-like object to send in the body of the request (default: None).
files – Dictionary, filename to file (like) object mapping (default: None).
json – JSON-serializable object to send in the body of the request with a Content-Type header of application/json (default: None). If
json
is provided,data
should not be.
-
await
submission
(id: Optional[str] = None, url: Optional[str] = None, lazy=False) → asyncpraw.models.reddit.submission.Submission¶ Return an instance of
Submission
.- Parameters
id – A Reddit base36 submission ID, e.g.,
2gmzqe
.url – A URL supported by
id_from_url()
.`.lazy – If True, object is loaded lazily (default: False).
Either
id
orurl
can be provided, but not both.If you don’t need the object fetched right away (e.g., to utilize a class method) then you can do:
submission = await reddit.submission("submission_id", lazy=True) await submission.mod.remove()
-
subreddit
= None¶ An instance of
SubredditHelper
.Provides the interface to working with
Subreddit
instances. For example, to create a Subreddit run:await reddit.subreddit.create("coolnewsubname")
To obtain a lazy
Subreddit
instance run:await reddit.subreddit("redditdev")
To obtain a fetched
Subreddit
instance run:await reddit.subreddit("redditdev", fetch=True)
Multiple subreddits can be combined and filtered views of r/all can also be used just like a subreddit:
await reddit.subreddit("redditdev+learnpython+botwatch") await reddit.subreddit("all-redditdev-learnpython")
-
subreddits
= None¶ An instance of
Subreddits
.Provides the interface for
Subreddit
discovery. For example, to iterate over the set of default subreddits run:async for subreddit in reddit.subreddits.default(limit=None): print(subreddit)
-
user
= None¶ An instance of
User
.Provides the interface to the currently authorized
Redditor
. For example, to get the name of the current user run:print(await reddit.user.me())
-
validate_on_submit
¶ Get validate_on_submit.
Deprecated since version 7.0: If property
validate_on_submit
is set to False, the behavior is deprecated by Reddit. This attribute will be removed around May-June 2020.
-