Probabilistic-programming-and-bayesian-methods-for-hackers: `рдкреНрд░реЙ` рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдорд╛рд░реНрдЪ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers

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 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдБ, рдпрд╣рд╛рдБ рд╡рд╣реАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП 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

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд╡ рдПрдкреАрдЖрдИ 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)
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

cledoux picture cledoux  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Anjum48 picture Anjum48  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aagnone3 picture aagnone3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zzd1992 picture zzd1992  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jjisnow picture jjisnow  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ