Google Reader API Unread Count

后端 未结 4 1880
抹茶落季
抹茶落季 2020-12-07 07:53

Does Google Reader have an API and if so, how can I get the count of the number of unread posts for a specific user knowing their username and password?

相关标签:
4条回答
  • 2020-12-07 08:23

    It is there. Still in Beta though.

    0 讨论(0)
  • 2020-12-07 08:24

    Here is an update to this answer

    import urllib
    import urllib2
    
    username = 'username@gmail.com'
    password = '******'
    
    # Authenticate to obtain Auth
    auth_url = 'https://www.google.com/accounts/ClientLogin'
    #auth_req_data = urllib.urlencode({'Email': username,
    #                                  'Passwd': password})
    auth_req_data = urllib.urlencode({'Email': username,
                                      'Passwd': password,
                                      'service': 'reader'})
    auth_req = urllib2.Request(auth_url, data=auth_req_data)
    auth_resp = urllib2.urlopen(auth_req)
    auth_resp_content = auth_resp.read()
    auth_resp_dict = dict(x.split('=') for x in auth_resp_content.split('\n') if x)
    # SID = auth_resp_dict["SID"]
    AUTH = auth_resp_dict["Auth"]
    
    # Create a cookie in the header using the Auth
    header = {}
    #header['Cookie'] = 'Name=SID;SID=%s;Domain=.google.com;Path=/;Expires=160000000000' % SID
    header['Authorization'] = 'GoogleLogin auth=%s' % AUTH
    
    reader_base_url = 'http://www.google.com/reader/api/0/unread-count?%s'
    reader_req_data = urllib.urlencode({'all': 'true',
                                        'output': 'xml'})
    reader_url = reader_base_url % (reader_req_data)
    reader_req = urllib2.Request(reader_url, None, header)
    reader_resp = urllib2.urlopen(reader_req)
    reader_resp_content = reader_resp.read()
    
    print reader_resp_content
    

    Google Reader removed SID auth around June, 2010 (I think), using new Auth from ClientLogin is the new way and it's a bit simpler (header is shorter). You will have to add service in data for requesting Auth, I noticed no Auth returned if you don't send the service=reader.

    You can read more about the change of authentication method in this thread.

    0 讨论(0)
  • 2020-12-07 08:42

    This URL will give you a count of unread posts per feed. You can then iterate over the feeds and sum up the counts.

    http://www.google.com/reader/api/0/unread-count?all=true

    Here is a minimalist example in Python...parsing the xml/json and summing the counts is left as an exercise for the reader:

    import urllib
    import urllib2
    
    username = 'username@gmail.com'
    password = '******'
    
    # Authenticate to obtain SID
    auth_url = 'https://www.google.com/accounts/ClientLogin'
    auth_req_data = urllib.urlencode({'Email': username,
                                      'Passwd': password,
                                      'service': 'reader'})
    auth_req = urllib2.Request(auth_url, data=auth_req_data)
    auth_resp = urllib2.urlopen(auth_req)
    auth_resp_content = auth_resp.read()
    auth_resp_dict = dict(x.split('=') for x in auth_resp_content.split('\n') if x)
    auth_token = auth_resp_dict["Auth"]
    
    # Create a cookie in the header using the SID 
    header = {}
    header['Authorization'] = 'GoogleLogin auth=%s' % auth_token
    
    reader_base_url = 'http://www.google.com/reader/api/0/unread-count?%s'
    reader_req_data = urllib.urlencode({'all': 'true',
                                        'output': 'xml'})
    reader_url = reader_base_url % (reader_req_data)
    reader_req = urllib2.Request(reader_url, None, header)
    reader_resp = urllib2.urlopen(reader_req)
    reader_resp_content = reader_resp.read()
    
    print reader_resp_content
    

    And some additional links on the topic:

    • http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
    • How do you access an authenticated Google App Engine service from a (non-web) python client?
    • http://blog.gpowered.net/2007/08/google-reader-api-functions.html
    0 讨论(0)
  • 2020-12-07 08:48

    In the API posted in [1], the "token" field should be "T"

    [1] http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI

    0 讨论(0)
提交回复
热议问题