Submission¶
-
class
praw.models.
Submission
(reddit: Reddit, id: Optional[str] = None, url: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)¶ A class for submissions to reddit.
Typical Attributes
This table describes attributes that typically belong to objects of this class. Since attributes are dynamically provided (see Determine Available Attributes of an Object), there is not a guarantee that these attributes will always be present, nor is this list comprehensive in any way.
Attribute Description author
Provides an instance of Redditor
.clicked
Whether or not the submission has been clicked by the client. comments
Provides an instance of CommentForest
.created_utc
Time the submission was created, represented in Unix Time. distinguished
Whether or not the submission is distinguished. edited
Whether or not the submission has been edited. id
ID of the submission. is_original_content
Whether or not the submission has been set as original content. is_self
Whether or not the submission is a selfpost (text-only). link_flair_template_id
The link flair’s ID, or None if not flaired. link_flair_text
The link flair’s text content, or None if not flaired. locked
Whether or not the submission has been locked. name
Fullname of the submission. num_comments
The number of comments on the submission. over_18
Whether or not the submission has been marked as NSFW. permalink
A permalink for the submission. score
The number of upvotes for the submission. selftext
The submissions’ selftext - an empty string if a link post. spoiler
Whether or not the submission has been marked as a spoiler. stickied
Whether or not the submission is stickied. subreddit
Provides an instance of Subreddit
.title
The title of the submission. upvote_ratio
The percentage of upvotes from all votes on the submission. url
The URL the submission links to, or the permalink if a selfpost. -
__init__
(reddit: Reddit, id: Optional[str] = None, url: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)¶ Initialize a Submission instance.
Parameters: - reddit – An instance of
Reddit
. - id – A reddit base36 submission ID, e.g.,
2gmzqe
. - url – A URL supported by
id_from_url()
.
Either
id
orurl
can be provided, but not both.- reddit – An instance of
-
clear_vote
()¶ Clear the authenticated user’s vote on the object.
Note
Votes must be cast by humans. That is, API clients proxying a human’s action one-for-one are OK, but bots deciding how to vote on content or amplifying a human’s vote are not. See the reddit rules for more details on what constitutes vote cheating. [Ref]
Example usage:
submission = reddit.submission(id='5or86n') submission.clear_vote() comment = reddit.comment(id='dxolpyc') comment.clear_vote()
-
comments
¶ Provide an instance of
CommentForest
.This attribute can use used, for example, to obtain a flat list of comments, with any
MoreComments
removed:submission.comments.replace_more(limit=0) comments = submission.comments.list()
Sort order and comment limit can be set with the
comment_sort
andcomment_limit
attributes before comments are fetched, including any call toreplace_more()
:submission.comment_sort = 'new' comments = submission.comments.list()
See Extracting comments with PRAW for more on working with a
CommentForest
.
-
crosspost
(subreddit: praw.models.reddit.subreddit.Subreddit, title: Optional[str] = None, send_replies: bool = True, flair_id: Optional[str] = None, flair_text: Optional[str] = None, nsfw: bool = False, spoiler: bool = False) → _Submission¶ Crosspost the submission to a subreddit.
Note
Be aware you have to be subscribed to the target subreddit.
Parameters: - subreddit – Name of the subreddit or
Subreddit
object to crosspost into. - title – Title of the submission. Will use this submission’s title if None (default: None).
- flair_id – The flair template to select (default: None).
- flair_text – If the template’s
flair_text_editable
value is True, this value will set a custom text (default: None). - send_replies – When True, messages will be sent to the submission author when comments are made to the submission (default: True).
- nsfw – Whether or not the submission should be marked NSFW (default: False).
- spoiler – Whether or not the submission should be marked as a spoiler (default: False).
Returns: A
Submission
object for the newly created submission.Example usage:
submission = reddit.submission(id='5or86n') cross_post = submission.crosspost(subreddit="learnprogramming", send_replies=False)
See also
hide()
- subreddit – Name of the subreddit or
-
delete
()¶ Delete the object.
Example usage:
comment = reddit.comment('dkk4qjd') comment.delete() submission = reddit.submission('8dmv8z') submission.delete()
-
disable_inbox_replies
()¶ Disable inbox replies for the item.
Example usage:
comment = reddit.comment('dkk4qjd') comment.disable_inbox_replies() submission = reddit.submission('8dmv8z') submission.disable_inbox_replies()
See also
enable_inbox_replies()
-
downvote
()¶ Downvote the object.
Note
Votes must be cast by humans. That is, API clients proxying a human’s action one-for-one are OK, but bots deciding how to vote on content or amplifying a human’s vote are not. See the reddit rules for more details on what constitutes vote cheating. [Ref]
Example usage:
submission = reddit.submission(id='5or86n') submission.downvote() comment = reddit.comment(id='dxolpyc') comment.downvote()
See also
upvote()
-
duplicates
(**generator_kwargs) → Generator[[Submission, None], None]¶ Return a
ListingGenerator
for the submission’s duplicates.Additional keyword arguments are passed in the initialization of
ListingGenerator
.Example usage:
submission = reddit.submission(id='5or86n') for duplicate in submission.duplicates(): # process each duplicate
See also
upvote()
-
edit
(body)¶ Replace the body of the object with
body
.Parameters: body – The Markdown formatted content for the updated object. Returns: The current instance after updating its attributes. Example usage:
comment = reddit.comment('dkk4qjd') # construct the text of an edited comment # by appending to the old body: edited_body = comment.body + "Edit: thanks for the gold!" comment.edit(edited_body)
-
enable_inbox_replies
()¶ Enable inbox replies for the item.
Example usage:
comment = reddit.comment('dkk4qjd') comment.enable_inbox_replies() submission = reddit.submission('8dmv8z') submission.enable_inbox_replies()
See also
disable_inbox_replies()
-
flair
¶ Provide an instance of
SubmissionFlair
.This attribute is used to work with flair as a regular user of the subreddit the submission belongs to. Moderators can directly use
flair()
.For example, to select an arbitrary editable flair text (assuming there is one) and set a custom value try:
choices = submission.flair.choices() template_id = next(x for x in choices if x['flair_text_editable'])['flair_template_id'] submission.flair.select(template_id, 'my custom value')
-
fullname
¶ Return the object’s fullname.
A fullname is an object’s kind mapping like
t3
followed by an underscore and the object’s base36 ID, e.g.,t1_c5s96e0
.
-
gild
()¶ Gild the author of the item.
Note
Requires the authenticated user to own Reddit Coins. Calling this method will consume Reddit Coins.
Example usage:
comment = reddit.comment('dkk4qjd') comment.gild() submission = reddit.submission('8dmv8z') submission.gild()
-
hide
(other_submissions: Optional[List[_Submission]] = None)¶ Hide Submission.
Parameters: other_submissions – When provided, additionally hide this list of Submission
instances as part of a single request (default: None).Example usage:
submission = reddit.submission(id='5or86n') submission.hide()
See also
unhide()
-
static
id_from_url
(url: str) → str¶ Return the ID contained within a submission URL.
Parameters: url – A url to a submission in one of the following formats (http urls will also work): * https://redd.it/2gmzqe * https://reddit.com/comments/2gmzqe/ * https://www.reddit.com/r/redditdev/comments/2gmzqe/praw_https/ Raise
ClientException
if URL is not a valid submission URL.
-
mark_visited
()¶ Mark submission as visited.
This method requires a subscription to reddit premium.
Example usage:
submission = reddit.submission(id='5or86n') submission.mark_visited()
-
mod
¶ Provide an instance of
SubmissionModeration
.
-
classmethod
parse
(data: Dict[str, Any], reddit: Reddit) → Any¶ Return an instance of
cls
fromdata
.Parameters: - data – The structured data.
- reddit – An instance of
Reddit
.
-
reply
(body)¶ Reply to the object.
Parameters: body – The Markdown formatted content for a comment. Returns: A Comment
object for the newly created comment orNone
if Reddit doesn’t provide one.A
None
value can be returned if the target is a comment or submission in a quarantined subreddit and the authenticated user has not opt-ed in to viewing the content. When this happens the comment will be sucessfully created on Reddit and can be retried by drawing the comment from the user’s comment history.Example usage:
submission = reddit.submission(id='5or86n') submission.reply('reply') comment = reddit.comment(id='dxolpyc') comment.reply('reply')
-
report
(reason)¶ Report this object to the moderators of its subreddit.
Parameters: reason – The reason for reporting. Raises
APIException
ifreason
is longer than 100 characters.Example usage:
submission = reddit.submission(id='5or86n') submission.report('report reason') comment = reddit.comment(id='dxolpyc') comment.report('report reason')
-
save
(category=None)¶ Save the object.
Parameters: category – (Premium) The category to save to. If your user does not have Reddit Premium this value is ignored by Reddit (default: None
).Example usage:
submission = reddit.submission(id='5or86n') submission.save(category="view later") comment = reddit.comment(id='dxolpyc') comment.save()
See also
unsave()
-
shortlink
¶ Return a shortlink to the submission.
For example http://redd.it/eorhm is a shortlink for https://www.reddit.com/r/announcements/comments/eorhm/reddit_30_less_typing/.
-
unhide
(other_submissions: Optional[List[_Submission]] = None)¶ Unhide Submission.
Parameters: other_submissions – When provided, additionally unhide this list of Submission
instances as part of a single request (default: None).Example usage:
submission = reddit.submission(id='5or86n') submission.unhide()
See also
hide()
-
unsave
()¶ Unsave the object.
Example usage:
submission = reddit.submission(id='5or86n') submission.unsave() comment = reddit.comment(id='dxolpyc') comment.unsave()
See also
save()
-
upvote
()¶ Upvote the object.
Note
Votes must be cast by humans. That is, API clients proxying a human’s action one-for-one are OK, but bots deciding how to vote on content or amplifying a human’s vote are not. See the reddit rules for more details on what constitutes vote cheating. [Ref]
Example usage:
submission = reddit.submission(id='5or86n') submission.upvote() comment = reddit.comment(id='dxolpyc') comment.upvote()
See also
downvote()
-
Note
This list of attributes is not complete. PRAW dynamically provides the attributes that Reddit returns via the API. Because those attributes are subject to change on Reddit’s end, PRAW makes no effort to document them, other than to instruct you on how to discover what is available. See Determine Available Attributes of an Object for detailed information.