Google Kontakte exportieren

  • Hallo,

    ich möchte gerne meine Kontakte aus Google automatisiert regelmäßig sichern. Nach unzähligen Stunden der Sucherei bin ich auf folgendes Pearl-Script gestoßen was genau dieses kann.

    #!/usr/bin/perl

    # googlecontacs.get_vcf -- get dump of Google Contacts (as VCARDs)
    #
    use strict;
    use warnings;

    use WWW::Mechanize;

    my $USER='XXXXXXX@googlemail.com';
    my $PASS='XXXXXXX';
    my $OUTPUTFILE=$ENV{HOME} ."/tmp/google-contacts.backup";

    my $mech = WWW::Mechanize->new();

    my $start = qq|https://www.google.com/accounts/ServiceLoginBoxAuth|;
    my $export_cmd = qq|https://mail.google.com/mail/contacts/data/export?groupToExport=%5EMine&exportType=ALL&out=VCARD|;

    # login (to get cookie)
    $mech->get($start);
    $mech->field('Email', $USER);
    $mech->field('Passwd', $PASS);
    $mech->submit();

    # get backup of all contacts as VCARDs
    $mech->get( $export_cmd, ':content_file' => $OUTPUTFILE );

    if ( not $mech->success() )
    {
    die "ERROR: Download of google contacts did not work: $!";
    }

    Geht das ganze auch mit Autoit?

    Würde mich riesig über Anregungen/Lösungen freuen.

    Viele Grüße
    pino

  • So ungefähr müsste das gehen, ungetestet.

    Spoiler anzeigen
    [autoit]

    ; googlecontacs.get_vcf -- get dump of Google Contacts (as VCARDs)
    ;
    #include <IE.au3>
    dim $USER='XXXXXXX@googlemail.com';
    dim $PASS='XXXXXXX';
    dim $OUTPUTFILE=@MyDocumentDir & "/tmp/google-contacts.backup";

    [/autoit] [autoit][/autoit] [autoit]

    Dim $mech = _IECreate();

    [/autoit] [autoit][/autoit] [autoit]

    Dim $start = "https://www.google.com/accounts/ServiceLoginBoxAuth"
    Dim $export_cmd = "https://mail.google.com/mail/contacts/da…=ALL&out=VCARD"

    [/autoit] [autoit][/autoit] [autoit]

    ; login (to get cookie)
    _IENavigate($mech,$start);
    _IEFormElementSetValue(_IEGetObjByName($mech,'Email'), $USER);
    _IEFormElementSetValue(_IEGetObjByName($mech,'Passwd'), $PASS);
    _IEFormSubmit($mech)

    [/autoit] [autoit][/autoit] [autoit]

    ; get backup of all contacts as VCARDs
    _IENavigate($mech,$export_cmd);
    _IEBodyReadHTML($mech)
    if @error Then Exit MsgBox(16,"Error","ERROR: Download of google contacts did not work: $!")

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Hallo L3viathan,

    vorab vielen Dank für Dein Script.
    Es hagelten einige Fehermeldungen so das ich folgende Zeilen abgeändert habe:

    Vorher:
    _IEFormElementSetValue(_IEGetObjByName($mech,'Email'), $USER)
    _IEFormElementSetValue(_IEGetObjByName($mech,'Passwd'), $PASS)

    Nachher:
    $o_login = _IEGetObjByName($mech, "Email")
    $o_password = _IEGetObjByName($mech, "Passwd")
    _IEFormElementSetValue ($o_login, $USER)
    _IEFormElementSetValue ($o_password, $PASS)

    Jetzt bekomme ich keine Fehlermeldungen mehr, Felder werden auch ausgefüllt, nur der Anmelden-Button wird nicht gedrückt.

    Hättest Du noch einen Tip :)

    Gruß
    pino

    2 Mal editiert, zuletzt von pino (26. August 2010 um 18:46)

  • Ich habe nun alles mögliche probiert, unter anderem auch Deinen Tip wie folgt:

    $o_Button = _IEGetObjByName($mech, "Anmelden")
    _IEAction($o_Button,"click" )

    Jedoch will er einfach nicht den verdammten Button drücken....

    Zu Testzwecken habe ich dann mal eine Sleep-Schleife eingebaut um den Button selber zu drücken und dann den zweiten Befehl laufen zu lassen der ja die eigentliche Datei herunterladen soll. Hierr kommt aber leider der Speichern-Dialog wo ich bestätigen muss ob die Datei gespeichert oder geöffnet werden soll.

    Hier mal der Quelltext von der Googleseite: https://www.google.com/accounts/ServiceLoginBoxAuth

    <html><head><title>Google-Konten</title>

    <script type="text/javascript">

    function getIframeSize() {
    if (document.getElementById){
    var t = document.getElementById("t");
    try {
    parent.wh(t.offsetWidth, t.offsetHeight);
    } catch (e) {
    }
    }
    }

    function setFocus() {
    if (document.forms[0].Email.value == null ||
    document.forms[0].Email.value == "") {
    try {
    document.forms[0].Email.focus();
    } catch (e) {
    }
    } else {
    try {
    document.forms[0].Passwd.focus();
    } catch (e) {
    }
    }
    }

    </script>

    <script type="text/javascript">
    function onlogin() {
    return;
    }
    </script>
    <style type="text/css">
    body, td, th { font-family: Arial, sans-serif;}
    div.errormsg { color: red; font-size: smaller; font-family: arial,sans-serif; }
    font.errormsg { color: red; font-size: smaller; font-family: arial,sans-serif; }
    </style>
    <style type="text/css">
    .gaia.le.lbl { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
    .gaia.le.fpwd { font-family: Arial, Helvetica, sans-serif; font-size: 70%; }
    .gaia.le.chusr { font-family: Arial, Helvetica, sans-serif; font-size: 70%; }
    .gaia.le.val { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
    .gaia.le.button { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
    .gaia.le.rem { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }


    .gaia.captchahtml.desc { font-family: arial, sans-serif; font-size: smaller; }
    .gaia.captchahtml.cmt { font-family: arial, sans-serif; font-size: smaller; font-style: italic; }

    </style></head>
    <body style="background:#efefef" onload="getIframeSize(); setFocus()" dir="ltr"><!-- ServiceLoginBox.nui=default -->
    <div class="body"><form action="ServiceLoginBoxAuth" method="post" onsubmit="return(onPreLogin());"><table id="t" align="center" border="0" cellpadding="1" cellspacing="0"><script type="text/javascript">
    function onPreCreateAccount() {
    return true;
    }

    function onPreLogin() {

    if (window["onlogin"] != null) {
    return onlogin();
    } else {
    return true;
    }
    }
    </script>
    <tr><td colspan="2" align="center"><div class="errorbox-good"></div></td></tr>
    <tr><td nowrap><div align="right"><span class="gaia le lbl">E-Mail:</span></div></td>

    <td>

    <input type="hidden" name="GALX" value="oTMA7LXypYI">
    <input type="text" name="Email" value="" class="gaia le val" size="18" id="Email"></td></tr>
    <tr><td></td>
    <td align="left"></td></tr>
    <tr><td align="right"><span class="gaia le lbl">Passwort:</span></td>
    <td><input type="password" name="Passwd" class="gaia le val" id="Passwd" size="18"></td></tr>
    <tr><td></td>
    <td align="left"></td></tr>

    <tr><td align="right" valign="top"><input type="checkbox" name="PersistentCookie" value="yes">&nbsp;
    <input type="hidden" name="rmShown" value="1"></td>
    <td><span class="gaia le rem">Angemeldet bleiben</span></td></tr>

    <!-- LoginElementsSubmitButton.nui=default -->

    <tr><td></td>
    <td align="left"><input type="submit" value="Anmelden" class="gaia le button"></td></tr>
    <tr id="ga-fprow"><td colspan="2" nowrap height="33.0" class="gaia le fpwd" align="center" valign="bottom"><a href="http://www.google.com/support/accounts/bin/answer.py?answer=48598&amp;hl=de&amp;ctx=ch_ServiceLoginBoxAuth&amp;fpUrl=https%3A%2F%2Fwww.google.com%2Faccounts%2FForgotPasswd%3FfpOnly%3D1" target="_top">Sie k&ouml;nnen nicht auf Ihr Konto zugreifen?</a></td></tr>
    </table></form></div></body></html>


    Hättest Du noch einen Tip :)