Можете ли вы передавать сообщения, которые сделали это "горячим"? - PullRequest
0 голосов
/ 24 мая 2018

Итак, допустим, я хочу транслировать посты из subreddit "новости".Однако сообщения очень часты, и мы не можем сказать, что каждый пост достоин.Поэтому я хотел бы отфильтровать хорошие сообщения, пытаясь транслировать «горячий» список.Но я не уверен, возможно ли это, или подобное возможно.
Обычно, это то, что я делаю для потоковой передачи сообщений:
for submission in subreddit.stream.submissions(): if not submission.stickied: print(str(submission.title) + " " + str(submission.url) + "\n")

И это отфильтровывает сообщения, но неПотоковая передача:

for submission in subreddit.hot(limit=10): print(str(submission.title) + " " + str(submission.url) + "\n")

Итак, есть ли какие-либо идеи о том, как я могу передавать и фильтровать сообщения одновременно?
Спасибо

1 Ответ

0 голосов
/ 29 мая 2018

Потоковые горячие сообщения - несоответствующая идея.

Смысл потока в PRAW состоит в том, чтобы получать каждое сообщение или комментарий (почти) сразу после его отправки в Reddit.Горячий список, с другой стороны, содержит элементы, которые в настоящее время считаются интересными, упорядоченные по баллам, которые в некоторой степени пропорциональны баллам, разделенным на возраст.

Однако посты очень часты имы не можем сказать, что каждое сообщение достойно.

Поскольку пользователям Reddit требуется время, чтобы просмотреть сообщения и проголосовать за них, не имеет особого смысла оценивать, является ли сообщение достойным,измеряется баллом сразу после публикации.


Если ваша цель состоит в том, чтобы выполнить какое-либо действие с каждым сообщением, которое попадает в топ n субредита, вы можетепроверяйте титульную страницу с определенным интервалом, выполняя свои действия для любого сообщения, которое вы еще не видели.Как пример:

import praw
import time


reddit = praw.Reddit()  # must be edited to properly authenticate
subreddit = reddit.subreddit('news')
seen_submissions = set()

while True:
    for submission in subreddit.hot(limit=10):
        if submission.fullname not in seen_submissions:
            seen_submissions.add(submission.fullname)
            print('{} {}\n'.format(submission.title, submission.url))
    time.sleep(60)  # sleep for a minute (60 seconds)
...