README fixes
[fanfix.git] / README.md
CommitLineData
08fe2e33
NR
1# Fanfix
2
36142555 3Fanfix is a small Java program that can download stories from some supported websites and render them offline.
08fe2e33 4
b4dc6ab5
NR
5![Main GUI](screenshots/fanfix.png?raw=true "Main GUI")
6
88c61aca
NR
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)
333f0e7b
NR
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)
88c61aca
NR
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
adc71d36
NR
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
88c61aca
NR
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)
08fe2e33
NR
37
38## Supported platforms
39
301791d3 40Any platform with at lest Java 1.6 on it should be ok.
08fe2e33 41
b4dc6ab5
NR
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.
08fe2e33
NR
45
46## Usage
47
b4dc6ab5 48You can start the program in GUI mode (as in the screenshot on top):
88c61aca
NR
49- ```java -jar fanfix.jar```
50
88c61aca 51
b4dc6ab5 52The following arguments are also allowed:
88c61aca
NR
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
08fe2e33
NR
61
62### Environment variables
63
88c61aca
NR
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)
adc71d36 68- ```DEBUG=1```: force the ```DEBUG=true``` option of the configuration file (to show more information on errors)
08fe2e33
NR
69
70## Compilation
71
88c61aca 72```./configure.sh && make```
08fe2e33 73
36142555 74You can also import the java sources into, say, [Eclipse](https://eclipse.org/), and create a runnable JAR file from there.
08fe2e33
NR
75
76### Dependant libraries (included)
77
301791d3
NR
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
08fe2e33 80
301791d3 81Nothing else but Java 1.6+.
08fe2e33 82
88c61aca 83Note that calling ```make libs``` will export the libraries into the src/ directory.
08fe2e33
NR
84
85## TODO
86
88c61aca 87Currently missing, but either in progress or planned:
333f0e7b
NR
88- [ ] A GUI (work in progress)
89 - [x] Make one
90 - [x] Make it run when no args passed
b4dc6ab5 91 - [x] Fix the UI, it is ugly
333f0e7b
NR
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
adc71d36 97 - [ ] options screen
333f0e7b
NR
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
b4dc6ab5 105- [ ] Allow lauching a custom application instead of Desktop.start ?
333f0e7b 106 - [ ] Make a wrapper for firefox to create a new, empty profile ?
b4dc6ab5 107- [ ] Install a mechanism to handle stories import progress update
333f0e7b 108