X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FBasicSupport.java;h=35a6ac353be34fe8c52607fdb9f963d895c2603b;hb=97654d115d9f0286f9eea9fe50216cb3737e9ed6;hp=ed92b2f37821342771f27eb22841ca53a6aa994b;hpb=88664350f0b3849538d4f41f7c3d56d81d03e1a4;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport.java b/src/be/nikiroo/fanfix/supported/BasicSupport.java index ed92b2f..35a6ac3 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport.java @@ -37,13 +37,10 @@ public abstract class BasicSupport { private URL source; private SupportType type; private URL currentReferer; // with only one 'r', as in 'HTTP'... - - /** - * The name of this support class. - * - * @return the name - */ - protected abstract String getSourceName(); + + static protected BasicSupportHelper bsHelper = new BasicSupportHelper(); + static protected BasicSupportImages bsImages = new BasicSupportImages(); + static protected BasicSupportPara bsPara = new BasicSupportPara(new BasicSupportHelper(), new BasicSupportImages()); /** * Check if the given resource is supported by this {@link BasicSupport}. @@ -84,7 +81,7 @@ public abstract class BasicSupport { protected abstract String getDesc() throws IOException; /** - * Return the list of chapters (name and resource). * + * Return the list of chapters (name and resource). *

* Can be NULL if this {@link BasicSupport} do no use chapters. * @@ -227,8 +224,7 @@ public abstract class BasicSupport { */ protected Document loadDocument(URL source) throws IOException { String url = getCanonicalUrl(source).toString(); - return DataUtil.load(Instance.getCache().open(source, this, false), - "UTF-8", url.toString()); + return DataUtil.load(Instance.getInstance().getCache().open(source, this, false), "UTF-8", url.toString()); } /** @@ -247,27 +243,6 @@ public abstract class BasicSupport { setCurrentReferer(null); } - /** - * Process the given story resource into a partially filled {@link Story} - * object containing the name and metadata, except for the description. - * - * @return the {@link Story} - * - * @throws IOException - * in case of I/O error - */ - public final Story processMeta() throws IOException { - Story story = null; - - try { - story = processMeta(false, null); - } finally { - close(); - } - - return story; - } - /** * Process the given story resource into a partially filled {@link Story} * object containing the name and metadata. @@ -294,37 +269,33 @@ public abstract class BasicSupport { Story story = new Story(); MetaData meta = getMeta(); -System.out.println("meta from support get: "+meta); if (meta.getCreationDate() == null || meta.getCreationDate().isEmpty()) { meta.setCreationDate(StringUtils.fromTime(new Date().getTime())); } story.setMeta(meta); + pg.put("meta", meta); pg.setProgress(50); if (meta.getCover() == null) { - meta.setCover(BasicSupportHelper.getDefaultCover(meta.getSubject())); + meta.setCover(bsHelper.getDefaultCover(meta.getSubject())); } pg.setProgress(60); if (getDesc) { - String descChapterName = Instance.getTrans().getString( - StringId.DESCRIPTION); - story.getMeta().setResume( - BasicSupportPara.makeChapter(this, source, 0, - descChapterName, // - getDesc(), isHtml(), null)); + String descChapterName = Instance.getInstance().getTrans().getString(StringId.DESCRIPTION); + story.getMeta().setResume(bsPara.makeChapter(this, source, 0, descChapterName, // + getDesc(), isHtml(), null)); } - pg.setProgress(100); + pg.done(); return story; } /** - * Actual processing step, without the calls to other methods. - *

- * Will convert the story resource into a fully filled {@link Story} object. + * Process the given story resource into a fully filled {@link Story} + * object. * * @param pg * the optional progress reporter @@ -334,7 +305,7 @@ System.out.println("meta from support get: "+meta); * @throws IOException * in case of I/O error */ - // TODO: add final + // TODO: ADD final when BasicSupport_Deprecated is gone public Story process(Progress pg) throws IOException { setCurrentReferer(source); login(); @@ -348,8 +319,9 @@ System.out.println("meta from support get: "+meta); } /** - * Process the given story resource into a fully filled {@link Story} - * object. + * Actual processing step, without the calls to other methods. + *

+ * Will convert the story resource into a fully filled {@link Story} object. * * @param pg * the optional progress reporter @@ -359,30 +331,27 @@ System.out.println("meta from support get: "+meta); * @throws IOException * in case of I/O error */ - public Story doProcess(Progress pg) throws IOException { + protected Story doProcess(Progress pg) throws IOException { if (pg == null) { pg = new Progress(); } else { pg.setMinMax(0, 100); } + + pg.setName("Initialising"); pg.setProgress(1); Progress pgMeta = new Progress(); pg.addProgress(pgMeta, 10); Story story = processMeta(true, pgMeta); - if (!pgMeta.isDone()) { - pgMeta.setProgress(pgMeta.getMax()); // 10% - } - - pg.setName("Retrieving " + story.getMeta().getTitle()); + pgMeta.done(); // 10% + pg.put("meta", story.getMeta()); Progress pgGetChapters = new Progress(); pg.addProgress(pgGetChapters, 10); story.setChapters(new ArrayList()); List> chapters = getChapters(pgGetChapters); - if (!pgGetChapters.isDone()) { - pgGetChapters.setProgress(pgGetChapters.getMax()); // 20% - } + pgGetChapters.done(); // 20% if (chapters != null) { Progress pgChaps = new Progress("Extracting chapters", 0, @@ -407,16 +376,10 @@ System.out.println("meta from support get: "+meta); String content = getChapterContent(chapUrl, i, pgGetChapterContent); - if (!pgGetChapterContent.isDone()) { - pgGetChapterContent.setProgress(pgGetChapterContent - .getMax()); - } - - Chapter cc = BasicSupportPara.makeChapter(this, chapUrl, i, + pgGetChapterContent.done(); + Chapter cc = bsPara.makeChapter(this, chapUrl, i, chapName, content, isHtml(), pgMakeChapter); - if (!pgMakeChapter.isDone()) { - pgMakeChapter.setProgress(pgMakeChapter.getMax()); - } + pgMakeChapter.done(); words += cc.getWords(); story.getChapters().add(cc); @@ -426,13 +389,37 @@ System.out.println("meta from support get: "+meta); } pgChaps.setName("Extracting chapters"); - } else { - pg.setProgress(80); + pgChaps.done(); } + pg.done(); + return story; } + /** + * Create a chapter from the given data. + * + * @param source + * the source URL for this content, which can be used to try and + * find images if images are present in the format [image-url] + * @param number + * the chapter number (0 = description) + * @param name + * the chapter name + * @param content + * the content of the chapter + * @return the {@link Chapter} + * + * @throws IOException + * in case of I/O error + */ + public Chapter makeChapter(URL source, int number, String name, + String content) throws IOException { + return bsPara.makeChapter(this, source, number, name, + content, isHtml(), null); + } + /** * Return a {@link BasicSupport} implementation supporting the given * resource if possible. @@ -472,10 +459,11 @@ System.out.println("meta from support get: "+meta); * Return a {@link BasicSupport} implementation supporting the given type. * * @param type - * the type + * the type, must not be NULL * @param url * the {@link URL} to support (can be NULL to get an - * "abstract support") + * "abstract support"; if not NULL, will be used as the source + * URL) * * @return an implementation that supports it, or NULL */ @@ -503,8 +491,8 @@ System.out.println("meta from support get: "+meta); case TEXT: support = new Text(); break; - case MANGAFOX: - support = new MangaFox(); + case MANGAHUB: + support = new MangaHub(); break; case E621: support = new E621(); @@ -515,6 +503,9 @@ System.out.println("meta from support get: "+meta); case E_HENTAI: support = new EHentai(); break; + case MANGA_LEL: + support = new MangaLel(); + break; case CBZ: support = new Cbz(); break;