14
14
import static org .oopproject .utils .Replies .getReply ;
15
15
import java .lang .reflect .Type ;
16
16
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 .*;
21
19
import java .util .concurrent .*;
20
+ import java .util .stream .Collectors ;
21
+
22
22
import org .telegram .telegrambots .meta .api .objects .replykeyboard .buttons .KeyboardRow ;
23
23
import org .telegram .telegrambots .meta .generics .TelegramClient ;
24
24
import org .telegram .telegrambots .meta .api .objects .Update ;
@@ -98,7 +98,7 @@ public void handleUpdate(Update update) {
98
98
}
99
99
}
100
100
}
101
-
101
+
102
102
private void loadGenreIndexFromDatabase (long chatId ) {
103
103
String jsonGenreString = database .getGenreIndexesJson (chatId );
104
104
if (jsonGenreString != null ) {
@@ -287,7 +287,7 @@ protected String handleYear(String messageText, long chatId) {
287
287
protected void handleSubscribe (long chatId ) {
288
288
database .updateSubscribe (chatId , true );
289
289
}
290
-
290
+
291
291
protected void handleUnsubscribe (long chatId ) {
292
292
database .updateSubscribe (chatId , false );
293
293
}
@@ -317,15 +317,76 @@ protected String handleAge(String messageText, long chatId) {
317
317
return responseMessage ;
318
318
}
319
319
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
+
320
359
public void startBroadcasting () {
321
- scheduler .scheduleAtFixedRate (()-> {
360
+ scheduler .scheduleAtFixedRate (() -> {
322
361
List <Long > subscribedUsers = database .getSubscribedUsers ();
362
+ List <FilmDeserializer > upcomingMovies = getUpcomingMovies (); // Получаем премьеры
363
+
323
364
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 ()); // Отправляем сообщение
325
385
}
326
- }, 0 , 1 , TimeUnit .MINUTES );
386
+ }, 0 , 1 , TimeUnit .MINUTES ); // С интервалом в 1 минуту
327
387
}
328
-
388
+
389
+
329
390
private void sendMessage (long chatId , String text ) {
330
391
SendMessage message =SendMessage .builder ()
331
392
.chatId (chatId )
@@ -337,7 +398,7 @@ private void sendMessage(long chatId, String text) {
337
398
e .printStackTrace ();
338
399
}
339
400
}
340
-
401
+
341
402
public String handleSubscription (String messageText , long chatId ) {
342
403
if (isCommand (messageText )) {
343
404
commandWaiter .put (chatId , NONE );
@@ -364,19 +425,4 @@ public String handleSubscription(String messageText, long chatId) {
364
425
return responseMessage ;
365
426
}
366
427
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
- // }
382
428
}
0 commit comments