Strip Club v0.9.1.2
Released 05/07/05
Copyright 2004,2005 Racercks Productions

Coding - Benjamin Cutler (cutlerbc)
NSIS Installer Script Provided by - Brian Rupe (hazer)
Testers - Brian Rupe (hazer)

Strip Club is an Open Source project, protected by the GPL. See COPYING
for details. the pre-compiled Windows version also statically links code 
from FLTK, which is an LGPL'd library.

This program comes with ABSOLUTELY NO WARRANTY AT ALL. If it causes your
computer to burst into flame, summons demons to attack your dog, or makes
you stub your toe on the desk, it's not my fault. Use at your own risk.

Compiling-

If you're compiling this from source, you're going to need:

* fltk, fltk_images	(http://www.fltk.org/)
* pcre			(http://www.pcre.org/)
* libpng		(http://www.libpng.org/)
* libjpeg		(http://www.ijg.org/)

I can't guarantee any of the makefiles will work, but I can't
imagine why they'd break assuming everything it would be looking for is
installed. See INSTALL for details.

Initial Install-

If you're using the precompiled Windows version, and you're getting DLL 
errors, go to the homepage at http://stripclub.sf.net/ and get the DLL pack. 
If that still doesn't solve your problem submit a bug report.

After you get the program running, either import one or more of the provided
.comic files or add your own if the comic you like doesn't have one provided.

Using a Proxy-

If you're behind a proxy, there are two ways you can get Strip Club to work
with it. You can set the http_proxy environment variable before running the 
program, or configure it in the Preferences window. Strip Club will parse it 
and use it for a proxy. If it exists, the environment variable takes 
precedence over the configuration setting. If you don't need a proxy at all,
leave them both blank and Strip Club will use normal HTTP requests.

Proper setting for either is:

http://proxy-host:port

(eg http://proxy.company.com:8080)

Downloading New Comics-

Simply select "Update Comics" from the file menu. This will download a cache
file from the Strip Club site, check for updated .comic files, and download
them to a special cache dir. ("$HOME/.stripclub/comics" on *nix-like systems,
or just "comics" for you Windows people.) This will not overwrite any custom
comic files unless you've saved them into this cache folder. (So don't do 
that.) The remote comic cache file is updated every six hours, if there are 
any new .comics available.

Adding Comics-

The best way so far to add in your own comics is to use the "Add New Comic" 
menu item. You can hand edit the prefs file, or hand edit a .comic file and 
try to import that, but be warned the import code is very non-robust and will 
break horribly if it's fed an incorrectly formatted .comic file. The .prefs 
code is more robust but still prone to errors. Far and away the best option 
is to use the menu item. I will be releasing new .comic files fairly 
regularly, by request. Also feel free to submit your own through the sf.net 
project site.

Editing/Deleting Comics-

Just select "Comics -> <category> -> <comic> -> Edit", it'll pop up a nice
window for you to change anything that needs to be changed, or delete the
comic from your list entirely. This will not delete the .comic file, that
stays in the cache, but it will no longer be in your menu nor will it show up
with the Prev/Next Comic buttons.

Comic Settings-

Anything marked with a * is not exported by the program.

*Skip: If this is checked, this comic will not be opened with "Prev/Next 
Comic". Useful for comics that don't change often, or have ended.
Name: The FULL Name for the comic, used to display the menu item and the title
bar (eg "Sluggy Freelance")
Base URL: A static URL pointing to the "latest day", loaded when you switch
comics or hit the "Latest" button
First URL: A static URL pointing to the "first day", loaded when you hit the
"First" button
Image Pattern: See below.
Previous/Next Link Pattern: See below.
Default Relative URL: A "template" value used for the "Open Relative URL"
menu option. Can be set to whatever, but is meant to be informative.
*User Agent: Some comics reject any User Agent string that doesn't look like
a web browser. If this is true for this comic, enter something here, either 
manually or use one of the provided alternatives.
Image File Pattern: Use this when image links aren't trivial, to extract the
portion you would use to actually locally save the files. See Real Life Comics
and Mac Hall for an example.
Category: Purely informational categorization, to help keep the Comics menu
organized. Note that you may sub-categorize by placing / characters in the
Category name, for example "Games/RPG" or "Anime/Fantasy".
Donation/Store Link: Links that will be opened by the appropriate menu item
for the comic in question. If left blank, the program will not create the
menu item. Clicking the "Paypal" button will fill in the Donation field with
a template that is only missing the appropriate e-mail address. Note that for
compatibility reasons, you must replace all "&" in the fields with "\&", or
they will not work properly on Linux.

Image Patterns-

Usually all you'll have to change is the "(/comics/... portion to whatever 
the site in question uses for it's comic image links. If you're getting ad 
banners or the like, you're not being specific enough. If you're not 
getting any images at all, it's wrong. Searches are NOT CASE SENSITIVE. 
One sticking point: Remember that to a regexp, "." means MATCH ANY ONE 
CHARACTER, not match a period. This usually won't be a problem, because 
it'll match a period anyway.  Also, "*" is not the wildcard you might 
expect. To match an arbitrary string, use ".*" where you'd use "*". 
(Technically, ".*" means "match zero or more characters that are not 
newlines", but the image/link parser filters out newline characters.) Also 
remember to keep the inside of src="" in parentheses, this is how the image 
searcher knows where the URL it's looking for is.

Example:

Img tag looks like this: 
<img blah src="/comics/YYYYMMDD.jpg" blah>

Your regexp should look like: 
<img .*src="(/comics/.*(png|jpg|gif))".*>

(png|jpg|gif) means "match either png, jpg, or gif". Some comics use more
than one format, so it's a good idea to leave this in.

Example 2:

Img tag looks like this:
<img blah src="http://someserver.com/somedir/comicYYYYMMDD.jpg" blah>

Your regexp should look like:
<img .*src="(http://someserver.com/somedir/comic.*(png|jpg|gif))".*>

Archive Support-

For the Prev/Next regexps, what you enter in depends on what the links
look like. The default is tag based searching. For this, enter in an 
expression that will find a unique tag JUST AFTER the link tag. The link
searcher will then assign whichever was the LAST LINK tag it read for
whichever link it's looking for.

Example:

Link looks like:
<a href="d/YYYYMMDD.html"><img blah src="previous_day.gif" blah></a>

Your regexp should look like:
<img .*src="previous_day.gif".*>

So this set of tags:
<a href="d/20020101.html"><img blah src="previous_day.gif" blah></a>

Will pull out "d/20020101.html". Perfect.

The other type of link search (text-based) is for when the links use text
instead of a tag. You'll still be using a regexp, but it might only have
to be a regular ol' string.

Example: (from GUComics)

Link looks like:
<a href="archives/view.php?cdate=YYYYMMDD">Previous Comic</a>

Your regexp should look like:
Previous Comic

Yup, it's that simple.

The last type of link search (map-based) is a little different. You specify
a regexp that will match the WHOLE tag, and put () around where the link 
is. So far the only comic I've seen that uses this method is User Friendly,
but I'm sure there's at least one other.

Example:

Tag looks like:

<area shape="rect" href="/cartoons/?id=19971117&mode=classic" 
	coords="161,0 238,80" alt="Previous Cartoon">
(all one line, but seperated since it's long)

Regexp should look like:

<area .*href="(.*?)" .*alt="Previous Cartoon">

(The "?" in the pattern specifies that it should stop the FIRST time it
sees a ". It's complex, but just make sure you put it there if you need
to construct one of these.)

Output Window-

The Output Window and it's tabs are there to keep you informed on what the 
program is doing and any errors it may be encountering. The "Out" tab is 
information you should probably know, the "Error" tab is for errors that
occur to be aware of, but not usually serious enough to warrant a popup
box. The others are mostly there for debugging purposes, probably not very
useful to the average user. The other tabs will be greyed out if they're
not outputting anything. You can enable them by turning on Debugging in
the preferences.

Download Mode-

There are three choices here. "Offline" means just that, it will not attempt
to download anything at all, and will complain if told to view something it
cannot generate from local info. "Missing" means it will only download files 
if it is unable to find a local copy. "Check" means that it will check the
remote modification time of any HTML before downloading, and will only
download if the page has been updated, or if it can't tell in the case of
generated pages. When you first switch to a comic, the program will
temporarily switch to "Check" if in "Missing" mode, as the front page can
change pretty often. Hitting "Refresh" now causes the local copy of any
HTML info to be deleted, forcing a redownload. Images will still only be
downloaded if the program can detect changes, however.

Bug Reporting-

Use the Bug link on the project page.

If the program does something odd, or crashes, INCLUDE debug.log with your 
bug report. The program not finding any images/links in a file is not a bug. 
If you need help making regexps for the comic in question, feel free to 
submit a feature request and I'll see what I can do.

Notes and Known Problems-

On Linux systems, the FLTK prefs files are stored in 
~/.fltk/racercksproductions/ if for some reason you need to look at them. 
On Windows systems, it depends on which version of Windows you're running, 
so your best bet is to search for "stripclub.prefs".

Keenspace rejects the standard User-Agent used by the program, so make sure
to change it to a browser string in the Edit window, some defaults are
provided. I leave this blank in the comic files because I'd rather people
chose what they'd normally use rather than assuming everybody uses IE or
Mozilla.

The host cache does not do ANY checking to see if an old name has become
stale, so if you experience problems with a particular comic, try refreshing
the cache from the File menu. This causes the program to force a relookup of
all hosts in the cache. If this doesn't solve it, the comic itself may be 
down. If it works fine in your browser, send a bug report and I'll see if I 
can figure it out.

To use the "Donate" and "Store" links on Linux, make sure you tell the
program which browser it should spawn. (Use the File menu item.)
Windows people probably don't have to worry about this, since "start <URL>" 
will spawn your default browser. The "Paypal" button will fill in the field 
with a URL that's missing the e-mail, but that should be easy enough to fill 
in. Note that some of the old comic files use "\&" instead of just "&". This
was due to a compatibility problem that I was unsure of how to fix regarding
Linux console commands. It's since been fixed. New comic files should not
use this syntax, but the old syntax still works for backwards compatibility.

The archive browsing function will not work with any comic that:

* Has a link that ALWAYS points to the most recent comic, but this page 
lacks predictable archive navigation, AND has no static "First" link, such 
as comic archives that only go back a month or so (example: ucomics.com) no 
easy way to fix this (you could still use "Relative URL", except for below)
* Uses takeover ads within its archives (ucomics.com, again)
* Uses javascript or forms to navigate (daybydaycartoon.com)

The program will NOT at present work AT ALL with any comics that:

* Use Javascript to display their images (example: www.wtfcomics.com)
* Are shockwave/flash comics (I'm not writing a shockwave player)
* Don't have the images inline, but as seperate links (example: 
www.angryflower.com)
* Require logins or cookies to browse through (example: Warpkeen)
* Don't have a static front page URL, or use 3xx redirects from this
page (example: Life of Riley)

Features I will be adding (in order of preference, NOT likelihood):

* Disk Quota to limit how much space your cache takes up
* Downloading of comic-relevant text (example: PA's newsposts)
* Support for animated GIFs (difficult...)
* Icons for the program and the windows (Anybody want to draw me one?)

Websites:

Main Website: http://stripclub.sf.net/
Project Site: http://sf.net/projects/stripclub/

Enjoy!
