English Français
Fanfix is a small Java program that can download stories from some supported websites and render them offline.
You can also use: - the graphical client Fanfix-swing - the TUI client Fanfix-jexer
fanfix
–import [URL]fanfix
–export [id] [output_type] [target]fanfix
–convert [URL] [output_type] [target] (+info)fanfix
–read [id] ([chapter number])fanfix
–read-url [URL] ([chapter number])fanfix
–searchfanfix
–search [where] [keywords] (page [page]) (item [item])fanfix
–search-tagfanfix
–search-tag [index 1]… (page [page]) (item [item])fanfix
–listfanfix
–server [key] [port]fanfix
–stop-server [key] [port]fanfix
–remote [key] [host] [port]fanfix
–help(If you are interested in the recent changes, please check the Changelog – note that starting from version 1.4.0, the changelog is checked at startup.)
This program will convert from a (supported) URL to an .epub file for stories or a .cbz file for comics (a few other output types are also available, like Plain Text, LaTeX, HTML…).
To help organize your stories, it can also work as a local library so you can:
Currently, the following websites are supported:
We support a few file types for local story conversion (both as input and as output):
by
or ©
) must be on the second line, possibly with the publication date in parenthesis (i.e., By Unknown (3rd October 1998)
)Chapter x
or Chapter x: NAME OF THE CHAPTER
, where x
is the chapter numberindex.html
as the main file – we only support importing HTML files created by FanfixAny platform with at lest Java 1.6 on it should be ok.
It has been tested on Linux (Debian, Slackware, Ubuntu), MacOS X and Windows for now, but feel free to inform us if you try it on another system.
If you have any problems to compile it with a supported Java version (1.6+), please contact us.
You can start the program in two ways:
java -jar fanfix.jar
fanfix
(if you used make install)The following arguments are allowed:
--import [URL]
: import the story at URL into the local library--export [id] [output_type] [target]
: export the story denoted by ID to the target file--convert [URL] [output_type] [target] (+info)
: convert the story at URL into target, and force-add the .info and cover if +info is passed--read [id] ([chapter number])
: read the given story denoted by ID from the library--read-url [URL] ([chapter number])
: convert on the fly and read the story at URL, without saving it--search
: list the supported websites (where
)--search [where] [keywords] (page [page]) (item [item])
: search on the supported website and display the given results page of stories it found, or the story details if asked--tag [where]
: list all the tags supported by this website--tag [index 1]... (page [page]) (item [item])
: search for the given stories or subtags, tag by tag, and display information about a specific page of results or about a specific item if requested--list
: list the stories present in the library and their associated IDs--server [key] [port]
: start a story server on this port--stop-server [key] [port]
: stop the remote server running on this port (key must be set to the same value)--remote [key] [host] [port]
: contact this server instead of the usual library (key must be set to the same value)--help
: display the available options--version
: return the version of the programSome environment variables are recognized by the program:
LANG=en
: force the language to EnglishCONFIG_DIR=$HOME/.fanfix
: use the given directory as a config directory (and copy the default configuration if needed)NOUTF=1
: try to fallback to non-unicode values when possible (can have an impact on the resulting files, not only on user messages)DEBUG=1
: force the DEBUG=true
option of the configuration file (to show more information on errors)./configure.sh && make
You can also import the java sources into, say, Eclipse, and create a runnable JAR file from there.
There are some unit tests you can run, too:
./configure.sh && make build test run-test
If you run the unit tests, note that some flag files can impact them:
test/VERBOSE
: enable verbose modetest/OFFLINE
: to forbid any downloadingtest/URLS
: to allow testing URLstest/FORCE_REFRESH
: to force a clear of the cacheNote that test/CACHE
can be kept, as it will contain all internet related files you need (if you allow URLs, run the test once which will populate the CACHE then go OFFLINE, it will still work).
The test files will be:
test/*.url
: URL to download in text format, content = URLtest/*.story
: text mode story, content = storyRequired:
libs/nikiroo-utils-sources.jar
: some shared utility functionslibs/unbescape-sources.jar
: a nice library to escape/unescape a lot of text formats; used here for HTMLlibs/jsoup-sources.jar
: a library to parse HTMLlibs/JSON-java-20190722-sources.jar
: a library to parse JSONOptional:
libs/jexer-sources.jar
: a small library that offers TUI widgetspandoc
: to generate the man pages from the README filesNothing else but Java 1.6+.
Note that calling make libs
will export the libraries into the src/ directory.
Fanfix was written by Niki Roo niki@nikiroo.be