2012-01-19 24 views
9

GMail có cửa sổ tiện dụng cho phép bạn xuất tất cả địa chỉ liên hệ của mình dưới dạng tệp CSV. Nếu bạn làm điều này sau đó nhìn vào lịch sử của trình duyệt, bạn sẽ thấy rằng các URL được sử dụng để bắt đầu tải xuống trông giống như sau:Xuất danh sách liên hệ GMail qua tập lệnh không giám sát

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

Tôi muốn viết một kịch bản hàng loạt bằng Python mà sẽ tự động tải CSV này tập tin mỗi đêm vào máy chủ của tôi, nhưng tôi không thể tìm ra cách để có được "tok". Tôi đã xem xét OAuth của Google, nhưng nó có vẻ là một quá trình tương tác với con người, trong khi tôi cần điều này xảy ra lúc 3 giờ sáng khi tất cả mọi người có sẵn sẽ ngủ.

Điều này có thể được thực hiện hay Google đã thực hiện tài khoản e-mail của tôi để "an toàn" mà tôi không thể truy cập thông qua tập lệnh không giám sát?

Cảm ơn bạn! Elliott

+0

Bạn luôn có thể làm điều đó với selen hoặc một cái gì đó: lập trình mở cửa sổ trình duyệt, đăng nhập vào gmail, v.v. – katrielalex

+0

Ngoài ra tôi nghĩ Backupify có thể làm điều này, vì vậy nó chắc chắn có thể. – katrielalex

Trả lời

2

tôi đã tìm kiếm một số giải pháp tương tự và gây i couldnt tìm thấy bất kỳ giải pháp sẵn sàng ive thực hiện nó bản thân mình: (xin chịu với tôi cho kịch bản lười biếng, chỉ muốn làm cho nó làm việc: 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" 

có thể giúp bạn để có được giải pháp của bạn;)

3

Đầu tiên xác thực với tài khoản và mật khẩu của bạn (xem 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` 

Lấy biến "tok" kỳ lạ. Tôi phát hiện ra rằng đó là một phần của yêu cầu 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` 

Tải xuống CSV (trong định dạng của Google). Đây là chính xác giống như cách thủ công để làm điều này: 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" 

Biến "ra" có thể là một trong những google_csv, outlook_csv, vcard. Mã của tôi bị bash, bạn có thể muốn thay đổi lệnh curl thành một tương đương Python. Thông tin quan trọng là các biến và URL.

+0

Tại sao tính năng này hoạt động? Hãy giải thích những gì bạn đang làm ở đây. – rayryeng

+0

dòng đầu tiên là xác thực bằng tài khoản và mật khẩu của bạn (xem https://developers.google.com/accounts/docs/AuthForInstalledApps) dòng thứ hai là lấy biến "tok" myserious. Tôi phát hiện ra rằng đó là một phần của một yêu cầu JSON. dòng cuối cùng là tải xuống CSV (trong Định dạng của Google).Điều này hoàn toàn giống với cách thực hiện thủ công: https://support.google.com/mail/answer/24911?hl=vi biến có thể là một trong google_csv, outlook_csv, vcard. – SoftIce

0

Tôi không thể tìm thấy bất cứ điều gì vì vậy tôi đã xây dựng một công cụ litte thực hiện điều này. Bạn có thể tìm thấy nó ở đây https://github.com/gedl/gc-csv

Nó có thể xuất danh bạ google của bạn vào một tập tin dấu phẩy tách ra, để giao diện điều khiển hoặc tải nó lên một điện thoại VoIP (Incom ICW1000G)

Tôi hy vọng nó giúp.

Các vấn đề liên quan