Quando você tiver um feed válido em tempo real (mesmo que não contenha dados), poderá especificar o método que vai ser usado para enviar informações ao Google.
É possível enviar dados de transporte público em tempo real de duas maneiras:
- A busca possibilita ao Google extrair os dados de um local da Web.
- O envio por push permite fazer o upload dos dados via HTTP POST.
No caso de dados de alertas de serviço, se não for possível enviar alertas por métodos de busca ou push, crie tudo manualmente com o Editor de alertas de serviço.
Publicar alertas de serviço
Se não for possível enviar alertas de serviço por métodos de busca ou push, crie tudo manualmente com o Editor de alertas de serviço.
Busca
Você pode hospedar cada um dos seus feeds em tempo real no próprio local da Web. O Google extrai (ou busca) os dados desses locais a cada 30 segundos.
Para que o Google busque dados com segurança, use uma destas opções de autenticação:
- Autenticação básica (nome de usuário e senha)
- Cabeçalhos específicos que serão adicionados à solicitação
Envio por push
Você pode transferir (ou enviar por push) seus dados para o Google de forma ativa. Com o envio por push, é possível configurar uploads automáticos da GTFS Realtime via HTTP POST usando a autenticação OAuth2.0 para garantir a segurança do seu feed de dados em tempo real.
Para disponibilizar as informações de transporte público mais recentes e exatas aos usuários, recomendamos que você envie atualizações de dados em tempo real por push com frequência. O ideal é enviar os dados sobre atualizações de viagens e posições dos veículos a cada 30 segundos e os detalhes sobre alertas de serviço a cada 30 segundos ou em intervalos de até 2 minutos.
- Uma Conta do Google registrada no painel do parceiro do Google Transit
- Uma Conta do Google que pode acessar o Google Cloud
- O arquivo de feed em tempo real que você quer enviar para o painel do parceiro do Google Transit
- À esquerda, na guia "APIs e serviços", clique em Credenciais.
- Na parte de cima, clique em Criar credenciais Conta de serviço.
- No campo "Nome da conta de serviço", insira um nome.
- Clique em Criar e continuar Concluído.
- No console do Google Cloud, clique no menu IAM e administrador.
- À esquerda, clique em Contas de serviço Adicionar chave.
- Em "Tipo de chave", selecione JSON.
- Clique em Criar.
- Para adicionar a conta de serviço como um usuário ao painel do parceiro do Google Transit, clique em Abrir caixa de diálogo de convite no canto superior direito da página.
- Na caixa de diálogo, insira o e-mail da conta de serviço.
- Para permitir o envio de novos feeds em tempo real, certifique-se de que sua conta de serviço tenha a permissão "Gerenciar".
- Clique em Convidar.
Para mais detalhes sobre como adicionar usuários, consulte Acessar o painel do parceiro do Google Transit.
https://googleapis.com/auth/partnerdash.upload
. A solicitação contém um formulário HTML (Content-Type: multipart/form-data) com dois campos:
- realtime_feed_id: o ID do feed em tempo real que está sendo enviado
- file: o conteúdo do arquivo GTFS-RT enviado
#!/usr/bin/env python3
import requests
from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
SCOPES = ["https://googleapis.com/auth/partnerdash.upload"]
SERVICE_ACCOUNT_FILE = 'service-account-key.json'
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
form = {'realtime_feed_id': '[REALTIME_FEED_NAME]'}
files = {'file': open("feed_version.pb", 'rb')}
req = requests.Request( 'POST', 'https://partnerdash.google.com/push-upload',data=form, files=files).prepare()
authed_session = AuthorizedSession(credentials)
resp = authed_session.request(url="https://partnerdash.google.com/push-upload",method="POST",
data=req.body,
headers={
'Content-Length': req.headers["Content-Length"],
'Content-Type': req.headers["Content-Type"]})
print(resp.headers)
print(resp.reason)
print(resp.raise_for_status())