Получение URL-адресов сообщений с изображениями на Reddit

#python #reddit #praw

#python #Reddit #praw

Вопрос:

Я работаю над ботом reddit, целью которого является поиск репостов при обнаружении комментария, содержащего «!repostfinder». Бот способен определить строку, но я не знаю, как получить изображение, которое было прокомментировано.

Вот код, который у меня есть на данный момент:

 #subreddit to use
subreddit = reddit.subreddit('test')

#summoning the bot
keyphrase = '!repostfinder'

#find comments with keyphrase
for comment in subreddit.stream.comments():
    if keyphrase in comment.body:
        print('Found keyphrase')
        comment.reply('Keyphrase detected')
        print('Replied to comment')
  

Ответ №1:

Вам следует прочитать соответствующие документы praw библиотеки, которую вы используете.

Вот документы praw.models.reddit.comment.Comment : https://praw.readthedocs.io/en/latest/code_overview/models/comment.html ?выделить =прокомментировать

Вы можете получить отправку комментария с помощью comment.submission . Тогда вам решать, что делать с данными. Вот документы praw.models.reddit.submission.Submission : https://praw.readthedocs.io/en/latest/code_overview/models/submission.html ?выделить = отправить

Пример:

 # Fetch some comments
comments = []
for comment in subreddit.stream.comments():
    # Stop after fetching some comments
    if (len(comments) < 10):
        comments.append(comment)
    else:
        break
# Select specific comment
comment = comments[0]
# Get the comment's submission
submission = comment.submission
  

Ответ №2:

Для каждого комментария есть parent_id значение. В случае, если это верхний комментарий, идентификатор parrent будет начинаться с t3_ (это сообщение, вы должны это проверить), в то время как если родительский идентификатор является другим комментарием, он будет начинаться с t1_ , что означает, что это был ответ на другой комментарий, который в вашем случае был бы бесполезной информацией.

Итак, теперь вы делаете:

 postData = reddit(id=subbmission.parrent_id[3:]) # This is how u get the post object
print(postData.url) # The URL of the image