Skip to content

Commit 570eb80

Browse files
send premiers
1 parent f074f74 commit 570eb80

File tree

1 file changed

+72
-26
lines changed

1 file changed

+72
-26
lines changed

src/main/java/org/oopproject/TelegramBot.java

Lines changed: 72 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
import static org.oopproject.utils.Replies.getReply;
1515
import java.lang.reflect.Type;
1616
import java.sql.SQLException;
17-
import java.util.ArrayList;
18-
import java.util.HashMap;
19-
import java.util.List;
20-
import java.util.Map;
17+
import java.time.LocalDate;
18+
import java.util.*;
2119
import java.util.concurrent.*;
20+
import java.util.stream.Collectors;
21+
2222
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
2323
import org.telegram.telegrambots.meta.generics.TelegramClient;
2424
import org.telegram.telegrambots.meta.api.objects.Update;
@@ -98,7 +98,7 @@ public void handleUpdate(Update update) {
9898
}
9999
}
100100
}
101-
101+
102102
private void loadGenreIndexFromDatabase(long chatId) {
103103
String jsonGenreString = database.getGenreIndexesJson(chatId);
104104
if (jsonGenreString != null) {
@@ -287,7 +287,7 @@ protected String handleYear(String messageText, long chatId) {
287287
protected void handleSubscribe(long chatId) {
288288
database.updateSubscribe(chatId, true);
289289
}
290-
290+
291291
protected void handleUnsubscribe(long chatId) {
292292
database.updateSubscribe(chatId, false);
293293
}
@@ -317,15 +317,76 @@ protected String handleAge(String messageText, long chatId) {
317317
return responseMessage;
318318
}
319319

320+
public List<FilmDeserializer> getUpcomingMovies() {
321+
try {
322+
// Получаем текущий год и месяц для фильтрации премьеров
323+
LocalDate currentDate = LocalDate.now();
324+
int currentYear = currentDate.getYear();
325+
int currentMonth = currentDate.getMonthValue();
326+
327+
// Создаем параметры запроса для фильмов, которые были выпущены в текущем месяце
328+
MovieParameters params = new MovieParameters(
329+
"240e7fef369901fb314c80d53d1532d1", // Используйте ваш API ключ TMDb
330+
"PG-13", // Уровень сертификации
331+
"US", // Страна сертификации
332+
false, // Без взрослых фильмов
333+
"ru", // Язык (русский)
334+
1, // Страница
335+
"2024-11-01", // Начальная дата
336+
currentDate.toString(), // Конечная дата
337+
"release_date.asc", // Сортировка по дате релиза
338+
0, // Минимальный рейтинг
339+
10, // Максимальный рейтинг
340+
"", // Жанры
341+
"US", // Страна происхождения
342+
0, // Минимальное время
343+
currentYear // Год
344+
);
345+
346+
// Выполнение запроса
347+
ListDeserializer movieList = tmdbService.findMovie(params);
348+
if (movieList != null && movieList.results != null) {
349+
// Возвращаем первые 5 фильмов
350+
return movieList.results.stream().limit(10).collect(Collectors.toList());
351+
}
352+
} catch (Exception e) {
353+
e.printStackTrace();
354+
}
355+
return Collections.emptyList();
356+
}
357+
358+
320359
public void startBroadcasting() {
321-
scheduler.scheduleAtFixedRate(()-> {
360+
scheduler.scheduleAtFixedRate(() -> {
322361
List<Long> subscribedUsers = database.getSubscribedUsers();
362+
List<FilmDeserializer> upcomingMovies = getUpcomingMovies(); // Получаем премьеры
363+
323364
for (Long chatId : subscribedUsers) {
324-
sendMessage(chatId, "Подписчику");
365+
StringBuilder messageText = new StringBuilder("🎬 Фильмы премьеры:\n");
366+
367+
if (upcomingMovies.isEmpty()) {
368+
messageText.append("К сожалению, нет новых фильмов на данный момент.");
369+
} else {
370+
for (int i = 0; i < upcomingMovies.size(); i++) {
371+
FilmDeserializer movie = upcomingMovies.get(i);
372+
messageText.append(i + 1)
373+
.append(". ")
374+
.append(movie.title)
375+
.append("\n")
376+
.append("Дата выхода: ")
377+
.append(movie.release_date)
378+
.append("\n")
379+
.append("Рейтинг: ")
380+
.append(movie.vote_average)
381+
.append("\n\n");
382+
}
383+
}
384+
sendMessage(chatId, messageText.toString()); // Отправляем сообщение
325385
}
326-
}, 0, 1, TimeUnit.MINUTES);
386+
}, 0, 1, TimeUnit.MINUTES); // С интервалом в 1 минуту
327387
}
328-
388+
389+
329390
private void sendMessage(long chatId, String text) {
330391
SendMessage message=SendMessage.builder()
331392
.chatId(chatId)
@@ -337,7 +398,7 @@ private void sendMessage(long chatId, String text) {
337398
e.printStackTrace();
338399
}
339400
}
340-
401+
341402
public String handleSubscription(String messageText, long chatId) {
342403
if (isCommand(messageText)) {
343404
commandWaiter.put(chatId, NONE);
@@ -364,19 +425,4 @@ public String handleSubscription(String messageText, long chatId) {
364425
return responseMessage;
365426
}
366427

367-
// protected void broadcastMessage(String message) {
368-
// List<Long> users = database.getSubscribedUsers();
369-
// for (Long chatId : users) {
370-
// new SendMessage(chatId, message);
371-
// }
372-
// }
373-
// protected void handleGetAge( long chatId) {
374-
// Integer userAge = database.getUserAge(chatId);
375-
// if (userAge != null) {
376-
// System.out.println("возраст "+ userAge);
377-
// }
378-
// else {
379-
// System.out.println("не нашли возраст");
380-
// }
381-
// }
382428
}

0 commit comments

Comments
 (0)