X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FMain.java;h=995251d16d0ee7ca6a0438ce21c8268efa6c51cc;hb=8141d7ac9891898b77a355bfa152de9f3dd76e7e;hp=d5a5debe253fb4a6d570c9791d1e5fbdda57d917;hpb=70ee499b74323435ac7ac7dc8676d42c2e9048db;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/Main.java b/src/be/nikiroo/fanfix/Main.java index d5a5deb..995251d 100644 --- a/src/be/nikiroo/fanfix/Main.java +++ b/src/be/nikiroo/fanfix/Main.java @@ -61,11 +61,14 @@ public class Main { * *
  • --read-url [URL] ([chapter number]): convert on the fly and read the * story, without saving it
  • - *
  • --search WEBSITE [free text] ([page] ([item])): search for the given terms, - * show the given page (page 0 means "how many page do we have", starts at page 1)
  • - *
  • --search-tag WEBSITE ([tag 1] [tag2...] ([page] ([item]))): list the known - * tags or search the stories for the given tag(s), show the given page of results - * (page 0 means "how many page do we have", starts at page 1)
  • + *
  • --search: list the supported websites (where)
  • + *
  • --search [where] [keywords] (page [page]) (item [item]): search on + * the supported website and display the given results page of stories it + * found, or the story details if asked
  • + *
  • --search-tag [where]: list all the tags supported by this website
  • + *
  • --search-tag [index 1]... (page [page]) (item [item]): search for the + * given stories or subtags, tag by tag, and display information about a + * specific page of results or about a specific item if requested
  • *
  • --list ([type]): list the stories present in the library
  • *
  • --set-source [id] [new source]: change the source of the given story
  • *
  • --set-title [id] [new title]: change the title of the given story
  • @@ -97,7 +100,7 @@ public class Main { Integer port = null; SupportType searchOn = null; String search = null; - List tags = new ArrayList(); + List tags = new ArrayList(); Integer page = null; Integer item = null; @@ -215,36 +218,40 @@ public class Main { case SEARCH: if (searchOn == null) { searchOn = SupportType.valueOfAllOkUC(args[i]); - + if (searchOn == null) { Instance.getTraceHandler().error( "Website not known: <" + args[i] + ">"); - exitCode = 255; + exitCode = 41; + break; } - + if (BasicSearchable.getSearchable(searchOn) == null) { Instance.getTraceHandler().error( "Website not supported: " + searchOn); - exitCode = 255; + exitCode = 42; + break; } } else if (search == null) { search = args[i]; - } else if (page == null) { + } else if (page != null && page == -1) { try { page = Integer.parseInt(args[i]); - } catch (NumberFormatException e) { - Instance.getTraceHandler().error( - new Exception("Incorrect page number: <" - + args[i] + ">", e)); - exitCode = 255; + } catch (Exception e) { + page = -2; } - } else if (item == null) { + } else if (item != null && item == -1) { try { item = Integer.parseInt(args[i]); - } catch (NumberFormatException e) { - Instance.getTraceHandler().error( - new Exception("Incorrect item number: <" - + args[i] + ">", e)); + } catch (Exception e) { + item = -2; + } + } else if (page == null || item == null) { + if (page == null && "page".equals(args[i])) { + page = -1; + } else if (item == null && "item".equals(args[i])) { + item = -1; + } else { exitCode = 255; } } else { @@ -254,20 +261,55 @@ public class Main { case SEARCH_TAG: if (searchOn == null) { searchOn = SupportType.valueOfAllOkUC(args[i]); - + if (searchOn == null) { Instance.getTraceHandler().error( "Website not known: <" + args[i] + ">"); exitCode = 255; } - + if (BasicSearchable.getSearchable(searchOn) == null) { Instance.getTraceHandler().error( "Website not supported: " + searchOn); exitCode = 255; } + } else if (page == null && item == null) { + if ("page".equals(args[i])) { + page = -1; + } else if ("item".equals(args[i])) { + item = -1; + } else { + try { + int index = Integer.parseInt(args[i]); + tags.add(index); + } catch (NumberFormatException e) { + Instance.getTraceHandler().error( + "Invalid tag index: " + args[i]); + exitCode = 255; + } + } + } else if (page != null && page == -1) { + try { + page = Integer.parseInt(args[i]); + } catch (Exception e) { + page = -2; + } + } else if (item != null && item == -1) { + try { + item = Integer.parseInt(args[i]); + } catch (Exception e) { + item = -2; + } + } else if (page == null || item == null) { + if (page == null && "page".equals(args[i])) { + page = -1; + } else if (item == null && "item".equals(args[i])) { + item = -1; + } else { + exitCode = 255; + } } else { - tags.add(args[i]); + exitCode = 255; } break; case HELP: @@ -359,7 +401,7 @@ public class Main { } } - if (exitCode != 255) { + if (exitCode == 0) { switch (action) { case IMPORT: exitCode = imprt(urlString, pg); @@ -429,18 +471,20 @@ public class Main { exitCode = read(urlString, chapString, false); break; case SEARCH: - if (searchOn == null || search == null) { + page = page == null ? 1 : page; + if (page < 0) { + Instance.getTraceHandler().error("Incorrect page number"); exitCode = 255; break; } - - if (page == null) { - page = 1; - } - if (item == null) { - item = 0; + + item = item == null ? 0 : item; + if (item < 0) { + Instance.getTraceHandler().error("Incorrect item number"); + exitCode = 255; + break; } - + if (BasicReader.getReader() == null) { Instance.getTraceHandler() .error(new Exception( @@ -448,38 +492,43 @@ public class Main { exitCode = 10; break; } - + try { - BasicReader.getReader().search(searchOn, search, page, item); + if (searchOn == null) { + BasicReader.getReader().search(true); + } else if (search != null) { + + BasicReader.getReader().search(searchOn, search, page, + item, true); + } else { + exitCode = 255; + } } catch (IOException e1) { Instance.getTraceHandler().error(e1); + exitCode = 20; } - + break; case SEARCH_TAG: if (searchOn == null) { exitCode = 255; break; } - - item = 0; - page = 1; - try { - page = Integer.parseInt(tags.get(tags.size()-1)); - tags.remove(tags.size() - 1); - - try { - int tmp = Integer.parseInt(tags.get(tags.size()-1)); - tags.remove(tags.size() - 1); - - item = page; - page = tmp; - } catch (Exception e) { - } - } catch (Exception e) { + page = page == null ? 1 : page; + if (page < 0) { + Instance.getTraceHandler().error("Incorrect page number"); + exitCode = 255; + break; } - + + item = item == null ? 0 : item; + if (item < 0) { + Instance.getTraceHandler().error("Incorrect item number"); + exitCode = 255; + break; + } + if (BasicReader.getReader() == null) { Instance.getTraceHandler() .error(new Exception( @@ -487,13 +536,14 @@ public class Main { exitCode = 10; break; } - + try { - BasicReader.getReader().searchTag(searchOn, page, item, tags.toArray(new String[]{})); + BasicReader.getReader().searchTag(searchOn, page, item, + true, tags.toArray(new Integer[] {})); } catch (IOException e1) { Instance.getTraceHandler().error(e1); } - + break; case HELP: syntax(true);