UPDATE: These instructions were originally written for version 0.9.5. I have started updating them with differences found in the newer 0.9.7 version of GoogleCL. If you find more differences I should mention, please leave a comment. Thanks!
Google just announced their new command line utility for Google services. The GoogleCL project is an Open Source project hosted on Google Code. Although the project page is obviously slanted toward Linux, I figured it's Python so it shouldn't be too hard to run on Windows too. Here's what I had to do to get things setup on Windows XP Professional SP3.
First some downloads:
Note: GoogleCL requires Python 2.5 or 2.6.
Install Python
Run the .msi file to install Python. I installed to C:\dev\Python\Python25 and I added C:\dev\Python\Python25 to my PATH for easier command line access to python.exe.
Install Google Data API
I unzipped gdata-2.0.10.zip to C:\dev\Python\gdata-2.0.10 and ran setup.py install from C:\dev\Python\gdata-2.0.10. No problems encountered there.
C:\dev\Python\gdata-2.0.10>setup.py install
Install GoogleCL
I unzipped googlecl-0.9.5.tar.gz to C:\dev\Python\googlecl-0.9.5 and ran setup.py install from C:\dev\Python\googlecl-0.9.5. Again, no problems.
C:\dev\Python\googlecl-0.9.5>setup.py install
Write a "google" script
Next I wanted a "google" command that would be as easy to run from the Windows command line as the Linux examples were. I wrote this google.cmd file and put it on my PATH:
@echo off
SET googlecl_home=C:\dev\Python\googlecl-0.9.5\src
python %googlecl_home%\google %*
Now, running google docs list got me a prompt for my user name. But instead of prompting for a password, GoogleCL uses OAuth. This is the message I got:
Note: this was true as of GoogleCL v0.9.5 - see below for v0.9.7
(Hint: You can automatically launch your browser by adding "auth_browser =
Please log in and/or grant access via your browser at
https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=[token removed]
then hit enter.
Well, obviously that wouldn't do. It would have been nice if it had told me where to find that config file, but it wasn't hard to locate. As alert reader Brian B. pointed out, the first time you run GoogleCL it will try to locate the config file and if it doesn't find one, it will tell you the path and create the file for you. Mine was in C:\Documents and Settings\itruett\.googlecl.
The path for my browser, Google Chrome, is a little less intuitive. I found it, and added this to my GoogleCL config file:
auth_browser = C:\Documents and Settings\itruett\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
The next time I ran GoogleCL, Chrome launched and showed me the authorization page. A couple of clicks and that was done. I had to authorize once for each Google service.
Update: v0.9.7 Browser Authorization
The first time you try to access each service, GoogleCL will display this message:
Please log in and/or grant access via your browser at
https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=[token removed]
then hit enter.
GoogleCL will launch your default browser to the authorization page where you can grant your approval. You only need to do this once for each service.
Version 0.9.5 required auth_browser to be set in your GoogleCL config file in order to launch the browser automatically. Reader Joe Ledvina reported that auth_browser causes problems with version 0.9.7. Removing auth_browser will allow your default browser to launch. I believe this to be a bug and reported it as such in a comment to issue #51.
One complaint I have about the authorizations is that they just show up as "anonymous" in My Account. If I use GoogleCL for the same account from two different computers, I don't know how I'd be able to tell the difference if I wanted to revoke access for one of them.
No, unfortunately I did not write this post offline and then submit it with GoogleCL. Maybe next time. Now I wonder if I can get it to run on Android.
> "Now I wonder if I can get it to run on Android."
ReplyDeleteI haven't even finished my Windows install of GoogleCL, and I was already wondering that ;) haha!
D:\Programs\Development\Python\lib\distutils\dist.py:266: UserWarning: Unknown distribution option: 'install_requires'
ReplyDeleteTried Python 3.1.2 64-bit and 2.6.5 32-bit and 64-bit. They all seem broken.
That was when running gdata setup.py, btw.
ReplyDelete@ The MAZZTer
ReplyDeleteAfter you set your PATH to include the python directory, change directories all the way to the "gdata-2.0.10" folder. Then run setup.py install.
eg:
C:\>cd C:\Python26\gdata-2.0.10\
C:\gdata-2.0.10\python setup.py install
"It would have been nice if it had told me where to find that config file, but it wasn't hard to locate."
ReplyDeleteApparently the googlecl developers heard you.
When I ran the script for the first time it said
"Did not find config / preferences file at C:\Users\Brian\.googlecl\config
... making new one."
For reasons I don't understand, this does not seem to work with Python 2.6 but works fine with 2.5. May be having both versions of python is creating a conflict?
ReplyDeleteIt works for me with python 2.6
ReplyDeletehi there,
ReplyDeletethanks for the notes.
I tried to run setup.py as follows
c:\googTools\gdata> .\setup.py
I got the same results as MAZZTer.
Now, I ran again in the same dir as
c:\googTools\gdata> python setup.py install
That works just fine!
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteI've installed Python 2.6 (on 64-bit Windows 7) and it seemed to go OK up until first trying "google docs list", where I get an error "C:\Python26\python.exe: can't find '__main__.py' in 'C:\\Python26\\googlecl-0.9
ReplyDelete5\\src'"
When installing the gdata library I do get an error "C:\Python26\lib\distutils\dist.py:266: UserWarning: Unknown distribution option
'install_requires'" but it seems to install anyway.
I can use everything fine but I cannot use *.jpg in command i don't know why like
ReplyDelete"google picasa post --title 'Natural' *.jpg"
Do you have any suggest?
IIRC *.jpg won't work because windows command prompt won't expand wildcards.
ReplyDeleteWarning about install_requires could be from absence of setuptools. Try to install it before installing google's libraries.
ReplyDeletehttp://pypi.python.org/pypi/setuptools/0.6c11
Shiroi Hane said...
ReplyDeleteI've installed Python 2.6 (on 64-bit Windows 7) and it seemed to go OK up until first trying "google docs list", where I get an error "C:\Python26\python.exe: can't find '__main__.py' in 'C:\\Python26\\googlecl-0.9
5\\src'"
---
I'm not familiar with Windows 7, but I could hazard a guess that it might be related to file permissions. But to be honest, I'm not that familiar with python troubleshooting either, so I could be way off base. :)
DominixZ said...
ReplyDeleteI can use everything fine but I cannot use *.jpg in command i don't know why like
"google picasa post --title 'Natural' *.jpg"
---
bialix said...
IIRC *.jpg won't work because windows command prompt won't expand wildcards.
---
Basically, yes, Windows is not a friendly scripting environment.
You could do something like this:
FOR %%i IN (*.jpg) DO google picasa post --title 'Natural' %%i
That should post each image one at a time. Not great, I know. I think there will need to be either enhancements to GoogleCL (such as expanding wildcards) to accommodate Windows users or Windows wrappers written around GoogleCL if it hopes to be as useful on this platform.
Hmmm...installing on windows is painful
ReplyDeleteIf I use python 2.5, I get
python: can't open file 'C:\googlecl\googlecl-0.9.7\src': [Errno 13] Permission
denied
If I use python 2.6, I get
C:\python\python.exe: can't find '__main__.py' in 'C:\\googlecl\\googlecl-0.9.7\
\src'
Any cluess on what I can do to make my life any better....
I'm running andLinux on XP, so googleCL can run under that.
ReplyDelete@Vijay Challa
ReplyDeleteWhat's the command you're entering? It looks like you're trying to run "googlecl-0.9.7\src" which is a directory instead of "googlecl-0.9.7\src\google" which is the actual file.
Thanks for the write-up!
ReplyDelete0.9.7 should make launching the browser much easier (as well as provide a less frightening message during authentication.)
Re: filename expansion (aka "globbing") -- another user suggested Cygwin. Unfortunately, I have no experience with it, so I can't help beyond mentioning it.
Thanks for the post Isaac. Vijay / Shiroi, Did get the following error
ReplyDeleteC:\Python26\python.exe: can't find '__main__.py' in 'C:\\googlecl-0.9.7\\src'
On checking round that I had not extracted googlecl-0.9.7 to under the Python directory but to a different location. Re-extracted the tar to under C:\Python26, ran setup.py install, added C:\Python26 to %PATH% env variable and created a google.cmd as mentioned by Isaac under C:\. Got rid of the error, and if i run google docs list, it shows me a prompt to specify user.
You might want to update the article to reflect the fact that GoogleCL now (0.9.7) automatically launches the default browser for authorization. If you've already added the "auth_browser = " line in your config file, it will say "unable to find runnable browser".
ReplyDeleteI tried entering the paths to Chrome, Firefox, and IE, then gave up and deleted the line in frustration - only to find out that that was exactly what I'd needed to do.
Thanks, Joe! That sounds like a bug to me, so I played around with it a bit and updated issue #51 with my findings. I'll update these instructions as well.
ReplyDeleteWith Python 2.6, after following the instructions here, my final working version of the google.cmd script is
ReplyDelete@echo off
SET googlecl_home=C:\Python26\Scripts
python %googlecl_home%\google %*
install seems to work fine, but when i go and type "google doc list", it does not open up a browser. Instead, it returns with a prompt "Please specify user:". When i put that in, it errors out
ReplyDeleteAny ideas?
installed in winxp fine but have socket error. think it needs telling to go thru proxy but haven't managed to find out how to do that yet.
ReplyDelete@Tony and Julee Huy - What's the error?
ReplyDelete@Lexicorro - Sorry, I don't know either. I haven't had any need for a proxy so far.
@Lexicorro: At a command line, you can type set http_proxy=http://proxy:port
ReplyDeleteReplacing proxy and port with your actual information. I think you can also set this up in the Environment Variables part of the System control panel item.
Hello, Can you please explain in detail how to configure the GoogleCL on WinXP. I have unable to configure it properly. I used win XP2.
ReplyDeleteI have installed python at C:\Python26
and I could not install other 2 softwares. Please explain in detail.
Thanks
Krishna
Hello, I have installed every software successfully. Can u give me a detail explanation that how should i run the command of googlecl............
ReplyDelete@KrishnaPrasad PB: I downloaded gdata and googlecl from the links above, unzipped each to their respective directories, and then ran their setup.py files from a command prompt. At which step are you running into problems?
ReplyDelete@jimy: Did you see the section I wrote on creating a google.cmd script? That's what I use myself. With that script on your PATH, running GoogleCL is easy:
> google docs list
Has anyone tried this with python-3.1.2? I am running XP SP3. I received many errors when attempting to install gdata-2.0.10.
ReplyDelete@Jared E Hildebrandt: The GoogleCL wiki page on System Requirements says Python 2.5 or 2.6 is required.
ReplyDeletehttp://code.google.com/p/googlecl/wiki/SystemRequirements
If anyone's interested, I did manage to make GoogleCL work on Android.
ReplyDeleteUsing Python 2.7 on Windows Vista and GoogleCL 0.9.8 I had to enclose the string for my path to chrome inside of single quotes and also add %s to the end. See my auth_browser below:
ReplyDeleteauth_browser = 'C:\Users\johnma\AppData\Local\Google\Chrome\Application\chrome.exe' %s
I did a lot of standalone testing with webbrowser and found that it uses shlex which was removing all the backslashes from the browser string. The only way I found to avoid that was to enclose the string in single quotes. I also had to add %s otherwise webbrowser would try to clone a new chrome "controller" from its default list of controllers, however there isn't a default chrome controller, so this would also fail.
Update on auth_browser on Windows. You can also use forward slashes.
ReplyDeleteauth_browser = C:/Users/johnma/AppData/Local/Google/Chrome/Application/chrome.exe' %s
This issue with webbrowser.py is discussed at:
http://comments.gmane.org/gmane.comp.python.tutor/45076
Did anyone tried the Discovery APIs with GoogleCL. There is a description on http://code.google.com/p/googlecl/wiki/DiscoveryManual but I don't get it to work
ReplyDelete