diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/files/Anime.java | 29 | ||||
| -rw-r--r-- | src/main/java/files/App.java | 14 | ||||
| -rw-r--r-- | src/main/java/files/Parser.java | 70 | 
3 files changed, 102 insertions, 11 deletions
| diff --git a/src/main/java/files/Anime.java b/src/main/java/files/Anime.java new file mode 100644 index 0000000..1611a9a --- /dev/null +++ b/src/main/java/files/Anime.java @@ -0,0 +1,29 @@ +package files; + +public class Anime { +    private String name; +    private String description; +    private String[] genres; +    private String year; +    private String image; + +    public Anime(String name, String description, String[] genres, String year, String image) { +        this.name = name; +        this.description = description; +        this.genres = genres; +        this.year = year; +        this.image = image; +    } + +    public String getImage() { +        return image; +    } + +    public String showInfo() { +        return new String( +                "**Имя:** " + this.name + System.lineSeparator() + +                "Описание: " + this.description + System.lineSeparator() + +                "Год: " + this.year + System.lineSeparator() +        ); +    } +} diff --git a/src/main/java/files/App.java b/src/main/java/files/App.java index a219d50..b07431d 100644 --- a/src/main/java/files/App.java +++ b/src/main/java/files/App.java @@ -2,8 +2,10 @@ package files;  import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.UpdatesListener; +import com.pengrad.telegrambot.model.Message;  import com.pengrad.telegrambot.request.SendMessage; +import com.pengrad.telegrambot.request.SendPhoto;  import files.entity.User;  import javax.persistence.EntityManager; @@ -11,6 +13,8 @@ import javax.persistence.EntityManagerFactory;  import javax.persistence.Persistence;  import java.io.FileInputStream;  import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date;  import java.util.Properties;  public class App { @@ -32,7 +36,7 @@ public class App {                      String fullName = update.message().from().firstName();                      Boolean isBot = update.message().from().isBot();                      String username = update.message().from().username(); -                    String date = new java.text.SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new java.util.Date(update.message().date() * 1000L)); +                    String date = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date(update.message().date() * 1000L));                      if (update.message().chat().lastName() != null) fullName += " " + update.message().chat().lastName();                      bot.execute(new SendMessage(update.message().chat().id(), "Привет!")); @@ -46,7 +50,13 @@ public class App {                      manager.close();                      entityManagerFactory.close();                  } -                bot.execute(new SendMessage(update.message().chat().id(), telegramId.toString())); +                Anime[] anime = new Anime[0]; +                try { +                    anime = Parser.getAnimeAtMainMenu("https://animego.org/anime?sort=a.createdAt&direction=desc"); +                } catch (IOException e) { +                    e.printStackTrace(); +                } +                bot.execute(new SendPhoto(update.message().chat().id(), anime[0].getImage()).caption(anime[0].showInfo()));              });              return UpdatesListener.CONFIRMED_UPDATES_ALL;          }); diff --git a/src/main/java/files/Parser.java b/src/main/java/files/Parser.java index 486135b..6ed7e77 100644 --- a/src/main/java/files/Parser.java +++ b/src/main/java/files/Parser.java @@ -7,26 +7,78 @@ import org.jsoup.select.Elements;  import java.io.IOException;  import java.net.URL; +import java.util.ArrayList;  public class Parser { -    public static Document getPage() throws IOException { -        String url = "https://jut.su/anime/"; +    public static Document getPage(String url) throws IOException {          return Jsoup.parse(new URL(url), 3000);      } -    public static void main(String[] args) throws IOException { -        Element animeList = Parser.getPage().select("div[class=all_anime_content anime_some_margin]").first(); +    public static Anime[] getAnimeAtMainMenu(String page) throws IOException { +        Element animeList = Parser.getPage(page).select("div[class=animes-container-list]").first();          assert animeList != null; -        Elements names = animeList.select("div[class=aaname]"); +        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]"); -        for (Element name : names) { +        byte countOfAnime = (byte) namesTemp.size(); + +        ArrayList<String> names = new ArrayList<String>(); +        for (Element name : namesTemp) {              String text = name.toString(); -            int start = 22; -            int end = text.indexOf("</div>") - 1; +            int start = text.indexOf(">") + 1; +            int end = text.indexOf("</a>"); +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            names.add(String.valueOf(dst)); +        } + +        ArrayList<String> descriptions = new ArrayList<String>(); +        for (Element description : descriptionsTemp) { +            String text = description.toString(); +            if (text.length() <= 49) { +                descriptions.add(""); +                continue; +            } +            int start = text.indexOf("\n") + 3; +            int end = text.indexOf("\n</div>"); +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            descriptions.add(String.valueOf(dst)); +        } + +        ArrayList<String> years = new ArrayList<String>(); +        for (Element year : yearsTemp) { +            String text = year.toString(); +            int start = text.indexOf(">") + 1; +            int end = text.indexOf("</a>");              char[] dst = new char[end - start];              text.getChars(start, end, dst, 0); -            System.out.println(dst); +            years.add(String.valueOf(dst));          } + +        ArrayList<String> images = new ArrayList<String>(); +        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[] animes = new Anime[countOfAnime]; +        for (int i = 0; i < countOfAnime; i++) { +            animes[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), images.get(i)); +        } + +        return animes;      } + +//    public static String[] getAnimeNames() throws IOException { +// +//    }  } |