Submission

class praw.models.Submission(reddit, id=None, url=None, _data=None)

A class for submissions to reddit.

__init__(reddit, id=None, url=None, _data=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 or url can be provided, but not both.

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]

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 and comment_limit attributes before comments are fetched, including any call to replace_more():

submission.comment_sort = 'new'
comments = submission.comments.list()

See Extracting comments with PRAW for more on working with a CommentForest.

delete()

Delete the object.

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]

duplicates(**generator_kwargs)

Return a ListingGenerator for the submission’s duplicates.

Additional keyword arguments are passed in the initialization of ListingGenerator.

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

gilded(**generator_kwargs)

Return a ListingGenerator for gilded items.

Additional keyword arguments are passed in the initialization of ListingGenerator.

hide(other_submissions=None)

Hide Submission.

Parameters:other_submissions – When provided, additionally hide this list of Submission instances as part of a single request (default: None).
static id_from_url(url)

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.

mod

Provide an instance of SubmissionModeration.

parse(data, reddit)

Return an instance of cls from data.

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.
report(reason)

Report this object to the moderators of its subreddit.

Parameters:reason – The reason for reporting.
save(category=None)

Save the object.

Parameters:category – (Gold) The category to save to. If your user does not have gold this value is ignored by Reddit (default: None).

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=None)

Unhide Submission.

Parameters:other_submissions – When provided, additionally unhide this list of Submission instances as part of a single request (default: None).
unsave()

Unsave the object.

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]