From 6da3b0958699c3c5745c018a36aded89f7eeb0c6 Mon Sep 17 00:00:00 2001 From: mavlonerkinboev Date: Fri, 23 Jul 2021 00:17:17 +0500 Subject: seventh commit --- src/main/java/files/Anime.java | 29 +++++++++++++++++ src/main/java/files/App.java | 14 +++++++-- src/main/java/files/Parser.java | 70 +++++++++++++++++++++++++++++++++++------ 3 files changed, 102 insertions(+), 11 deletions(-) create mode 100644 src/main/java/files/Anime.java (limited to 'src/main/java/files') 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 names = new ArrayList(); + for (Element name : namesTemp) { String text = name.toString(); - int start = 22; - int end = text.indexOf("") - 1; + int start = text.indexOf(">") + 1; + int end = text.indexOf(""); + char[] dst = new char[end - start]; + text.getChars(start, end, dst, 0); + names.add(String.valueOf(dst)); + } + + ArrayList descriptions = new ArrayList(); + 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"); + char[] dst = new char[end - start]; + text.getChars(start, end, dst, 0); + descriptions.add(String.valueOf(dst)); + } + + ArrayList years = new ArrayList(); + for (Element year : yearsTemp) { + String text = year.toString(); + int start = text.indexOf(">") + 1; + int end = text.indexOf(""); char[] dst = new char[end - start]; text.getChars(start, end, dst, 0); - System.out.println(dst); + years.add(String.valueOf(dst)); } + + ArrayList 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[] 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 { +// +// } } -- cgit v1.2.3