通过无人参与脚本导出GMail联系人

时间:2012-01-19 14:40:56

标签: python gmail export contacts google-contacts

GMail有一个方便的花花公子窗口,可让您将所有联系人导出为CSV文件。如果您这样做,那么查看浏览器的历史记录,您会看到用于启动下载的URL看起来像:

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

我想在Python中编写一个批处理脚本,它会每晚自动将这个CSV文件下载到我的服务器,但我无法弄清楚如何获得“tok”。我研究过Google的OAuth,但它似乎是一个人为交互的过程,而我需要在凌晨3点发生这种情况,因为所有可用的人都会睡着了。

可以这样做,还是Google让我的电子邮件帐户“安全”,以至于我无法通过无人参与的脚本访问它?

谢谢!    Bryon M. Elliott

4 个答案:

答案 0 :(得分:3)

首先使用您的帐户和密码进行身份验证(请参阅http://developers.google.com/accounts/docs/AuthForInstalledApps

auth=`curl --silent -d Email=whatever@gmail.com -d Passwd=yourpwd -d service=contacts https://www.google.com/accounts/ClientLogin|grep ^Auth=|cut -d= -f2`

获取myserious“tok”变量。我发现它是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`

下载CSV(Google格式)。这与手动执行此操作的方式完全相同: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"

变量“out”可以是google_csv,outlook_csv,vcard之一。 我的代码是bash,您可能希望将curl命令更改为Python等效项。重要的信息是变量和URL。

答案 1 :(得分:2)

我正在寻找一些类似的解决方案,因为我无法找到任何现成的解决方案我自己做过:(请耐心等待我的懒惰脚本,只是想让它工作: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"

可能会帮助您找到解决方案;)

答案 2 :(得分:0)

答案 3 :(得分:0)

我找不到任何东西,所以我建立了一个可以做到这一点的小工具。你可以在https://github.com/gedl/gc-csv

找到它

它可以将您的谷歌联系人导出到逗号分隔文件,控制台或将其上传到VOIP电话(Incom ICW1000G)

我希望它有所帮助。