c8a522c896d17849ab1cc223d86c468aa15934fa
1 package be
.nikiroo
.fanfix
.searchable
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
6 import java
.net
.URLEncoder
;
7 import java
.util
.ArrayList
;
8 import java
.util
.Arrays
;
11 import org
.jsoup
.helper
.DataUtil
;
12 import org
.jsoup
.nodes
.Document
;
13 import org
.jsoup
.nodes
.Element
;
14 import org
.jsoup
.select
.Elements
;
16 import be
.nikiroo
.fanfix
.Instance
;
17 import be
.nikiroo
.fanfix
.bundles
.StringId
;
18 import be
.nikiroo
.fanfix
.data
.MetaData
;
19 import be
.nikiroo
.fanfix
.supported
.SupportType
;
20 import be
.nikiroo
.utils
.Image
;
21 import be
.nikiroo
.utils
.StringUtils
;
23 class MangaLel
extends BasicSearchable
{
24 private String BASE_URL
= "http://mangas-lecture-en-ligne.fr/index_lel.php";
27 super(SupportType
.MANGA_LEL
);
31 public List
<SearchableTag
> getTags() throws IOException
{
32 List
<SearchableTag
> tags
= new ArrayList
<SearchableTag
>();
34 String url
= BASE_URL
+ "?page=recherche";
35 Document doc
= load(url
, false);
37 Element genre
= doc
.getElementsByClass("genre").first();
39 for (Element el
: genre
.getElementsByAttributeValueStarting("for",
41 tags
.add(new SearchableTag(el
.attr("for"), el
.text(), true));
49 public void fillTag(SearchableTag tag
) throws IOException
{
50 // Tags are always complete
54 public int searchPages(String search
) throws IOException
{
60 public List
<MetaData
> search(String search
, int page
) throws IOException
{
61 String url
= BASE_URL
+ "?nomProjet="
62 + URLEncoder
.encode(search
, "utf-8")
63 + "&nomAuteur=&nomTeam=&page=recherche&truc=truc";
66 return getResults(url
);
70 public List
<MetaData
> search(SearchableTag tag
, int page
)
72 String url
= BASE_URL
+ "?nomProjet=&nomAuteur=&nomTeam=&"
73 + tag
.getId() + "=on&page=recherche&truc=truc";
76 return getResults(url
);
79 private List
<MetaData
> getResults(String sourceUrl
) throws IOException
{
80 List
<MetaData
> metas
= new ArrayList
<MetaData
>();
82 Document doc
= DataUtil
.load(
83 Instance
.getCache().open(new URL(sourceUrl
), getSupport(),
84 false), "UTF-8", sourceUrl
);
86 for (Element result
: doc
.getElementsByClass("rechercheAffichage")) {
87 Element a
= result
.getElementsByTag("a").first();
89 MetaData meta
= new MetaData();
90 meta
.setUrl(a
.absUrl("href"));
91 Element img
= result
.getElementsByTag("img").first();
93 String coverUrl
= img
.absUrl("src");
96 InputStream in
= Instance
.getCache().open(
97 new URL(coverUrl
), getSupport(), true);
99 meta
.setCover(new Image(in
));
103 } catch (Exception e
) {
104 Instance
.getTraceHandler()
105 .error(new Exception(
106 "Cannot download cover for MangaLEL story in search mode",
111 Elements infos
= result
.getElementsByClass("texte");
113 String
[] tab
= infos
.outerHtml().split("<br>");
115 meta
.setTitle(getVal(tab
, 0));
116 meta
.setAuthor(getVal(tab
, 1));
117 meta
.setTags(Arrays
.asList(getVal(tab
, 2).split(" ")));
119 meta
.setResume(getSupport()
123 Instance
.getTrans().getString(
124 StringId
.DESCRIPTION
),
135 private String
getVal(String
[] tab
, int i
) {
138 if (i
< tab
.length
) {
139 val
= StringUtils
.unhtml(tab
[i
]);
140 int pos
= val
.indexOf(":");
142 val
= val
.substring(pos
+ 1).trim();