Fix cover file not sent over wire
[fanfix.git] / src / be / nikiroo / fanfix / output / Cbz.java
1 package be.nikiroo.fanfix.output;
2
3 import java.io.BufferedWriter;
4 import java.io.File;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.OutputStreamWriter;
8
9 import be.nikiroo.fanfix.data.MetaData;
10 import be.nikiroo.fanfix.data.Paragraph;
11 import be.nikiroo.fanfix.data.Story;
12 import be.nikiroo.utils.IOUtils;
13
14 class 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(false);
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 try {
29 // will also save the images!
30 BasicOutput.getOutput(OutputType.TEXT, isWriteInfo()).process(
31 story, dir, targetNameOrig);
32
33 InfoCover.writeInfo(dir, targetNameOrig, story.getMeta());
34 if (story.getMeta() != null && !story.getMeta().isFakeCover()) {
35 InfoCover.writeCover(dir, targetNameOrig, story.getMeta());
36 }
37
38 IOUtils.writeSmallFile(dir, "version", "3.0");
39
40 try {
41 super.process(story, targetDir, targetNameOrig);
42 } finally {
43 }
44
45 IOUtils.zip(dir, target, true);
46 } finally {
47 IOUtils.deltree(dir);
48 }
49
50 return target;
51 }
52
53 @Override
54 public String getDefaultExtension(boolean readerTarget) {
55 return ".cbz";
56 }
57
58 @Override
59 protected void writeStoryHeader(Story story) throws IOException {
60 MetaData meta = story.getMeta();
61
62 StringBuilder builder = new StringBuilder();
63 if (meta != null && meta.getResume() != null) {
64 for (Paragraph para : story.getMeta().getResume()) {
65 builder.append(para.getContent());
66 builder.append("\n");
67 }
68 }
69
70 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
71 new FileOutputStream(new File(dir, "URL")), "UTF-8"));
72 try {
73 if (meta != null) {
74 writer.write(meta.getUuid());
75 }
76 } finally {
77 writer.close();
78 }
79
80 writer = new BufferedWriter(new OutputStreamWriter(
81 new FileOutputStream(new File(dir, "SUMMARY")), "UTF-8"));
82 try {
83 String title = "";
84 if (meta != null && meta.getTitle() != null) {
85 title = meta.getTitle();
86 }
87
88 writer.write(title);
89 if (meta != null && meta.getAuthor() != null) {
90 writer.write("\n©");
91 writer.write(meta.getAuthor());
92 }
93 writer.write("\n\n");
94 writer.write(builder.toString());
95 } finally {
96 writer.close();
97 }
98 }
99 }