AKB48 Ich habe ein Skript erstellt, um Google+ Beiträge zu erhalten. Erfahren Sie, wie Sie über Python auf Google+ zugreifen können.
Es besteht aus 4 Skripten. 1.gactget.py Ein Skript, das auf die Google + API zugreift. Geben Sie die Benutzer-ID und MaxResults an. MaxResults gibt an, wie viele Datensätze in einem Aufruf abgerufen werden. Da die Anzahl der API-Zugriffe begrenzt ist, passen Sie sie an, während Sie die Situation beobachten.
2.settings.py Anmeldeinformationen in einer separaten Quelle gespeichert. Dies dient der Sicherheit. Im Allgemeinen scheint es eine andere Quelle wie diese zu sein.
3.gidlist.py Holen Sie sich die Mitglieds-ID von der Google + Mitgliederlisten-Website von AKB48. Ich kratzte (schneide die notwendige Zeichenkette aus) mit einem Modul namens beautifulsoup.
4.gactprint.py Verwenden Sie die oben genannten drei Programme, um Aktivitäten abzurufen (Tweets und Beiträge auf 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']
[Einfallsreichtum]
Begrenzen Sie den Protokollausgangspegel Wenn Sie apiclient.discovery verwenden, ist Warnung in Ordnung. Ich habe einen Code namens logging.getLogger (). SetLevel (getattr (logging, 'ERROR')) hinzugefügt, um zu verhindern, dass er angezeigt wird. Es gibt kein Problem mit diesem Prozess.
Recommended Posts