[PYTHON] Obtenir les messages Google+ AKB48

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é]

    1. Suspendre le traitement lorsque la limite d'appels d'API est dépassée Si vous dépassez votre limite d'appels API quotidienne, vous obtiendrez une erreur comme celle-ci: Dans ce cas, j'essaye de casser. Si vous continuez à le traiter, il continuera à dépasser la limite. <HttpError 403 when requesting https://www.googleapis.com/plus/v1/people/117147321771860727748/activities/public?alt=json&key=AIzaSyDgX5DQ0s8jnuMWKyWI0IfvO-YA8pNpNb4&maxResults=5 returned "Daily Limit Exceeded">
  1. 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.

    1. Automatisez l'acquisition d'identifiants C'est là que j'ai fait de mon mieux. Si vous souhaitez ajouter les identifiants des parties autres que les membres, vous pouvez ajouter le code suivant après la boucle de for lisoup dans soup.findAll ("li"): dans gidlist.py. gidlist.append ('113474433041552257864') #easy gidlist.append ('108897254135232129896') #Yoshisu gidlist.append ('112435502021367429566') # Shinobu gidlist.append ('113091703821013997975') #Kijima gidlist.append ('103803814106571203433') # Kitagawa

Recommended Posts

Obtenir les messages Google+ AKB48
Obtenez immédiatement l'identifiant Google+ du membre AKB
Obtenir des publications similaires en utilisant Doc2Vec
Obtenez les données de l'API Google Fit en Python
Obtenez des vacances avec l'API Google Agenda
Recevez les publications wordpress de la semaine dernière