summaryrefslogtreecommitdiff
path: root/src/main/java/files/Parser.java
blob: 048b14757427a0f21cdd04425fa91b8e4f962ec3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package files;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;

public class Parser {

    public static Document getPage(String url) throws IOException {
        return Jsoup.parse(new URL(url), 3000);
    }

    public static Anime[] getAnimeAtMainMenu(String page) throws IOException {
        Element animeList = Parser.getPage(page).select("div[class=animes-container-list]").first();
        assert animeList != null;
        Elements namesTemp = animeList.select("div[class=h5 font-weight-normal mb-1]").select("a");
        Elements descriptionsTemp = animeList.select("div[class=description d-none d-sm-block]");
        Elements yearsTemp = animeList.select("span[class=anime-year mb-2]").select("a[class=text-link-gray text-underline]");
        Elements genresTemp = animeList.select("span[class=anime-genre d-none d-sm-inline]").select("a[class=mb-2 text-link-gray text-underline]");
        Elements imagesTemp = animeList.select("div[class=anime-list-lazy lazy]");

        byte countOfAnime = (byte) namesTemp.size();

        ArrayList<String> names = new ArrayList<>();
        for (Element name : namesTemp) {
            names.add(Jsoup.parse(String.valueOf(name)).text());
        }

        ArrayList<String> descriptions = new ArrayList<>();
        for (Element description : descriptionsTemp) {
            descriptions.add(Jsoup.parse(String.valueOf(description)).text());
        }

        ArrayList<String> years = new ArrayList<>();
        for (Element year : yearsTemp) {
            years.add(Jsoup.parse(String.valueOf(year)).text());
        }

        ArrayList<String> images = new ArrayList<>();
        for (Element image : imagesTemp) {
            String text = image.toString();
            int start = text.indexOf("data-original=") + 15;
            int end = text.indexOf(">") - 1;
            char[] dst = new char[end - start];
            text.getChars(start, end, dst, 0);
            images.add(String.valueOf(dst));
        }

        Anime[] anime = new Anime[countOfAnime];
        for (int i = 0; i < countOfAnime; i++) {
            anime[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), images.get(i));
        }

        return anime;
    }
}