diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/files/Anime.java | 86 | ||||
| -rw-r--r-- | src/main/java/files/Bot.java | 94 | ||||
| -rw-r--r-- | src/main/java/files/MyKeyboard.java | 71 | ||||
| -rw-r--r-- | src/main/java/files/Parse.java (renamed from src/main/java/files/Parser.java) | 107 | ||||
| -rw-r--r-- | src/main/java/files/UserCallbackQuery.java | 150 | ||||
| -rw-r--r-- | src/main/java/files/UserMessage.java | 73 | 
6 files changed, 371 insertions, 210 deletions
| diff --git a/src/main/java/files/Anime.java b/src/main/java/files/Anime.java index 1b039ed..4f60149 100644 --- a/src/main/java/files/Anime.java +++ b/src/main/java/files/Anime.java @@ -1,24 +1,29 @@  package files; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Element; - -import java.io.IOException; -  public class Anime {      private final String name; -    private String description; +    private final String description;      private final String[] genres;      private final String year; -    private final String series; +    private String series;      private final String rating;      public final String image;      private final String url; -    private static Anime[] list; -    private static byte indexOfAnime = 0; -    private static String searchedAnime; -    private static byte searchedAnimeSize; -    private static boolean isSearchingAnAnime; +    public static Anime[] list; +    public static byte indexOfAnime = 0; +    public static String searchedAnime; +    public static byte searchedAnimeSize; +    public static boolean isSearchingAnAnime; + +    public Anime(String name, String description, String[] genres, String year, String rating, String image, String url) { +        this.name = name; +        this.description = description; +        this.genres = genres; +        this.year = year; +        this.rating = rating; +        this.image = image; +        this.url = url; +    }      public Anime(String name, String description, String[] genres, String year, String series, String rating, String image, String url) {          this.name = name; @@ -31,22 +36,33 @@ public class Anime {          this.url = url;      } -    public String getDescription() throws IOException { -        if (this.description == null) { -            parseDescription(); -        } -        return description; +    public String showInfo() { +        return "<b>Название:</b> " + this.name + System.lineSeparator() + +                getYear() + +                getSeries() + +                "<b>Рейтинг:</b> " + this.rating + " / 10" + System.lineSeparator() + +                "<b>Описание:</b> " + this.description;      } -    public void parseDescription() throws IOException { -        Element descriptionTemp = Parser.getPage(this.url).select("div[class=fdesc clr full-text clearfix]").first(); -        this.description = Jsoup.parse(String.valueOf(descriptionTemp)).text(); +    public String showInfo(String dub) { +        return "<b>Название:</b> " + this.name + System.lineSeparator() + +                getYear() + +                getSeries() + +                "<b>Рейтинг:</b> " + this.rating + " / 10" + System.lineSeparator() + +                "<b>Озвучка:</b> " + dub + System.lineSeparator() + +                "<b>Описание:</b> " + this.description;      } -    public String showInfo() { -        return "Имя: " + this.name + System.lineSeparator() + -                "Серий: " + this.series + System.lineSeparator() + -                "Рейтинг: " + this.rating; +    public String getName() { +        return name; +    } + +    public String getYear() { +        return (year != null) ? ("<b>Год выхода:</b> " + this.year + System.lineSeparator()) : ""; +    } + +    public String getSeries() { +        return (series != null) ? ("<b>Всего серий:</b> " + this.series + System.lineSeparator()) : "";      }      public String getImage() { @@ -54,11 +70,7 @@ public class Anime {      }      public String getUrl() { -        return url; -    } - -    public static byte getIndexOfAnime() { -        return indexOfAnime; +        return this.url;      }      public static void setIndexOfAnime(byte indexOfAnime) { @@ -73,18 +85,10 @@ public class Anime {          indexOfAnime++;      } -    public static String getSearchedAnime() { -        return searchedAnime; -    } -      public static void setSearchedAnime(String searchedAnime) {          Anime.searchedAnime = searchedAnime.replace(' ', '+');      } -    public static boolean getIsSearchingAnAnime() { -        return isSearchingAnAnime; -    } -      public static void setIsSearchingAnAnime(boolean isSearchingAnAnime) {          Anime.isSearchingAnAnime = isSearchingAnAnime;      } @@ -93,14 +97,6 @@ public class Anime {          Anime.searchedAnimeSize = searchedAnimeSize;      } -    public static byte getSearchedAnimeSize() { -        return Anime.searchedAnimeSize; -    } - -    public static Anime[] getList() { -        return list; -    } -      public static void setList(Anime[] list) {          Anime.list = list;      } diff --git a/src/main/java/files/Bot.java b/src/main/java/files/Bot.java index dcbb64a..c1cff05 100644 --- a/src/main/java/files/Bot.java +++ b/src/main/java/files/Bot.java @@ -3,90 +3,92 @@ package files;  import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.UpdatesListener;  import com.pengrad.telegrambot.model.CallbackQuery; -import com.pengrad.telegrambot.model.Update; +import com.pengrad.telegrambot.model.request.ParseMode;  import com.pengrad.telegrambot.request.SendMessage;  import com.pengrad.telegrambot.request.SendPhoto; -import com.pengrad.telegrambot.request.SendVideo; -import com.pengrad.telegrambot.response.SendResponse; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*;  import java.util.Properties; +// TODO: 7/25/21 Добавить поиск Аниме OVA, аниме по жанру, Дорамы, случайное аниме +  public class Bot { -    public static void main(String[] args) throws IOException { -        // Loading properties -        Properties properties = new Properties(); -        properties.load(new FileInputStream("app.properties")); -        // Creating telegram bot -        TelegramBot telegramBot = new TelegramBot(properties.getProperty("TELEGRAM_TOKEN")); +    public static Properties properties = loadProperties(new File("app.properties")); +    public static TelegramBot telegramBot = new TelegramBot(properties.getProperty("TELEGRAM_TOKEN")); +    public static FileWriter log; + +    public static void main(String[] args) throws IOException { +        log = new FileWriter("log.txt", false); -        // Setting updates listener          telegramBot.setUpdatesListener(updates -> {              updates.forEach(update -> {                  if (UserCallbackQuery.checkIfNotNull(update.callbackQuery())) { -                    UserCallbackQuery.setInformation(update.callbackQuery()); -                    UserCallbackQuery.execute(telegramBot); -                } else if (UserMessage.checkIfNotNull(update.message())) { -                    UserMessage.setInformation(update.message()); -                    UserMessage.execute(telegramBot, update); +                    try { +                        UserCallbackQuery.execute(update.callbackQuery()); +                    } catch (IOException e) { +                        e.printStackTrace(); +                    } +                } +                if (UserMessage.checkIfNotNull(update.message())) { +                    try { +                        UserMessage.execute(update.message()); +                    } catch (IOException e) { +                        e.printStackTrace(); +                    }                  }              });              return UpdatesListener.CONFIRMED_UPDATES_ALL;          });      } -    public static void showAnimeAtMainMenu(TelegramBot telegramBot, Update update, byte index, String url, String typeOfAnime) { +    public static Properties loadProperties(File file) { +        Properties properties = new Properties(); +        try (FileInputStream fis = new FileInputStream(file)) { +            properties.load(fis); +        } catch (IOException e) { +            e.printStackTrace(); +        } +        return properties; +    } + +    public static void sendAnimeAtMainMenu(String url, String typeOfAnime) {          Anime[] anime = new Anime[28]; +        byte index = Anime.indexOfAnime;          try { -            anime = Parser.getAnimeAtMainMenu(url); +            anime = Parse.getAnimeAtMainMenu(url, typeOfAnime);          } catch (IOException e) {              e.printStackTrace();          }          Anime.setList(anime); -        telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); +        telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel(typeOfAnime)));      } -    public static void showAnimeAtMainMenuByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index, String typeOfAnime, Anime[] list) { -        telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); +    public static void sendAnimeAtMainMenuByCallBackQuery(String typeOfAnime) { +        Anime[] anime = Anime.list; +        byte index = Anime.indexOfAnime; +        telegramBot.execute(new SendPhoto(UserCallbackQuery.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel(typeOfAnime)));      } -    public static void showSearchedAnime(TelegramBot telegramBot, Update update, byte index, String searchedAnime) throws IOException { -        byte animeAtSearchSize = Parser.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime); +    public static void sendSearchedAnime(byte index, String searchedAnime) throws IOException { +        byte animeAtSearchSize = Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime);          if (animeAtSearchSize > 0) { -            Anime[] anime = new Anime[Parser.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime)]; +            Anime[] anime = new Anime[Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime)];              try { -                anime = Parser.getAnimeAtSearch("https://animego.org/search/all?q=" + searchedAnime); +                anime = Parse.getAnimeAtSearch("https://animego.org/search/all?q=" + searchedAnime);              } catch (IOException e) {                  e.printStackTrace();              }              Anime.setSearchedAnimeSize(animeAtSearchSize);              Anime.setList(anime); -            telegramBot.execute(new SendPhoto(update.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); +            telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel("SearchedAnime")));          } else { -            telegramBot.execute(new SendMessage(update.message().chat().id(), "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); +            telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!"));              Anime.setIsSearchingAnAnime(true);          }      } -    public static void showSearchedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index, Anime[] list) { -        telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); -    } - -    public static void showRecentlyAddedAnime(TelegramBot telegramBot, Update update, byte index) throws IOException { -        showAnimeAtMainMenu(telegramBot, update, index, "https://anime.anidub.life/anime/anime_ongoing/", "RecentlyAddedAnime"); -    } - -    public static void showRecentlyAddedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { -        showAnimeAtMainMenuByCallBackQuery(telegramBot, callbackQuery, index,"RecentlyAddedAnime", Anime.getList()); -    } - -    public static void showRecentlyReleasedAnime(TelegramBot telegramBot, Update update, byte index) throws IOException { -        showAnimeAtMainMenu(telegramBot, update, index, "https://animego.org/anime?sort=a.startDate&direction=desc", "RecentlyReleasedAnime"); -    } - -    public static void showRecentlyReleasedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { -        showAnimeAtMainMenuByCallBackQuery(telegramBot, callbackQuery, index,"RecentlyReleasedAnime", Anime.getList()); +    public static void sendSearchedAnimeByCallBackQuery(CallbackQuery callbackQuery, byte index, Anime[] list) { +        telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel("SearchedAnime")));      }  } diff --git a/src/main/java/files/MyKeyboard.java b/src/main/java/files/MyKeyboard.java index 8beb6e2..6212542 100644 --- a/src/main/java/files/MyKeyboard.java +++ b/src/main/java/files/MyKeyboard.java @@ -4,22 +4,81 @@ import com.pengrad.telegrambot.model.request.Keyboard;  import com.pengrad.telegrambot.model.request.InlineKeyboardButton;  import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup;  import com.pengrad.telegrambot.model.request.ReplyKeyboardMarkup; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.IOException; +import java.util.ArrayList;  public class MyKeyboard {      public static Keyboard getMain() {          return new ReplyKeyboardMarkup(                  new String[]{"Поиск аниме"}, -                new String[]{"Недавно добавленные аниме"}, -                new String[]{"Новинки аниме"}, -                new String[]{"Случайное аниме"}) +                new String[]{"Онгоинги"}, +                new String[]{"Аниме сериалы"}, +                new String[]{"Аниме фильмы"})                  .oneTimeKeyboard(true)                  .resizeKeyboard(true)                  .selective(true);      }      public static Keyboard getCarousel(String typeOfAnime) { -        return new InlineKeyboardMarkup( -                new InlineKeyboardButton("<").callbackData("previous" + typeOfAnime), -                new InlineKeyboardButton(">").callbackData("next" + typeOfAnime)); +        InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); + +        inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Смотреть / Скачать").callbackData("watchOrDownload")); +        inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Пред.").callbackData("previous" + typeOfAnime), new InlineKeyboardButton("След.").callbackData("next" + typeOfAnime)); + +        return inlineKeyboardMarkup; +    } + +    public static Keyboard getDub() { +        return new InlineKeyboardMarkup(new InlineKeyboardButton("Anidub").callbackData("anidub")); +    } + +    public static Keyboard getAnidub() throws IOException { +        Anime[] anime = Anime.list; +        Anime thisAnime = anime[Anime.indexOfAnime]; + +        Elements seriesList = Parse.getPage(thisAnime.getUrl()).select("div[class=tabs-b video-box]").next().select("span"); +        ArrayList<String> series = new ArrayList<>(); +        ArrayList<String> seriesUrls = new ArrayList<>(); + +        for (Element seriesTemp : seriesList) { +            series.add(Jsoup.parse(String.valueOf(seriesTemp)).text()); +        } + +        for (Element seriesTemp : seriesList) { +            String text = seriesTemp.toString(); +            int start = text.indexOf("=\"") + 2; +            int end = text.indexOf("\" "); +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            seriesUrls.add(String.valueOf(dst)); +        } + +        InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); +        for (int i = 0; i < series.size(); i++) { +            if (i+2 < series.size()) { +                inlineKeyboardMarkup.addRow( +                    new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)), +                    new InlineKeyboardButton(series.get(i+1)).url(seriesUrls.get(i+1)), +                    new InlineKeyboardButton(series.get(i+2)).url(seriesUrls.get(i+2)) +                ); +                i += 2; +            } else if (i+1 < series.size()) { +                inlineKeyboardMarkup.addRow( +                    new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)), +                    new InlineKeyboardButton(series.get(i+1)).url(seriesUrls.get(i+1)) +                ); +                i++; +            } else { +                inlineKeyboardMarkup.addRow( +                    new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)) +                ); +            } +        } + +        return inlineKeyboardMarkup;      }  } diff --git a/src/main/java/files/Parser.java b/src/main/java/files/Parse.java index 6433297..031e91e 100644 --- a/src/main/java/files/Parser.java +++ b/src/main/java/files/Parse.java @@ -1,6 +1,5 @@  package files; -import com.pengrad.telegrambot.request.SendVideo;  import org.jsoup.Jsoup;  import org.jsoup.nodes.Document;  import org.jsoup.nodes.Element; @@ -10,19 +9,23 @@ import java.io.IOException;  import java.net.URL;  import java.util.ArrayList; -public class Parser { +public class Parse {      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[id=dle-content]").first(); +    public static Anime[] getAnimeAtMainMenu(String page, String typeOfAnime) throws IOException { +        Element animeList = Parse.getPage(page).select("div[id=dle-content]").first();          assert animeList != null;          Elements namesTemp = animeList.select("div[class=th-title]"); -//        Elements descriptionsTemp = animeList.select("div[class=description d-none d-sm-block]"); -//        Elements yearsTemp = animeList.select("span[class=anime-year mb-2]").select("a"); +        Elements descriptionsTemp = animeList.select("div[class=th-tip-text]"); +        Elements yearsTemp = null; +        if (!typeOfAnime.equals("Ongoing")) yearsTemp = animeList.select("div[class=th-tip-meta fx-row fx-middle fx-start]");  //        Elements genresTemp = animeList.select("span[class=anime-genre d-none d-sm-inline]").select("a[class=mb-2 text-link-gray text-underline]"); -        Elements seriesTemp = animeList.select("div[class=th-title]"); +        Elements seriesTemp = null; +        if (!typeOfAnime.equals("AnimeFilms")) { +            seriesTemp = animeList.select("div[class=th-title]"); +        }          Elements ratingsTemp = animeList.select("div[class=th-rating]");          Elements imagesTemp = animeList.select("div[class=th-img img-resp-vert img-fit]");          Elements urlsTemp = animeList.select("div[class=th-itemb]").select("a[class=th-in]"); @@ -31,41 +34,50 @@ public class Parser {          ArrayList<String> names = new ArrayList<>();          for (Element name : namesTemp) { -            String text = Jsoup.parse(String.valueOf(name)).text(); -            int start = 0; -            int end = text.indexOf(" ["); -            char[] dst = new char[end - start]; -            text.getChars(start, end, dst, 0); -            names.add(String.valueOf(dst)); +            if (!typeOfAnime.equals("AnimeFilms")) { +                String text = Jsoup.parse(String.valueOf(name)).text(); +                int start = 0; +                int end = text.indexOf(" ["); +                char[] dst = new char[end - start]; +                text.getChars(start, end, dst, 0); +                names.add(String.valueOf(dst)); +            } else { +                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> 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> years = new ArrayList<>(); +        if (!typeOfAnime.equals("Ongoing")) { +            for (Element year : yearsTemp) { +                Element yearTemp = year.child(0); +                years.add(Jsoup.parse(String.valueOf(yearTemp)).text()); +            } +        }          ArrayList<String> series = new ArrayList<>(); -        for (Element oneSeries : seriesTemp) { -            String text = oneSeries.toString(); -            int start = text.indexOf("из ") + 3; -            if (start == 2) start = text.indexOf("ИЗ ") + 3; -            int end = text.indexOf("]"); -            if (start == 2) { -                start = text.indexOf("[") + 1; -                end = text.indexOf(" по") + 1; -            } -            char[] dst = new char[end - start]; -            text.getChars(start, end, dst, 0); -            if (String.valueOf(dst).equals("ххх")) { -                start = text.indexOf("[") + 1; -                end = text.indexOf(" из") - 1; +        if (!typeOfAnime.equals("AnimeFilms")) { +            for (Element oneSeries : seriesTemp) { +                String text = oneSeries.toString(); +                int start = text.indexOf("из ") + 3; +                if (start == 2) start = text.indexOf("ИЗ ") + 3; +                int end = text.indexOf("]"); +                if (start == 2) { +                    start = text.indexOf("[") + 1; +                    end = text.indexOf(" по") + 1; +                } +                char[] dst = new char[end - start]; +                text.getChars(start, end, dst, 0); +                if (String.valueOf(dst).equals("ххх")) { +                    start = text.indexOf("[") + 1; +                    end = text.indexOf(" из") - 1; +                } +                series.add(String.valueOf(dst));              } -            series.add(String.valueOf(dst));          }          ArrayList<String> ratings = new ArrayList<>(); @@ -78,9 +90,16 @@ public class Parser {              String text = image.toString();              int start = text.indexOf("data-src=\"") + 11;              int end = text.indexOf(".jpg") + 4; +            if (end == 3) { +                end = text.indexOf(".png") + 4; +            }              char[] dst = new char[end - start];              text.getChars(start, end, dst, 0); -            images.add("https://anime.anidub.life/" + String.valueOf(dst)); +            if (!String.valueOf(dst).contains("statics")) { +                images.add("https://online.anidub.com/" + String.valueOf(dst)); +            } else { +                images.add("h" + String.valueOf(dst)); +            }          }          ArrayList<String> urls = new ArrayList<>(); @@ -95,14 +114,20 @@ public class Parser {          Anime[] anime = new Anime[countOfAnime];          for (int i = 0; i < countOfAnime; i++) { -            anime[i] = new Anime(names.get(i), null, null, null, series.get(i), ratings.get(i), images.get(i), urls.get(i)); +            if (typeOfAnime.equals("AnimeFilms")) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), ratings.get(i), images.get(i), urls.get(i)); +            } else if (typeOfAnime.equals("Ongoing")) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), null, null, series.get(i), ratings.get(i), images.get(i), urls.get(i)); +            } else { +                anime[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), series.get(i), ratings.get(i), images.get(i), urls.get(i)); +            }          }          return anime;      }      public static Anime[] getAnimeAtSearch(String page) throws IOException { -        Element animeList = Parser.getPage(page).select("div[class=animes-grid position-relative]").first(); +        Element animeList = Parse.getPage(page).select("div[class=animes-grid position-relative]").first();          assert animeList != null;          Elements namesTemp = animeList.select("div[class=h5 font-weight-normal mb-2 card-title text-truncate]").select("a");          Elements descriptionsTemp = animeList.select("div[class=anime-small-description read-more-container]"); @@ -166,7 +191,7 @@ public class Parser {          }          ArrayList<String> urls = new ArrayList<>(); -        for (Element url :urlsTemp) { +        for (Element url : urlsTemp) {              String text = url.toString();              int start = text.indexOf("=\"") + 2;              int end = text.indexOf("\" title") - 1; @@ -184,7 +209,7 @@ public class Parser {      }      public static byte getAnimeAtSearchSize(String page) throws IOException { -        Element animeList = Parser.getPage(page).select("div[class=animes-grid position-relative]").first(); +        Element animeList = Parse.getPage(page).select("div[class=animes-grid position-relative]").first();          assert animeList != null;          if (animeList == null) return 0; diff --git a/src/main/java/files/UserCallbackQuery.java b/src/main/java/files/UserCallbackQuery.java index 7a297a8..553f6fd 100644 --- a/src/main/java/files/UserCallbackQuery.java +++ b/src/main/java/files/UserCallbackQuery.java @@ -2,81 +2,131 @@ package files;  import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.model.CallbackQuery; +import com.pengrad.telegrambot.model.Update;  import com.pengrad.telegrambot.model.User; +import com.pengrad.telegrambot.model.request.ParseMode;  import com.pengrad.telegrambot.request.DeleteMessage; +import com.pengrad.telegrambot.request.SendMessage; +import com.pengrad.telegrambot.request.SendPhoto; +import files.entity.TelegramUser; + +import java.io.IOException;  public class UserCallbackQuery extends com.pengrad.telegrambot.model.CallbackQuery { -    private static CallbackQuery callbackQuery; -    private static String data; -    private static User user; -    private static int messageId; -    private static long chatId; +    public static CallbackQuery callbackQuery; +    public static String data; +    public static User user; +    public static long userId; +    public static String fullName; +    public static int messageId; +    public static long chatId;      public static void setInformation(CallbackQuery callbackQuery) {          UserCallbackQuery.callbackQuery = callbackQuery;          UserCallbackQuery.data = callbackQuery.data();          UserCallbackQuery.user = callbackQuery.from(); +        UserCallbackQuery.userId = callbackQuery.from().id(); +        UserCallbackQuery.fullName = callbackQuery.from().firstName() + TelegramUser.checkIfHasLastName(user);          UserCallbackQuery.messageId = callbackQuery.message().messageId();          UserCallbackQuery.chatId = callbackQuery.message().chat().id();      } +    public static String getInformation() { +        return "callbackQuery: " + callbackQuery + System.lineSeparator() + +                "data: " + data + System.lineSeparator() + +                "userId: " + userId + System.lineSeparator() + +                "fullName: " + fullName + System.lineSeparator() + +                "messageId: " + messageId + System.lineSeparator() + +                "chatId: " + chatId + "\n\n"; +    } +      public static boolean checkIfNotNull(CallbackQuery callbackQuery) {          return (callbackQuery != null);      } -    public static void execute(TelegramBot telegramBot) { -        if (data.equals("previousRecentlyAddedAnime")) { -            if (Anime.getIndexOfAnime() == 0) { -                Anime.setIndexOfAnime((byte) 19); -            } else { -                Anime.decreaseIndexOfAnime(); +    public static void execute(CallbackQuery callbackQuery) throws IOException { +        UserCallbackQuery.setInformation(callbackQuery); + +        Bot.log.write(UserCallbackQuery.getInformation()); +        Bot.log.flush(); + +        switch (data) { +            case "previousOngoing" -> { +                if (Anime.indexOfAnime == 0) { +                    Anime.setIndexOfAnime((byte) 27); +                } else { +                    Anime.decreaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing");              } -            Bot.showRecentlyAddedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); -        } -        if (data.equals("nextRecentlyAddedAnime")) { -            if (Anime.getIndexOfAnime() == 19) { -                Anime.setIndexOfAnime((byte) 0); -            } else { -                Anime.increaseIndexOfAnime(); +            case "nextOngoing" -> { +                if (Anime.indexOfAnime == 27) { +                    Anime.setIndexOfAnime((byte) 0); +                } else { +                    Anime.increaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing");              } -            Bot.showRecentlyAddedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); -        } - -        if (data.equals("previousRecentlyReleasedAnime")) { -            if (Anime.getIndexOfAnime() == 0) { -                Anime.setIndexOfAnime((byte) 19); -            } else { -                Anime.decreaseIndexOfAnime(); +            case "previousAnimeSerials" -> { +                if (Anime.indexOfAnime == 0) { +                    Anime.setIndexOfAnime((byte) 27); +                } else { +                    Anime.decreaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials");              } -            Bot.showRecentlyReleasedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); -        } -        if (data.equals("nextRecentlyReleasedAnime")) { -            if (Anime.getIndexOfAnime() == 19) { -                Anime.setIndexOfAnime((byte) 0); -            } else { -                Anime.increaseIndexOfAnime(); +            case "nextAnimeSerials" -> { +                if (Anime.indexOfAnime == 27) { +                    Anime.setIndexOfAnime((byte) 0); +                } else { +                    Anime.increaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials");              } -            Bot.showRecentlyReleasedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); -        } - -        if (data.equals("previousSearchedAnime")) { -            if (Anime.getIndexOfAnime() == 0) { -                Anime.setIndexOfAnime((byte) (Anime.getSearchedAnimeSize() - 1)); -            } else { -                Anime.decreaseIndexOfAnime(); +            case "previousAnimeFilms" -> { +                if (Anime.indexOfAnime == 0) { +                    Anime.setIndexOfAnime((byte) 27); +                } else { +                    Anime.decreaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms");              } -            Bot.showSearchedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime(), Anime.getList()); -        } -        if (data.equals("nextSearchedAnime")) { -            if (Anime.getIndexOfAnime() == Anime.getSearchedAnimeSize() - 1) { -                Anime.setIndexOfAnime((byte) 0); -            } else { -                Anime.increaseIndexOfAnime(); +            case "nextAnimeFilms" -> { +                if (Anime.indexOfAnime == 27) { +                    Anime.setIndexOfAnime((byte) 0); +                } else { +                    Anime.increaseIndexOfAnime(); +                } +                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms"); +            } +            case "previousSearchedAnime" -> { +                if (Anime.indexOfAnime == 0) { +                    Anime.setIndexOfAnime((byte) (Anime.searchedAnimeSize - 1)); +                } else { +                    Anime.decreaseIndexOfAnime(); +                } +                Bot.sendSearchedAnimeByCallBackQuery(callbackQuery, Anime.indexOfAnime, Anime.list); +            } +            case "nextSearchedAnime" -> { +                if (Anime.indexOfAnime == Anime.searchedAnimeSize - 1) { +                    Anime.setIndexOfAnime((byte) 0); +                } else { +                    Anime.increaseIndexOfAnime(); +                } +                Bot.sendSearchedAnimeByCallBackQuery(callbackQuery, Anime.indexOfAnime, Anime.list); +            } +            case "watchOrDownload" -> { +                Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, "Какую озвучку выберем?").replyMarkup(MyKeyboard.getDub())); +            } +            case "anidub" -> { +                Anime[] anime = Anime.list; +                byte index = Anime.indexOfAnime; +                Anime thisAnime = anime[index]; +                Bot.telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo("Anidub")).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getAnidub()));              } -            Bot.showSearchedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime(), Anime.getList());          }          DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId); -        telegramBot.execute(deleteMessage); +        Bot.telegramBot.execute(deleteMessage);      }  } diff --git a/src/main/java/files/UserMessage.java b/src/main/java/files/UserMessage.java index 14addf1..0670295 100644 --- a/src/main/java/files/UserMessage.java +++ b/src/main/java/files/UserMessage.java @@ -1,68 +1,97 @@  package files; -import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.model.Message; -import com.pengrad.telegrambot.model.Update; +import com.pengrad.telegrambot.model.User;  import com.pengrad.telegrambot.request.SendMessage; +import files.entity.TelegramUser;  import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date;  public class UserMessage {      public static Message message;      public static String text;      public static long chatId; +    private static String date; +    private static User user; +    private static long userId; +    private static String fullName; +    private static int messageId;      public static void setInformation(Message message) {          UserMessage.message = message; + +        long unixSeconds = message.date(); +        Date date = new java.util.Date(unixSeconds*1000L); +        SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); + +        UserMessage.date = sdf.format(date); +        UserMessage.user = message.from(); +        UserMessage.userId = message.from().id(); +        UserMessage.fullName = message.from().firstName() + TelegramUser.checkIfHasLastName(user); +        UserMessage.messageId = message.messageId();          UserMessage.text = message.text();          UserMessage.chatId = message.chat().id();      } +    public static String getInformation() { +        return "message: " + message + System.lineSeparator() + +                "date: " + date + System.lineSeparator() + +                "text: " + text + System.lineSeparator() + +                "userId: " + userId + System.lineSeparator() + +                "fullName: " + fullName + System.lineSeparator() + +                "messageId: " + messageId + System.lineSeparator() + +                "chatId: " + chatId + "\n\n"; +    } +      public static boolean checkIfNotNull(Message message) {          return (message != null);      } -    public static void execute(TelegramBot telegramBot, Update update) { +    public static void execute(Message message) throws IOException { +        UserMessage.setInformation(message); + +        Bot.log.write(UserMessage.getInformation()); +        Bot.log.flush(); +          switch (UserMessage.text) { -            case "Поиск аниме": +//            case "Поиск аниме": +//                Anime.setIndexOfAnime((byte) 0); +//                Anime.setIsSearchingAnAnime(true); +//                telegramBot.execute(new SendMessage(UserMessage.chatId, "Введи название аниме, которое хочешь найти...")); +//                break; +            case "Онгоинги":                  Anime.setIndexOfAnime((byte) 0); -                Anime.setIsSearchingAnAnime(true); -                telegramBot.execute(new SendMessage(UserMessage.chatId, "Введи название аниме, которое хочешь найти...")); +                Anime.setIsSearchingAnAnime(false); +                Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/anime_ongoing/", "Ongoing");                  break; -            case "Недавно добавленные аниме": +            case "Аниме сериалы":                  Anime.setIndexOfAnime((byte) 0);                  Anime.setIsSearchingAnAnime(false); -                try { -                    Bot.showRecentlyAddedAnime(telegramBot, update, Anime.getIndexOfAnime()); -                } catch (IOException e) { -                    e.printStackTrace(); -                } +                Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/full/", "AnimeSerials");                  break; -            case "Новинки аниме": +            case "Аниме фильмы":                  Anime.setIndexOfAnime((byte) 0);                  Anime.setIsSearchingAnAnime(false); -                try { -                    Bot.showRecentlyReleasedAnime(telegramBot, update, Anime.getIndexOfAnime()); -                } catch (IOException e) { -                    e.printStackTrace(); -                } +                Bot.sendAnimeAtMainMenu("https://anime.anidub.life/anime_movie/", "AnimeFilms");                  break;              case "/start":  //                DataBase.saveUser(update);                  Anime.setIsSearchingAnAnime(false); -                telegramBot.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain())); +                Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain()));                  break;              default: -                if (Anime.getIsSearchingAnAnime()) { +                if (Anime.isSearchingAnAnime) {                      Anime.setSearchedAnime(UserMessage.text);                      Anime.setIsSearchingAnAnime(false);                      try { -                        Bot.showSearchedAnime(telegramBot, update, Anime.getIndexOfAnime(), Anime.getSearchedAnime()); +                        Bot.sendSearchedAnime(Anime.indexOfAnime, Anime.searchedAnime);                      } catch (IOException e) {                          e.printStackTrace();                      }                  } else { -                    telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain())); +                    Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain()));                  }                  break;          } |