X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2FFetcher.java;h=bb4cf4d31f32a7266550cb9c46672368dd7a905e;hb=1197ec1aa6fefcd7170a485b4a88bdbd3043103a;hp=bd5a4543fda92a92da61d665205fb5744364b217;hpb=e570bb42dfb90f4c31429069ac7095514ff3ee2f;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/Fetcher.java b/src/be/nikiroo/gofetch/Fetcher.java index bd5a454..bb4cf4d 100644 --- a/src/be/nikiroo/gofetch/Fetcher.java +++ b/src/be/nikiroo/gofetch/Fetcher.java @@ -14,7 +14,7 @@ import be.nikiroo.gofetch.output.Gopher; import be.nikiroo.gofetch.output.Html; import be.nikiroo.gofetch.output.Output; import be.nikiroo.gofetch.support.BasicSupport; -import be.nikiroo.gofetch.support.BasicSupport.Type; +import be.nikiroo.gofetch.support.Type; import be.nikiroo.utils.IOUtils; /** @@ -112,18 +112,18 @@ public class Fetcher { FileWriter writer = new FileWriter(gopherCache); try { - writer.append(gopher.getIndexHeader()); + writer.append(gopher.getMainIndexHeader()); writer.append(gopherBuilder.toString()); - writer.append(gopher.getIndexFooter()); + writer.append(gopher.getMainIndexFooter()); } finally { writer.close(); } try { writer = new FileWriter(htmlIndex); - writer.append(html.getIndexHeader()); + writer.append(html.getMainIndexHeader()); writer.append(htmlBuilder.toString()); - writer.append(html.getIndexFooter()); + writer.append(html.getMainIndexFooter()); } finally { writer.close(); } @@ -147,12 +147,21 @@ public class Fetcher { // Get comments (and update stories if needed): int i = 1; + List fetchedStories = new ArrayList(stories.size()); for (Story story : stories) { - System.err.println(String.format("%02d/%02d", i, stories.size()) + System.err.print(String.format("%02d/%02d", i, stories.size()) + " Fetching full story " + story.getId() + "..."); - support.fetch(story); + try { + support.fetch(story); + fetchedStories.add(story); + System.err.println(); + } catch (IOException e) { +e.printStackTrace(); + System.err.println(" Failed to get story!"); + } i++; } + stories = fetchedStories; Output gopher = new Gopher(support.getType(), hostname, preselector, port); @@ -188,10 +197,12 @@ public class Fetcher { headers = tmp.toArray(new String[] {}); // - // Write the index (with "MORE" links if needed) + // Write the main index (with "MORE" links if needed) int page = 0; List gopherLines = new ArrayList(); List htmlLines = new ArrayList(); + gopherLines.add(gopher.getIndexHeader(support)); + htmlLines.add(html.getIndexHeader(support)); for (i = 0; i < headers.length; i++) { File gopherFile = new File(varDir, headers[i]); File htmlFile = new File(varDir, headers[i] + ".html"); @@ -212,6 +223,8 @@ public class Fetcher { + ".html", true, true)); } + gopherLines.add(gopher.getIndexFooter(support)); + htmlLines.add(html.getIndexFooter(support)); write(gopherLines, varDir, "gophermap", "", page); write(htmlLines, varDir, "index", ".html", page); gopherLines = new ArrayList(); @@ -221,6 +234,24 @@ public class Fetcher { } } + /** + * Write an index/gophermap file with the given link content for the + * selected supported web site. + * + * @param lines + * the link content (the stories and a short description) + * @param varDir + * the base directory to write into + * @param basename + * the base file name + * @param ext + * the file extension (for instance, ".html") + * @param page + * the page number (0 = main index) + * + * @throws IOException + * in case of I/O errors + */ private void write(List lines, File varDir, String basename, String ext, int page) throws IOException { File file = new File(varDir, basename + (page > 0 ? "_" + page : "")