AKB48 J'ai créé un script pour obtenir des messages Google+. Découvrez comment accéder à Google+ depuis Python.
Il se compose de 4 scripts. 1.gactget.py Un script qui accède à l'API google +. Spécifiez l'ID utilisateur et MaxResults. MaxResults est le nombre d'enregistrements récupérés en un seul appel. Le nombre d'accès à l'API étant limité, ajustez-le tout en observant la situation.
2.settings.py Informations d'identification stockées dans une source distincte. C'est pour la sécurité. En général, cela semble être une source différente comme celle-ci.
3.gidlist.py Obtenez l'ID de membre sur le site de liste des membres google + d'AKB48. Je racle (en supprimant la chaîne de caractères nécessaire) à l'aide d'un module appelé beautifulsoup.
4.gactprint.py Utilisez les trois programmes ci-dessus pour obtenir des activités (tweets et messages sur Twitter).
gactget.py
#!/usr/local/pythonz/ENV/Python-2.7.3/bin/python
# coding: utf-8
import apiclient.discovery
import httplib2
import settings
import logging
import sys
#logging.basicConfig()
logging.getLogger().setLevel(getattr(logging, 'ERROR'))
def build_service(credentials, http, api_key=None):
if ( credentials != None ):
http = credentials.authorize(http)
service = apiclient.discovery.build('plus', 'v1', http=http, developerKey=api_key)
return service
def gact(ggtsid,maxr):
httpUnauth = httplib2.Http()
try:
serviceUnauth = build_service(None, httpUnauth, settings.API_KEY)
except:
print 'build_service err'
raise
try:
request = serviceUnauth.activities().list(userId=ggtsid, collection='public', maxResults = maxr)
except:
print 'serviceUnauth.activities().list err'
raise
activities = []
try:
activity = request.execute(httpUnauth)
except:
raise
activities += activity['items']
return activities
settings.py
import os
# 1. Go to:
# https://code.google.com/apis/console
# 2. select choose your project.
# 3. Choose 'API Access'
# 4. If you have not generated a client id, do so.
# 5. Make your callback:
# http://localhost:8090
CLIENT_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
CLIENT_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
gidlist.py
#!bin/python
#coding: utf-8
from BeautifulSoup import BeautifulSoup #@UnresolvedImport
import urllib
def gidlist_make():
soup = BeautifulSoup(urllib.urlopen("http://www.google.com/intl/ja/+/project48/").read())
lisoup=[]
gidlist = []
for lisoup in soup.findAll("li"):
try:
gidlist.append(lisoup['data-gplusid'])
except:
continue
return gidlist
gactprint.py
#!bin/python
# coding: utf-8
import sys
import logging
import apiclient.discovery
import httplib2
import settings
import re
import ggtsidset
import gactget
import gactmain
import gidlist
logging.getLogger().setLevel(getattr(logging, 'ERROR'))
if __name__=='__main__':
for ggtsid in gidlist.gidlist_make():
try:
activities = gactget.gact(ggtsid,5)
except:
print sys.exc_info()[1]
r = re.compile('Daily Limit Exceeded')
m = r.search(str(sys.exc_info()[1]))
if m is None:
errmsg = ''
else:
errmsg = str(m.group(0))
if errmsg == 'Daily Limit Exceeded':
print 'break,Daily Limit Exceeded'
print ggtsid
break
else:
continue
for activity in activities:
print activity['published']
print activity['updated']
print activity['actor']['displayName']
print activity['actor']['id']
print activity['object']['content']
if activity['object'].has_key('attachments'):
print activity['object']['attachments'][0]['url']
else:
continue
print activity['object']['replies']['totalItems']
print activity['object']['plusoners']['totalItems']
print activity['object']['resharers']['totalItems']
[Ingéniosité]
Limiter le niveau de sortie du journal Si vous utilisez apiclient.discovery, Warning est très bien. J'ai ajouté un code appelé logging.getLogger (). SetLevel (getattr (logging, 'ERROR')) pour l'empêcher d'apparaître. Il n'y a aucun problème avec ce processus.
Recommended Posts