praw
рдпрд╛ рдПрдХ рдЧреИрд░-рджрд╕реНрддрд╛рд╡реЗрдЬреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕реЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп:
#adding a number to the end of the %run call with get the ith top post.
%run top_showerthoughts_submissions.py 2
print("Post contents: \n")
print(top_post)
рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
KeyError Traceback (most recent call last)
/opt/conda/lib/python3.6/configparser.py in items(self, section, raw, vars)
842 try:
--> 843 d.update(self._sections[section])
844 except KeyError:
KeyError: 'BayesianMethodsForHackers'
During handling of the above exception, another exception occurred:
NoSectionError Traceback (most recent call last)
/opt/notebooks/Chapter4_TheGreatestTheoremNeverTold/top_showerthoughts_submissions.py in <module>()
7
8
----> 9 reddit = praw.Reddit("BayesianMethodsForHackers")
10 subreddit = reddit.get_subreddit("showerthoughts")
11
/opt/conda/lib/python3.6/site-packages/praw/reddit.py in __init__(self, site_name, **config_settings)
101 self._unique_counter = 0
102 self.config = Config(site_name or os.getenv('praw_site') or 'DEFAULT',
--> 103 **config_settings)
104
105 required_message = ('Required configuration setting {!r} missing. \n'
/opt/conda/lib/python3.6/site-packages/praw/config.py in __init__(self, site_name, **settings)
64
65 self._settings = settings
---> 66 self.custom = dict(Config.CONFIG.items(site_name), **settings)
67
68 self.client_id = self.client_secret = self.oauth_url = None
/opt/conda/lib/python3.6/configparser.py in items(self, section, raw, vars)
844 except KeyError:
845 if section != self.default_section:
--> 846 raise NoSectionError(section)
847 # Update with the entry specific variables
848 if vars:
NoSectionError: No section: 'BayesianMethodsForHackers'
Post contents:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-be2145cbdc50> in <module>()
3
4 print("Post contents: \n")
----> 5 print(top_post)
NameError: name 'top_post' is not defined
рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг praw==4.4.0
рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ
рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд╡ рдПрдкреАрдЖрдИ v4 рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдкреНрд░реЛ 3.6.1 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдб рдХреЛ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рд╣рд╛рдБ, рдпрд╣рд╛рдБ рд╡рд╣реАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП PRAW рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рддреЛ рдореЗрд░рд╛ рдареАрдХ рдЪрд▓рд╛:
reddit = praw.Reddit(client_id=[my id],
client_secret=[my secret],
user_agent=[a random string explaining my 'app'],
username=[my reddit username],
password=[my reddit password)
рдЕрдзрд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, PRAW рджреЗрд╡реЛрдВ рдиреЗ рдЕрдкрдиреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓ рджрд┐рдП рдФрд░ рдХреБрдЫ рд╕рд╛рдорд╛рди рдЗрдзрд░-рдЙрдзрд░ рдХрд░ рджрд┐рдпрд╛ (рдЕрд░реНрдерд╛рддреН, рдЕрдм рдЖрдк рд╕рдмрдорд┐рд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ upvote_ratio
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
for sub in top_submissions:
try:
ratio = sub.upvote_ratio
ups = int(round((ratio*sub.score)/(2*ratio - 1)) if ratio != 0.5 else round(sub.score/2))
upvotes.append(sub.ups)
downvotes.append(ups - sub.score)
contents.append(sub.title)
except Exception as e:
raise e
PRAW 6 рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдкрдбрд╝реЗред рд╕реБрд░рд╛рдЧ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдХреЛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
reddit = praw.Reddit(
client_id=client_id,
client_secret=client_secret,
user_agent=user_agent,
username=username,
password=password,
)
subreddit = reddit.subreddit("showerthoughts")
# go by timespan - 'hour', 'day', 'week', 'month', 'year', 'all'
# might need to go longer than an hour to get entries...
top_submissions = subreddit.top('hour')
n_sub = int(sys.argv[1]) if len(sys.argv) > 1 else 1
i = 0
while i < n_sub:
top_submission = next(top_submissions)
i += 1
top_post = top_submission.title
upvotes = []
downvotes = []
contents = []
for sub in top_submissions:
try:
ratio = sub.upvote_ratio
ups = int(round((ratio*sub.score)/(2*ratio - 1))
if ratio != 0.5 else round(sub.score/2))
upvotes.append(ups)
downvotes.append(ups - sub.score)
contents.append(sub.title)
except Exception as e:
continue
рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХрд┐ limit
рддрд░реНрдХ top()
рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
top_submissions = subreddit.top('hour', limit=5)
top_submissions = subreddit.top('all', limit=20)
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдБ, рдпрд╣рд╛рдБ рд╡рд╣реАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП PRAW рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рддреЛ рдореЗрд░рд╛ рдареАрдХ рдЪрд▓рд╛:
рдЕрдзрд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, PRAW рджреЗрд╡реЛрдВ рдиреЗ рдЕрдкрдиреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓ рджрд┐рдП рдФрд░ рдХреБрдЫ рд╕рд╛рдорд╛рди рдЗрдзрд░-рдЙрдзрд░ рдХрд░ рджрд┐рдпрд╛ (рдЕрд░реНрдерд╛рддреН, рдЕрдм рдЖрдк рд╕рдмрдорд┐рд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
upvote_ratio
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):