README fixes
[fanfix.git] / README.md
... / ...
CommitLineData
1# Fanfix
2
3Fanfix is a small Java program that can download stories from some supported websites and render them offline.
4
5![Main GUI](screenshots/fanfix.png?raw=true "Main GUI")
6
7It 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 or LaTeX).
8
9To help organize your stories, it can also work as a local library.
10
11In this mode, you can:
12- Import a story from its URL (or even another file)
13- Export a story to a file (.epub or .cbz)
14- Display a story from the local library in text format in the console
15- Display a story from the local library graphically **by calling a native program to handle it** (though Fanfix can automatically process it into HTML so any browser can open it)
16
17## Supported websites
18
19Currently, the following websites are supported:
20- http://FimFiction.net/: fan fictions devoted to the My Little Pony show
21- http://Fanfiction.net/: fan fictions of many, many different universes, from TV shows to novels to games
22- http://mangafox.me/: a well filled repository of mangas, or, as their website states: most popular manga scanlations read online for free at mangafox, as well as a close-knit community to chat and make friends
23- https://e621.net/: a Furry website supporting comics, including MLP
24
25## A note about file support
26
27We support a few file types for local story conversion (both as input and as output):
28- epub: .epub files created by this program (we do not support "all" .epub files, at least for now)
29- text: local stories encoded in plain text format, with a few specific rules:
30 - the title must be on the first line
31 - the author (preceded by nothing, ```by ``` or ```©```) must be on the second line, possibly with the publication date in parenthesis (i.e., ```By Unknown (3rd October 1998)```)
32 - chapters must be declared with ```Chapter x``` or ```Chapter x: NAME OF THE CHAPTER```, where ```x``` is the chapter number
33 - a description of the story must be given as chapter number 0
34 - a cover image may be present with the same filename as the story, but a .png, .jpeg or .jpg extension
35- info_text: contains the same information as the text format, but with a companion .info file to store some metadata (the .info file is supposed to be created by Fanfix or compatible with it)
36- cbz: .cbz (collection of images) files, preferably created with Fanfix (but any .cbz file is supported, though without most of Fanfix metadata, obviously)
37
38## Supported platforms
39
40Any platform with at lest Java 1.6 on it should be ok.
41
42It has only been tested on Linux and Windows for now, but feel free to inform me if you try it on another system.
43
44If you have any problems to compile it with a supported Java version (1.5 won't work, but you may try to cross-compile; 1.6 and 1.8 have been tested and work), please contact me.
45
46## Usage
47
48You can start the program in GUI mode (as in the screenshot on top):
49- ```java -jar fanfix.jar```
50
51
52The following arguments are also allowed:
53- ```--import [URL]```: import the story at URL into the local library
54- ```--export [id] [output_type] [target]```: export the story denoted by ID to the target file
55- ```--convert [URL] [output_type] [target] (+info)```: convert the story at URL into target, and force-add the .info and cover if +info is passed
56- ```--read [id] ([chapter number])```: read the given story denoted by ID from the library
57- ```--read-url [URL] ([chapter number])```: convert on the fly and read the story denoted by ID, without saving it
58- ```--list```: list the stories present in the library and their associated IDs
59- ```--set-reader [reader type]```: set the reader type to CLI or LOCAL for this command
60- ```--help```: display the available options
61
62### Environment variables
63
64Some environment variables are recognized by the program:
65- ```LANG=en```: force the language to English (the only one for now...)
66- ```CONFIG_DIR=$HOME/.fanfix```: use the given directory as a config directory (and copy the default configuration if needed)
67- ```NOUTF=1```: try to fallback to non-unicode values when possible (can have an impact on the resulting files, not only on user messages)
68- ```DEBUG=1```: force the ```DEBUG=true``` option of the configuration file (to show more information on errors)
69
70## Compilation
71
72```./configure.sh && make```
73
74You can also import the java sources into, say, [Eclipse](https://eclipse.org/), and create a runnable JAR file from there.
75
76### Dependant libraries (included)
77
78- libs/nikiroo-utils-sources.jar: some shared utility functions I also use elsewhere
79- [libs/unbescape-sources.jar](https://github.com/unbescape/unbescape): a nice library to escape/unescape a lot of text formats; I only use it for HTML
80
81Nothing else but Java 1.6+.
82
83Note that calling ```make libs``` will export the libraries into the src/ directory.
84
85## TODO
86
87Currently missing, but either in progress or planned:
88- [ ] A GUI (work in progress)
89 - [x] Make one
90 - [x] Make it run when no args passed
91 - [x] Fix the UI, it is ugly
92 - [ ] Work on the UI thread is BAD
93 - [ ] Allow export
94 - [ ] Show a list of types
95 - [x] ..in the menu
96 - [ ] ..as a screen view
97 - [ ] options screen
98- [ ] A TUI reader
99- [ ] Check if it can work on Android
100- [ ] Translations
101 - [x] i18n system in place
102 - [x] Make use of it
103 - [x] Use it for all user output (some WIP remains)
104 - [ ] French translation
105- [ ] Allow lauching a custom application instead of Desktop.start ?
106 - [ ] Make a wrapper for firefox to create a new, empty profile ?
107- [ ] Install a mechanism to handle stories import progress update
108