geoupload -- upload files to Geocities


geoupload [--options] filename...


geoupload uploads files to your Geocities hosted web site, using its "file manager" web interface.

Create your content locally with the same directory structure as the site, and setup a ~/.geoupload file with your username, password, and local base directory. For example

    $username = 'my_username';
    $password = 'secretpassword';
    $basedir  = '/where/i/keep/my/files';

This is actually perl code, so you can put comment lines with # or use $ENV{HOME} or write some conditionals or whatever. Then for instance to upload an index.html page

    geoupload /where/i/keep/my/files/index.html

or upload all html pages

    cd /where/i/keep/my/files
    geoupload *.html

Subdirectories under the basedir are supported, but there's no automatic way to create them (yet), you have to login manually and do that.

geoupload works by clicking through the various login pages to get to the File Manager upload, the same as you'd do manually with a web browser, but using the perl LWP module. (Incidentally, LWP does a good job on binaries, it can usually send them as 8-bit bytes, where for instance Mozilla conservatively expands to binhex.)

geoupload keeps a .geoupload-cache directory in your local $basedir, with saved login cookies and the upload form, so once logged in each subsequent upload is just a single HTTP request. A login seems to last a week or so, but if you have trouble try deleting the whole cache directory to make a clean start.


The command line options are


Print some brief help information.

--ls [dir...]

Print a listing of files at geocities in the given directories, or the current directory by default. Eg.

    geoupload --ls
--rm filename...

Remove the given files from the geocities server. (A directory cannot be removed, yet).

--stats filename...

Print hits statistics about the named files.


Print some diagnostics about what's being done. With --verbose=2 print some technical details too. Eg.

    geoupload --verbose myfile.html

Don't upload, instead download the named files and check they're the same as the local copies.

For HTML files geoupload attempts to undo the advertising inserted by the geocities server before comparing. This might be a bit fragile and so might report a HTML file as different when it's in fact ok.


Print the geoupload program version number. With --verbose also print some of the module version numbers.


The modules and packages required are

    Crypt::SSLeay or IO::Socket::SSL

The SSL modules are per the LWP README.SSL file, either one suffices.



Configuration file.


Various cached files. Delete them to force a fresh login, if perhaps something fishy seems to be happening.


Uploads to a non-existant subdirectory are sent, but silently do nothing. The error from --ls in a non-existant subdirectory is obscure too.

--rm of a non-existant file die with some obscure Mechanize messages.





Copyright 2007, 2008, 2009 Kevin Ryde

geoupload is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

geoupload is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You can get a copy of the GNU General Public License online at