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]

Example usage:

submission = reddit.submission(id='5or86n')
submission.clear_vote()

comment = reddit.comment(id='dxolpyc')
comment.clear_vote()
comment_sort = None

Specify the sort order for comments

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.

crosspost(subreddit, title=None, send_replies=True)

Crosspost the submission to a 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).
  • send_replies – When True, messages will be sent to the submission author when comments are made to the submission (default: True).
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()

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)

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 edited comment text by appending to 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 gold creddits. Calling this method will consume one reddit gold creddit.

Example usage:

comment = reddit.comment('dkk4qjd')
comment.gild()

submission = reddit.submission('8dmv8z')
submission.gild()
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).

Example usage:

submission = reddit.submission(id='5or86n')
submission.hide()

See also unhide()

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.

mark_visited()

Mark submission as visited.

Example usage:

submission = reddit.submission(id='5or86n')
submission.mark_visited()
mod

Provide an instance of SubmissionModeration.

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

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.

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 – (Gold) The category to save to. If your user does not have gold 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()

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

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()