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