2012-01-19 19 views
9

GMail tiene una ventana práctica que le permite exportar todos sus contactos como un archivo CSV. Si se hace esto, entonces mira la historia de su navegador, se ve que la URL que se utiliza para iniciar la descarga se ve algo como:Exportar contactos de GMail a través de una secuencia de comandos desatendida

https://mail.google.com/mail/c/data/export?exportType=GROUP&groupToExport=%5EMine&out=GMAIL_CSV&tok=rQt5BTUBABA.N0gr2-zKkG9868fM7tF_FQ.fOgeVayblkGavK2AuFjZ2t

me gustaría escribir un script por lotes en Python que descargará automáticamente este CSV archivo todas las noches a mi servidor, pero no puedo entender cómo obtener el "tok". He investigado el OAuth de Google, pero parece ser un proceso interactivo con los humanos, mientras que necesito que esto suceda a las 3 AM cuando todos los humanos estarán dormidos.

¿Se puede hacer esto o Google ha hecho que mi cuenta de correo electrónico sea tan "segura" que no puedo acceder a ella mediante un script desatendido?

¡Gracias! Bryon Elliott M.

+0

Siempre se puede hacer con selenio o algo así: programáticamente abrir una ventana del navegador, iniciar sesión en gmail, etc., etc. – katrielalex

+0

También creo que Backupify puede hacer esto, por lo que es ciertamente posible. – katrielalex

Respuesta

2

que estaba buscando alguna solución similar y porque yo no podía encontrar ninguna solución que he hecho yo mismo listo: (por favor tengan paciencia conmigo para el scripting perezoso, sólo quería conseguir que funcione: D)

#!/bin/sh 
# google api requirements: 
# https://developers.google.com/gdata/articles/using_cURL 
# https://developers.google.com/gdata/faq#clientlogin 
# https://developers.google.com/google-apps/contacts/v3/ 
# https://developers.google.com/google-apps/contacts/v3/reference 
# json parser: 
# https://github.com/dominictarr/JSON.sh#jsonsh 
# recommendation(optional): 
# https://developers.google.com/accounts/docs/OAuth2UserAgent 

# echo "logging in to google and saving contact with given caller-number." 
Auth=$(curl --silent https://www.google.com/accounts/ClientLogin --data-urlencode Email=${Email} --data-urlencode Passwd=${Passwd} -d accountType=GOOGLE -d source=Google cURL-Example -d service=cp | grep Auth | cut -d= -f2) 
curl -o ${dir}/${tmpfile} --silent --header "Authorization: GoogleLogin auth=$Auth" "https://www.google.com/m8/feeds/contacts/$Email/full?v=3.0&q=$2&alt=$Format" 

podría ayudarle a llegar a su solución;)

3

Primera autenticarse con su cuenta y la contraseña (ver http://developers.google.com/accounts/docs/AuthForInstalledApps)

auth=`curl --silent -d [email protected] -d Passwd=yourpwd -d service=contacts https://www.google.com/accounts/ClientLogin|grep ^Auth=|cut -d= -f2` 

Obtenga la misteriosa variable "tok". Descubrí que es parte de una solicitud JSON:

tok=`curl --silent --header "Authorization: GoogleLogin auth=$auth" "https://www.google.com/s2/gastatus?out=js&rc=0" |sed 's/,/\n/g' |grep AuthToken |cut -d'"' -f6` 

Descargar el CSV (en formato Google). Esta es exactamente la misma que la forma manual de hacer esto: support.google.com/mail/answer/24911?hl=en

curl -s --stderr - -L -o contacts-google-whatever\@gmail.com-$(date +%Y-%m-%d-%H.%M.%S).csv -H "Authorization:GoogleLogin auth=$auth" --insecure "https://www.google.com/s2/data/exportquery?ac=false&cr=true&ct=true&df=true&ev=true&f=g2&gids=6&gp=true&hl=en-US&id=personal&max=-1&nge=true&out=google_csv&sf=display&sgids=6%2Cd%2Ce%2Cf%2C17&st=0&tok=$tok&type=4" 

La variable "fuera" puede ser una de google_csv, outlook_csv, vCard. Mi código es bash, es posible que desee cambiar los comandos Curl a un equivalente de Python. La información importante son las variables y las URL.

+0

¿Por qué funciona esto? Por favor explica lo que estás haciendo aquí. – rayryeng

+0

La primera línea es para autenticarse con su cuenta y contraseña (ver https://developers.google.com/accounts/docs/AuthForInstalledApps) La segunda línea es obtener la misteriosa variable "tok". Descubrí que es parte de una solicitud JSON. última línea es descargar el archivo CSV (en formato de Google).Esto es exactamente igual a la forma manual de hacerlo: https://support.google.com/mail/answer/24911?hl=es variable puede ser una de google_csv, outlook_csv, vcard. – SoftIce

0

No pude encontrar nada, así que construí una pequeña herramienta que hace esto. Puede encontrar aquí https://github.com/gedl/gc-csv

Se puede exportar los contactos de Google en un archivo separado por comas, a la consola o subirlo a un teléfono VOIP (Incom ICW1000G)

espero que ayude.

Cuestiones relacionadas