summaryrefslogtreecommitdiff
path: root/src/main/java/files
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/files')
-rw-r--r--src/main/java/files/Anime.java86
-rw-r--r--src/main/java/files/Bot.java94
-rw-r--r--src/main/java/files/MyKeyboard.java71
-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.java150
-rw-r--r--src/main/java/files/UserMessage.java73
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;
}