Version 1.1.0
[fanfix.git] / src / be / nikiroo / fanfix / output / Cbz.java
CommitLineData
08fe2e33
NR
1package be.nikiroo.fanfix.output;
2
3d247bc3 3import java.io.BufferedWriter;
08fe2e33 4import java.io.File;
3d247bc3 5import java.io.FileOutputStream;
08fe2e33 6import java.io.IOException;
3d247bc3 7import java.io.OutputStreamWriter;
08fe2e33
NR
8
9import be.nikiroo.fanfix.data.MetaData;
10import be.nikiroo.fanfix.data.Paragraph;
11import be.nikiroo.fanfix.data.Story;
12import be.nikiroo.utils.IOUtils;
13
14class Cbz extends BasicOutput {
15 private File dir;
16
17 @Override
18 public File process(Story story, File targetDir, String targetName)
19 throws IOException {
20 String targetNameOrig = targetName;
21 targetName += getDefaultExtension();
22
23 File target = new File(targetDir, targetName);
24
25 dir = File.createTempFile("fanfic-reader-cbz-dir", ".wip");
26 dir.delete();
27 dir.mkdir();
28
29 // will also save the images!
30 new InfoText().process(story, dir, targetNameOrig);
fe999aa4
NR
31 InfoCover.writeInfo(dir, targetNameOrig, story.getMeta());
32 InfoCover.writeCover(dir, targetNameOrig, story.getMeta());
33
08fe2e33
NR
34 IOUtils.writeSmallFile(dir, "version", "3.0");
35
36 try {
37 super.process(story, targetDir, targetNameOrig);
38 } finally {
39 }
40
41 IOUtils.zip(dir, target, true);
42 IOUtils.deltree(dir);
43
44 return target;
45 }
46
47 @Override
2206ef66 48 public String getDefaultExtension() {
08fe2e33
NR
49 return ".cbz";
50 }
51
52 @Override
53 protected void writeStoryHeader(Story story) throws IOException {
54 MetaData meta = story.getMeta();
55
56 StringBuilder builder = new StringBuilder();
57 if (meta != null && meta.getResume() != null) {
58 for (Paragraph para : story.getMeta().getResume()) {
59 builder.append(para.getContent());
60 builder.append("\n");
61 }
62 }
63
3d247bc3
NR
64 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
65 new FileOutputStream(new File(dir, "URL")), "UTF-8"));
08fe2e33
NR
66 try {
67 if (meta != null) {
68 writer.write(meta.getUuid());
69 }
70 writer.write("\n\n");
71 writer.write(builder.toString());
72 } finally {
73 writer.close();
74 }
75
3d247bc3
NR
76 writer = new BufferedWriter(new OutputStreamWriter(
77 new FileOutputStream(new File(dir, "SUMMARY")), "UTF-8"));
08fe2e33
NR
78 try {
79 String title = "";
80 if (meta != null && meta.getTitle() != null) {
81 title = meta.getTitle();
82 }
83
84 writer.write(title);
85 if (meta != null && meta.getAuthor() != null) {
86 writer.write("\n©");
87 writer.write(meta.getAuthor());
88 }
89 writer.write("\n\n");
90 writer.write(builder.toString());
91 } finally {
92 writer.close();
93 }
94 }
95}