webGobbler
Introduction
- Purpose: This program creates pictures by assembling random images from the web. Think of it as attempt to capture the chaos of the human activity, which the internet is a partial and subjective snapshot of.
- Motivation:
I discovered WebCollage and debris .
What's wrong with WebCollage : Not especially pretty, and written in perl. I hate perl ;-)
What's wrong with debris : Sources not available. Only works under Windows. Does not support proxies.
I created gossyp some time ago. I told myself I could do the same for images.
I also wanted to train myself better at multi-threading programming.
I wanted to be able to feed those images in a desktop background changer, a screensaver or whatever I want.
- Authors:
Examples
The examples are available in the main gallery: http://sebsauvage.net/webgobbler/.
Features
webGobbler:
- creates images by assembling random images.
- can get random images from the internet or from a directory of your choice.
- can apply various effect to images (rotation, inversion, mirror, re-superposition, emboss...).
- can generate images of any size (Want to create a 10000x10000 images ? No problem !).
- can output many file format (JPEG, BMP, PNG, TGA, TIFF, PDF, PCX, PPM, XBM...)
- can work as a simple image generator, a webpage generator, a wallpaper changer, a screensaver...
- can run in command-line mode or GUI mode.
- runs under Windows (all flavors), Linux, MacOS X and any other OS where Python and the PIL library are available.
- can save/load its configuration to/from the registry or a simple configuration file in your home directory.
- supports proxies, with or without password.
- is opensource !
- is free !
Technical details
This program is written in Python.
Here's the general overview:
There are 4 different kind of objects in webGobbler:
- The collectors are in charge of spidering the web and downloading images. They put the downloaded images in the pool.
- The image pool manages the local image collection and ensures a minimal number of images. If the image pool is going low, it will ask the collectors to get more images.
- The assemblers take images from the pool and assemble them in various ways: simple image output as it is, mosaic of images, superposition of images...
- These assemblers can be used by different programs to produce images for HTML page generation, screensavers, desktop background...
Each collector and the pool run in their own thread, so that the assemblers and other objects can continue to work while the web is spidered.
The design is modular.
For example, it's easy to write a new collector to spider a specific website.
It's also very easy to write new assemblers.
And assemblers are easy to use in programs.
Still there is room for improvement (and refactoring...).
Currently, existing modules are:
- collector_deviantart: This collector gets random images from http://deviantART.com, an excellent collaborative art website. Anyone can post its creations, and visitors can comment. Site contains photography, drawings, paintings, computer-generated images, etc.
- collector_randomimagesus: http://randomimage.us shows a random, user-submitted picture on homepage. (This collector is currently deactivated.)
- collector_askjeevesimages uses the Ask Jeeves Image search engine (http://pictures.ask.com) by querying with randomly created words (I will later use a real word list). This search engine even has a "bad" image filter which should filter most pr0n away.
- collector_yahooimagesearch: This is also an image search engine (http://search.yahoo.com/images), but with a different database than AskJeeves.
- collector_googleimages uses the Google Image search engine (http://images.google.com)
- collector_flickr uses random images from the famous Flickr.com website (http://flickr.com)
- collector_local: If you do not have internet connexion, or a slow one, or do not want to eat bandwith, this collector can scan local harddisk to find images (Use the
--localonly
command-line option to use it.). Surprisingly enough, this gives not-so-bad results.
- assembler_simple simply outputs a single image, resized to the desired dimensions (with antialiasing).
- assembler_mosaic creates a mosaic of images (a grid of images). You can change desired final resolution and the number of images to put in the mosaic.
- assembler_superpose is currently the most complex one: It superposes the images with transparency and does some miscellaneous stuff (compensate for poorly contrasted images, resize images larger than screen, try to detect "too white" pictures and invert them, rotate images, paste them with transparency, etc.).
Applications are:
- image_saver uses the assembler_superpose and saves the image as a simple BMP file every 60 seconds (configurable). This image_saver is available through the command-line or through a GUI.
- htmlPageGenerator generates an auto-refresh HTML page and and image.
- windowsWallpaperChanger changes the desktop wallpaper under Windows.
- windowsScreensaver is a Windows screensaver.
- gnomeWallpaperChanger changes the desktop wallpaper under Gnome (Linux).
- kdeWallpaperChanger changes the desktop wallpaper under KDE (Linux).
- x11Screensaver is a screensaver for X-Windows.
- There are also other uses (Gnome & KDE wallpaper changer, etc.)
Program source code is full of "FIXME" comments: There is a lot of work remaining.
Requirements
- Python 2.3
- PIL (Python Imaging Library)
- Optional: For the Windows Wallpaper changer and screensaver: ctypes module.
- Optional: For the Gnome wallpaper changer: ctypes module.
- Optional: For the KDE wallpaper changer: python-dcop module.
- Optional: For the configuration GUI: Pmw (Python MegaWidgets) (provided with webGobbler source)
- Optional: Psyco (to speedup webGobbler)
Platforms supported
Any platform capable of running Python 2.3 and PIL.
For the screensaver: Windows 95/98/ME/NT/2000/XP/2003 or X-Windows
For the wallpaper changer: Windows 95/98/ME/NT/2000/XP/2003 or Linux with Gnome or KDE.
webGobbler has been successfully run on Windows, Linux and MacOS X.
FAQ
- Why is it called webGobbler ?
Because it gobbles anything it finds on the web. (Well, I should have named this something like "Chaos Tapestry" or "The beautiful trashbin" or "Shreddage". Whatever. Too late.)
- Why choose Python ?
Efficiency, readability, portability, large standard libraries, coolness.
- Why don't you use [AltaVista image search][FastPath image search][Insert-your-image-search-engine-name-here] ?
Because most of these search engine have the same database as Yahoo and Jeeves. Give it a try: search the same word in all those engines: you will find the same pictures in the same order.
- What's the largest image size webGobbler can generate ?
I don't know, but this should be fairly large (depending on how much memory your computer has). It's bound to the PIL library. I managed to create a 10000x10000 image with no problem. It just ate an awfull lot of memory.
- How much memory does webGobbler use ?
It depends mainly on the size of the image to generate. The larger the final picture, the more memory used. The GUI version uses more memory, of course. Hint: If you want to create large images, use the command-line version.
- How much CPU does webGobbler use ?
When only spidering the web, almost nothing (usually below the 1% threshold). When assembling images, slightly more, but on a short period.
If you want webGobbler to never slow you down, don't forget you can change its process priority so that it will *never* slow other processes.
Under Windows NT/2000/XP, bring the task list (CTRL+SHIFT+ESC), right-click on Python.exe ou webGobbler.exe, "Set priority" > "Low".
Under *nixes, use nice to set the priority to 19.
Anyway, webGobbler is usually nice on the CPU.
- What image formats are supported by webGobbler ?
webGobbler will only download the following image types from the internet: jpeg, gif, png, tiff and bmp. webGobbler could be easily extended to support any format supported by the PIL library. (For the list of supported formats, see http://www.pythonware.com/library/pil/handbook/formats.htm)
In output, webGobbler can write all format supported by PIL: As of 2004-09-16, PIL can write: PNG, BMP, JPEG, GIF, PDF, TIFF, PCX, PPM, XBM, EPS, IM and MSP. To choose the output format, you just need to use the desired extension in command line (eg. --tofile mypicture.tiff)
- Will there be porn in images generated by webGobbler ?
It may. I haven't developped anything to block porn. Flickr may churnout some porn and DeviantArt.com also has some nudes (rare). Other collectors are not likely to output porn, because the default behaviour of search engines is to block porn. If you want to reduce the risk of seeing porn, deactivate (in code) the two following collector: collector_flickr, collector_deviantart.
But there is no guarantee ! The disclaimer of webGobbler is still relevant.
- What's this imagepool directory ?
webGobbler stores in this directory the images it has downloaded from the internet. Once a while, it picks an image from this directory in order to mix it and removes it from the imagepool directory. webGobbler will try to keep a constant number of images in this directory, so it will not grow out of control.
- Why do the files in the image pool have those strange long names ?
webGobbler ignores the name of the original image on the internet. The name derived from the content of the image itself. This get rids of duplicates (two identical images with the same name). This also ensures two different images with the same name will not clash. (This is much like most P2P programs do to identify files whatever their name.)
If you open an image from the pool with a hex editor, you will see the original image URL and file name at the end of file ("--- Picture taken from..."). If you download the image and compute its SHA1 (with sha1sum for example), you should find the same SHA1 as in the filename (WG*.*).
- How can I know which images were used to compose the image ?
Look into the image pool directory (./imagepool): There is a file named last_used_images.html
. It contains the URL of the latest images used to create the current image. Most recent images are at the bottom of the list. This file will be kept to a maximum of 1 Mb.
- How can I participate ?
What I need most now is a webGobbler logo. Ideas or images are welcome. I prefer 2D vector work more than 3D C.G. If your work is integrated into webGobbler, your name will of course appear in the credits. Don't forget this work will go under the zlib/libpng license.
Right now, I do not seek direct contributions to code.
If you have ideas (about image collection, assembling or any other feature), I would be most please to hear about them !
- Why not put webGobbler on SourceForge.net ?
I have no time to administrate such a thing (CVS, bug tracking, etc.). This project is too small to benefit from this.
- What is this 'psyco' thing ?
Psyco accelerates Python programs on x86-compatible processors (Pentium). Acceleration ranges from x2 to x100 without a single modification in code. If psyco is installed, this program will automatically use it to run faster. Don't worry if you don't have psyco: webGobbler will still be fully functionnal and will run as usual.
- WebGobbler does not create a nice collage of my photos !
WebGobbler is NOT INTENDED to create a nice collage of your photos. It's designed to be a random modern-art generation program. The "local directory" collector is here only for convenience.
- Thief ! You steal images.
No. I do not steal image. webGobbler does not steal more images than your average browser either: They both download images and display them on the computer screen.
Respecting the work of others and their copyrights is YOUR responsibility, not mine, webGobbler's or your browser's. If you are creating art based on work of others, YOU'RE the person responsible, whatever tool you use (webGobbler, The Gimp or any other).
- I want to be able to click on the image and be redirected to the original image.
Not in a near future, I fear. (This is tricky, because a single pixel on the image is the result of the superposition of dozens of different images. This feature would not be relevant.)
- I want to take only image from a single website.
It's not possible with the current version of webGobbler, and this feature is not planned in a near future.
As a workaround, you can download the website with tools like HTTrack, then ask webGobbler to use only images from this directory.
History
- 1.0 beta 3 (2004-xx-xx):
- First public release. zlib/libpng license.
- Code was somewhat cleaned (Lots of work remaining)
- I chose a global config (CONFIG) instead of passing parameters to each constructor.
- Detailed command-line help is now displayed.
- Added more documentation (license, FAQ, etc.)
- Currently, only the image generator (--tofile) and Windows wallpaper changer (--towindowswallpaper) are implemented and active.
- implemented persistence for assembler_superpose. Still need to add persistent directory in commande-line.
- 1.0 beta 4 (2004-09-10): (not released)
- Yahoo Image search "not found" message has changed.
- deviantArt.com link to full view image has changed.
- In order to be more portable, I changed collector_local default start directory from "C:\" to "/" ("/" is also accepted under Windows)
- 1.0 beta 5 (2004-09-13):
- Changes in assemble_superpose: New mode which does not darken image but uses Equalize operation to uniformize channels values. This give overall better pictures:
- less dark areas
- less grey areas
- more saturated colors, even if all source images are not very saturated.
- more contrast
- better image mixing
- less rectangular visible edges.
- much more details
- some details can last longer in the final image and shift colors.
- That's closer to what I intended to do. A more chaotic picture. Thinking of it, I should have named this program "Chaos Tapestry". This program is an attempt to capture the chaos of the human activity, which the internet is a partial and subjective snapshot of.
This mode is now the default mode for assembler_superpose. The old mode (beta 4 and previous) is available through the new "--variante 1" command-line option.
- I chose to de-activate Psyco by default. You will have to uncomment psyco code to use it (My old Pentium 200 with 64 Mb of RAM does not seem to appreciate psyco on heavy load).
- randomimages.us collector deactivated because it gives often the same images. You will have to uncomment it to re-nable it. This seems to give better overall pictures.
- new Emboss filter (--emboss).
- 1.0 beta 6 (2004-11-01):
- When search engine are overloaded, the delay has been extended from 10 to 60 seconds to be more gentle with them.
- last_used_images.txt is now last_used_images.html so that it's easier to view remote images without the hassle of copy-pasting URLs (thanks to Kilian for suggesting this.).
- webGobbler image branding (lower right corner) font size is a bit larger. I still need to find a logo for webGobbler (maybe a 2D vector gobbler with a rainbow comb&tail and a vaccum cleaner in hand ? ;-)
- Added new answers in the FAQ.
- "--norotation" argument added. This disables image rotation.
- "--proxy" argument added. Now you can properly configure proxy from command-line (without having to touch the code.)
- Also supports Basic proxy authentication (for proxies which require a login/password): "--proxyauth" argument has been added. You do not HAVE to provide password in command-line. If the password is not provided, you will be prompted to enter it.
Example (with password) : --proxyauth "foo bar:mysecretpassword"
Example (without password): --proxyauth "foo bar"
- When downloading an image, its MIME type (Content-Type) is now checked against a fixed list of known MIME types. This prevents the download of exotic image formats which would not be supported by PIL. (See ACCEPTED_MIME_TYPES in code.). Furthermore, the correct extension will be added to the image file according to the MIME type so that images in the imagepool will be saved correctly even if the original URL does not have the correct extension (such as images provided by CGI).
- Slightly reduced message verbosity so that it fits a bit nicer on screen when using --debug.
- Better deviantArt.com particularities handling (poetry pages, etc.). This will slighly reduce the number of outgoing requests to this site.
- 1.0 beta 7 (2005-01-14):
- corrected a bug in collector_local which would reset its directory pool a bit too early in some situations.
- collector_deviantart changed to adapt to deviantart.com website changes.
- For the sake of the Netiquette, webGobbler now properly sends its User-Agent "webGobbler/1.0b7" in HTTP headers instead of the standard "Python/urllib".
(But for the sake of the Netiquette, should I respect robots rules ? webGobbler does not technically 'spider' websites.)
- socket timeout set to 15 seconds for the whole program so that the collector threads are not stuck trying to download an image from a site which does not respond (or does not respond in a reasonable time).
- In all collectors, sleep() was replaced by self.waituntil so that collector will react more quickly on shutdown commands.
FIXME: I still need to take care of some eventual time-warping risks using time.time().
- revamped all collectors so that their _getRandomImage() method returns more quickly while not slowing down the spidering process. This way, the threads will die more quickly when requested to shutdown. This is better for the screensaver.
- Windows Wallpaper changer now automatically uses the current screen resolution. Command-line specified resolution will be ignored.
- I wrote the core of the Windows Screensaver, using ctypes only (Pew ! Win32 API programming sucks.).
(No dependency on Mark Hammond's win32 module, nor pyGame, nor Tkinter, nor pyScr...). Resulting binaries will be smaller.
With py2exe+UPX, I managed to have the whole webGobbler below 1,3 Mb.
Right now, only the /s (start) option of Windows screensaver is implemented. I still have to implement /p /c and /a.
You'll have to configure the screensaver by the command-line with --saveconfreg (see below).
- The screensaver has a seperate thread to handle its window, so that it will immediately turn off if mouse is moved, even if the other threads are still downloading or crunching data.
Better responsiveness, happier user.
- I chose to put the screensaver in a separate file (wgwin32screensaver.py). This may change later.
- Implemented the applicationConfig class which will ease the storage/retrieval of program configuration. It can import/export to/from XML, file or Windows registry.
The screensaver (/s) automatically uses Windows registry configuration.
- Added command-line options saveconfreg/loadconfreg/saveconffile/loadconffile to save/load options to/from registry/file.
Usage example: specify all your options in command-line and use --saveconfreg
Then you will just have to call webGobbler with --loadconfreg to recall all the options.
The screensaver will automatically use options saved with --saveconfreg
- I stumble upon this: http://www.scroogle.org/gscrape.html
The author is quite right.
After all, Google makes multi-million dollars benefits by indexing and using our sites. I don't earn a single penny out of Google, so why should I feel guilty of using Google in return ?
So I decided to include a collector for Google Image Search. webGobbler beeing only for private, non-commercial use, I invoke the "fair use" right.
- Better error handling (that's why the code is so verbose).
- 1.0 beta 8 (2005-01-16):
- changes for the deviantart.com website.
- 1.0 beta 9 (2005-01-19):
- Added the --singleimage command to generate a single image and exit.
- Added the --tohtml command which generates an auto-refreshing HTML page and its corresponding JPEG image. Simply open the html page in your browser and the image will automatically refresh.
You can also generate directly in the directory of your webserver (--tohtml "c:\wwwroot\fun\webgobbler_current.html")
- Branding was redesigned with a new font and the small eye logo of my website. (The font is '04B-11' from http://www.dsg4.com/04/extra/bitmap/)
- When starting a new image, a message is displayed: "Please wait while the first images are beeing downloaded..." (just to acknowledge that webGobbler is up and running, because the first image can appear 60 seconds after starting.)
- Changed the name of some configuration parameters.
- Switched from XML to plain .INI file (It's easier for the users to edit.). Types are checked against default values on reading.
- In consequence: saveToFileInUserHomedir() and loadFromFileInUserHomedir() now save .INI-structured files instead of XML.
- saveToRegistryCurrentUser() and loadFromRegistryCurrentUser() now use a different values in registry for each parameter (It's easier to edit with RegEdit, and will ease the creation of the screensaver configuration GUI - probably in Delphi.)
Note that all parameters are saved as text (REG_SZ) in registry. Types are checked on reading.
- Proxy password is now garbled when saved to INI/file/registry.
IT IS NOT ENCRYPTED and can still be recovered. But at least it's not stored in plaintext.
- Image download now immediately aborts if the image size announced in HTTP response headers is too big (in class internetImage).
- internetImage object now returns the textual reason why the image was discarded (self.discardReason): URL blacklisted, not an image, image too big, etc. This is displayed when --debug is used.
- URL blacklisting was implemented (see BLACKLIST_URL). (URLs filters use a "à la AdBlock" syntax.)
- blacklist.imagesha1 and blacklist.url are now exported/imported in .INI files/registry so that they can be user-customized (instead of hard-coded).
(They still cannot be customized through command-line: the configuration (file or registry) needs to be manually updated.)
Values are separated by |. % must all be escaped to %%. Example: http://*.doubleclick.net|*/adserver/|http://*.xiti.com
- Global application logging mecanism is in place. (Woao... logging module is really *great* !)
- Cleaner shutdown (I enforced threads shutdown order)
- Prevented simultaneous calls to superpose() in each assembler_superpose instance in order to prevent CPU and image pool waste. (self.currentlyassembling attribute, but not read/changed in critical section because it's not worth.)
- --debug mode will now also write log to a file (webGobbler.log) Now I can catch almost any unexpected exception and log it to this file (even in the console-less (screensaver) version of webGobbler)
- psyco was re-enabled (gives a good performance boost, especially for the screensaver).
- psyco warning is now catched and silenced.
- code was adapted to run both in console and console-less mode (win32gui.exe in cx_Freeze). It's now possible to 'compile' webGobbler with cx_Freeze and get rid of the Dos window (It's better for the screensaver).
You can still use --debug in the console-less version to see what's going on (in the webGobbler.log file).
- Side effect: You can run the console-less version with: wg.exe --towindowswallpaper to have a background process which will change your background. The process is nice enough to not fail if the internet connection drops. It will resume downloading and generating images when the internet connexion is available again. You can put this executable in your startup menu. (But to stop it, you will have to kill the process.)
- Still no binary this time: There's work remaining (screensaver configuration GUI, installer, etc.)
- 1.0 beta 10 (2005-03-20):
- Added the variante 2 (--variante 2) which mirrors and re-superposes the final image. It creates a quasi-symmetry in the image.
- Small bug corrected (session saving).
- 1.0 beta 11 (2005-06-29):
- option --variante 2 changed to --resuperpose
- spurious exceptions trapped on some PIL calls.
- oops... in beta 10, I forgot to update the version number in User-Agent.
- collector_deviantart changed to accomodate DeviantArt.com changes.
- 1.0 beta 12 (2005-06-30):
- I got a *lot* of exceptions with the new version of PIL (Hence all the new try/except).
- collector_askjeevesimages changed to adapt website changes.
- AT LEAST ! A configuration GUI developped. You can now access webGobbler configuration with the /c or --guiconfig option.
The GUI is developped in Tkinter, which makes it portable. Configuration GUI will automatically pickups registry or .ini file according to what's available.
Though... It's not completed yet. (For example, the help does not display help, and I still need to tight up the widgets (alignment, resizing, data controls, etc.).
I think I will also put some icons to illustrate the different options.
- Therefore: the /c option for the Windows screensaver is now working !
- Still no binary this time (I have to implement help and also get rid of a packaging & path issues (Is pyco is dead ???)).
- 1.0 beta 13 (2005-07-02):
- Corrections for Python 2.4.1 (You were getting an exception in the GUI on the "Save" button).
- Tested successfully with Python 2.4.1, PIL 1.1.5, ctypes 0.9.6, Pmw 1.2 and cxFreeze 3.0.1.
- assembler_superpose() now closes more quickly when asked to shutdown() (Previously, he used to finish to process its 10 images before dying.).
It's much better for the screensaver.
- When resolution is changed, the previous image is not trashed anymore: It's resized. This way, the user will not needlessly lose previously used CPU cycles and bandwith.
- Debug option added to configuration GUI.
- Added some icons in the GUI.
- Removed the Help area from the GUI.
- 1.0 beta 14 (2005-07-02):
- collector_askjeevesimages changed again to adapt website changes.
- 1.0 beta 15 (2005-07-05):
- AT LEAST, a working binary for Windows. No command-line hassles. Rejoy !
- webgobbler_config now derives from Tkinter.Toplevel so that it can be used as a dialog window in an application.
- corrected a bug in --guiconfig which would not display the window (!)
- assembler_superpose refactored: It does not derive from abstract class assembler anymore. The new assembler_superpose is more efficient. (Most methods of this class are now non-blocking.)
- Method assembler_superpose.saveSessionImage() was removed: this assembler now always save session state once it has completed assembling images.
- The default behaviour of webgobbler.py when no command-line options are specified is to run in GUI mode. All command-line options are still available. The command-line help is available through the new --help option.
- As the application is in a separate thread than image downloading and crunching, it should be fairly responsive. (Well... maybe except when shutting down due to network timeouts.)
- CONFIG is no more global: it is passed in each constructor. (It was a mess, really.)
- 1.0 beta 16 (2005-07-06):
- Oops... I completely fucked up the distribution of beta 15 because I picked up the wrong directory. Sorry for that.
- ask.com changed again: collector_askjeevesimages was changed accordingly.
- corrected a bug in GUI which would trigger the Tkinter timer twice.
- corrected a bug when using a proxy with password with the GUI (didn't work in beta 15).
- 1.0 beta 17 (2005-07-08):
- In beta 16 binary, I had to include the whole tcl/tk library :-/
In beta 17, it's still the case, but I removed some useless parts (demo, http...)
- Added a handler for the "pr0n" warning message of Yahoo.
- I used AutoIt to create the .scr which runs the main webGobbler.exe
- Windows binary is now nicely packaged into an installer using InnoSetup (Great program, really ! And very easy to use.)
- To help the Windows installer detect running instances of webGobbler, webGobbler creates a mutex under Windows.
- The screensaver seems to be a bit too sensitive to some Windows events and it turns of too easily. I saw this behaviour under Windows 2000 but could not reproduce it under Windows xP. I will have to investigate this.
- 1.0 beta 18 (2005-07-14):
- In GUI, added a confirmation box for "Start new image from scratch"
- Added a status in the main Window (to see collectors activity).
- Now you do not have to restart the application if you change proxy settings.
- The initial message "Please wait while the first images are beeing downloaded..." is now removed as soon as the first images are superposed.
- 1.0 beta 19 (2005-07-18):
- Requested feature: In GUI, added ability to choose start directory when the local disk only is used to get images.
- The local disk collector status now also displayed.
- Corrected proper status display ('Off') if a collector was de-actived (Previously status was not updated after collector de-activation).
- 1.0 beta 20 (2005-07-19)
- Improved the random word generator.
- Removed the forced GUI update (was useless).
- In the GUI, added the status of the assembler (Now you can see when it's working).
- In the GUI, the tkInter timer (.after()) which triggers image assembling was replaced by an internal variable.
- In the GUI, timer is now re-armed with proper delay when user selects "Update current image now".
- I got rid of a major plague of webGobbler: Sharp edges !
webGobbler now smoothens borders before superposing images (see the _darkenImageBorder() method). This gives much better results.
Border smoothing is enabled by default (with a 30 pixel border). If you want to disable border smoothing, set border size to 0.
Border smoothing parameter is available from command-line (--bordersmooth) and from the GUI.
- 1.0.0 (2005-09-23)
- Yahoo "no result found" message changed.
- Corrected a bug in the screensaver which would display the configuration screen when the screensaver stops.
- Application seems stable enough to go out of beta stage. Welcome the version 1.0.0 !
- 1.0.1 (2005-10-30):
- In Windows screensaver, I lowered the sensibility against the WM_MOUSEMOVE message.
- Changes in collector_askjeevesimages to adapt search engine changes.
- 1.2.0 (2006-02-03):
- Added gnomeWallpaperChanger and kdeWallpaperChanger, contributed by Kilian (http://thesermon.free.fr/) Thanks a lot for the contribution !
gnomeWallpaperChanger requires gconf 2 to work. kdeWallpaperChanger requires python-dcop, which should be installed by default with KDE.
- Added a new collector: Flickr
- Changes in collector_yahooimagesearch to adapt search engine changes.
- Changed the name of debug*.html files when a search engine change is detected.
- 1.2.1 (2006-02-04):
- Added in the GUI:
- A "Save image" button (same as the "Save" menu option, except that is defaults saves as bmp instead of png for a faster saving.)
- An "Auto-save" checkbox which automatically saves the image after each update as yyyymmmdd_hhmmss.bmp (eg."20060204_2142.bmp").
- An "Update image" button (same as the "Update" menu option).
- 1.2.2 (2006-02-05):
- In gnomeWallpaperChanger, correction for the libgconf-2 library path.
- 1.2.3 (2006-02-26):
- At least, the X-Windows screensaver !
Contributed by Kilian (thanks for the work !)
- collector_local now avoids /mnt, /proc and /dev directories.
- improved a *lot* the ImportError messages. This helps to spot import problems (such as nested imports, eg. ctypes imported in wgx11screensaver imported in webgobbler.)
- 1.2.4 (2006-02-28):
- New
--scale
option to allow the images to be scaled up or down before beeing superposed. This can be used to create images with more or less details. For example, use --scale 0.5
to create more detailed images.
- This version was submitted to several download websites (clubic.com, snapfiles.com, uptodown.com, softpedia.com, download.com, etc.). I received a very good feedback.
- 1.2.5 (2006-05-02):
- Added keyword search. This feature was requested by several users. You can use keyword search from the command-line with the option --keywords (eg. --keywords cats or --keywords "cats dogs"). This option is also available in the GUI.
- In GUI mode, the main window now immediately closes even if a download is in progress. (This was confusing some users in 1.2.4). (I'm still trying to find a way to kill a thread in Python... :-/
- corrected a bug which would needlessly waste an image from the imagepool when the image was larger than screen.
- corrected a bug in the get_unix_lib() library search function.
- corrected a bug in the X11 screensaver.
- changes to accomodate ask.com search engine changes.
- other minor corrections.
- msvcr71.dll is now bundled with the Windows installer. (This is the Microsoft VisualStudio runtime the Python virtual machine depends on, and some people do not seem to have this DLL on their system.)
- version tested with Python 2.4.3, ctypes 0.9.9.6, PIL 1.1.5, psyco 1.5.1 and PMW 1.2.
- 1.2.6 (2006-08-08):
- collector_deviantart changed to adapt to the new version of the website.
Disclaimer
IMPORTANT - READ
This program downloads random images from the internet, which may include pornography or any morally objectionnable or illegal material.
Due to the random nature of this program, the author of webGobbler cannot be held responsible for any URL this program has tried to reach, nor the images downloaded, stored or displayed on the computer.
In consequence:
- this program may not be safe for kids.
- this program is definitely NSFW (not safe for work).
Use at your own risks !
You are warned.
You are advised this program may use copyrighted images.
Thus the images generated by webGobbler are only suitable for private use.
If you want to use it for non-private purposes, you may have to requests grants from the original image rights owners for each image composing the whole image. (The URLs of the last pictures used to generate current image can be found in the last_used_images.html
file in the image pool directory.)
License
This program is distributed under the OSI-certified zlib/libpnglicense .
http://www.opensource.org/licenses/zlib-license.php
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Screenshots
Note that webGobbler can also run in command-line mode or as a screensaver.
Download
Before downloading the following file, you must read the disclaimer and the license agreement. If you do not agree with both of them, do not download the following file.
Latest version is 1.2.6 (2006-08-08).
- Source code: wg126src.zip (169304 bytes, SHA-1:6e4d0c6dd128bea4e4e35122bfe5e0c61baee535) (Bundled Pmw is provided with the source.)
You will have to install Python and PIL to run it (and possibly ctypes for some options).
- Win32 binary (with installer): webgobbler126_setup.exe (3956220 bytes, SHA-1:ea2094b50c38b82d9dd5a610c10655d3d8e1fd4b)
(Includes command-line and GUI versions. Does not include source. Does not require Python to be installed.)
Command-line examples:
python webgobbler.py --tofile webgobbler.bmp
Generate a new image every 60 seconds in 1024x768 (You will have to wait a few minutes until it gives interesting results.)
python webgobbler.py --tofile image.png --resolution 640x480 -every 30
Generate a new image at 640x480 every 30 seconds.
python webgobbler.py --towindowswallpaper --norotation --emboss
Generate a new wallpaper every 60 seconds. Disable rotation and emboss the generated image.
No use specifying resolution: the wallpaper changer will automatically pickup screen resolution.
python webgobbler.py --towindowswallpaper --proxy netcache.myfirm.com:3128 --proxyauth "John Smith:booz99"
Generate Windows wallpaper, and connect to the internet through the proxy netcache.myfirm.com on port 3128 with the login "John Smith" and the password "booz99".
python webgobbler.py --every 120 --invert --saveconfreg
Saves the options in Windows registry for later use with --loadconfreg or /s (Windows screensaver)
python webgobbler.py --loadconfreg
Run webGobbler using options saved in the registry.
python webgobbler.py /c
Call the webGobbler configuration screen. You can tweak all the options and click the "Save" button.
These options will be used by the screensaver (see /s below) or the --loadconfreg/--loadconffile.
python webgobbler.py /s
Call webGobbler as a Windows screenaver. Options will be read from the registry. (The DOS Window will still appear.)
To create the registry setting with default values, run: python webgobbler.py --saveconfreg
(Note that if you use the Windows binary, replace "python webgobbler.py
" with "webgobbler_cli.exe
" or "webgobbler.exe
".)