Prateek Narendra
Prateek Narendra

Reputation: 1937

Parsing Status JSON from Twitter using Python to find statuses count

I am using Tweepy to get all tweets made by @UserName. This is the following code

import urllib, json
import sys
import tweepy
from tweepy import OAuthHandler

def twitter_fetch(screen_name = "prateek",maxnumtweets=10):

consumer_token = "" #Keys removed for security
consumer_secret = ""
access_token = ""
access_secret = ""

auth = tweepy.OAuthHandler(consumer_token,consumer_secret)
auth.set_access_token(access_token,access_secret)

api  = tweepy.API(auth)

for status in tweepy.Cursor(api.user_timeline,id=screen_name).items(1):
    print status['statuses_count']
    print '\n'



if __name__ == '__main__':
twitter_fetch('BarackObama',200)

How do I parse the JSON properly to read the Number of statuses made by that particular user ?

Upvotes: 0

Views: 1241

Answers (2)

Prateek Narendra
Prateek Narendra

Reputation: 1937

It can be done by getting the JSON object from status._json and then parsing it..

print status._json["statuses_count"]

Upvotes: 0

SamCyanide
SamCyanide

Reputation: 333

How about something that keeps track of how many statuses you've iterated through? I'm not positive how tweepy works, but using something like this:

statuses = 0
for status in tweepy.Cursor(api.user_timeline,id=screen_name).items(1):
    print status['statuses_count']
    statuses += 1
    print '\n'
return statuses

Usually JSON data has a nice structure, with clear formatting like the following, making it easier to understand.

http://i.imgur.com/apLWCh5.png

So when I want to iterate through this list to find if an x exists (achievement, in this case), I use this function, which adds 1 to index every iteration it goes through.

def achnamefdr(appid,mykey,steamid64,achname):
    playerachurl = 'http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=' + str(appid) + '&key=' + mykey + '&steamid=' + steamid64 + '&l=name'

    achjson = json.loads(urllib.request.urlopen(playerachurl).read().decode('utf-8'))

    achjsonr = achjson['playerstats']['achievements']

    index = 0
    for ach in achjsonr:
        if not ach['name'].lower() == achname.lower():
            index += 1
            continue
        else:
            achnamef = ach['name']
            return achnamef, index, True
    return 'Invalid Achievement!', index, False

Upvotes: 1

Related Questions