%s added successfully".formatted(appId));
}
}
diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/AddGoogleAppCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/AddGoogleAppCommand.java
index ed85769..9a83276 100644
--- a/src/main/java/com/miti99/storescraperbot/bot/command/AddGoogleAppCommand.java
+++ b/src/main/java/com/miti99/storescraperbot/bot/command/AddGoogleAppCommand.java
@@ -1,17 +1,22 @@
package com.miti99.storescraperbot.bot.command;
+import com.miti99.storescraperbot.api.google.GooglePlayScraper;
+import com.miti99.storescraperbot.api.google.request.GoogleAppRequest;
+import com.miti99.storescraperbot.api.google.response.GoogleAppResponse;
import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient;
import com.miti99.storescraperbot.repository.AdminRepository;
import com.miti99.storescraperbot.repository.GroupRepository;
+import lombok.extern.log4j.Log4j2;
import org.telegram.telegrambots.meta.api.objects.User;
import org.telegram.telegrambots.meta.api.objects.chat.Chat;
import org.telegram.telegrambots.meta.generics.TelegramClient;
+@Log4j2
public class AddGoogleAppCommand extends BaseStoreScraperBotCommand {
public static final AddGoogleAppCommand INSTANCE = new AddGoogleAppCommand();
AddGoogleAppCommand() {
- super("addgoogle", "%s added successfully".formatted(appId));
}
}
diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java
index eca8d0c..be60201 100644
--- a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java
+++ b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java
@@ -7,7 +7,6 @@ import com.miti99.storescraperbot.constant.Constant;
import com.miti99.storescraperbot.repository.AdminRepository;
import com.miti99.storescraperbot.repository.GroupRepository;
import java.time.LocalDate;
-import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import org.telegram.telegrambots.meta.api.objects.User;
import org.telegram.telegrambots.meta.api.objects.chat.Chat;
@@ -46,7 +45,7 @@ public class CheckAppCommand extends BaseStoreScraperBotCommand {
sb.append("-".repeat(46));
sb.append("\n");
for (var appId : group.getAppleApps()) {
- var updated = AppStoreScraper.getLastUpdateOfApp(appId);
+ var updated = AppStoreScraper.getAppUpdated(appId);
long days = ChronoUnit.DAYS.between(updated, now);
boolean passed = days <= Constant.NUM_DAYS_WARNING_NOT_UPDATED;
sb.append(
diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java
new file mode 100644
index 0000000..850172d
--- /dev/null
+++ b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java
@@ -0,0 +1,67 @@
+package com.miti99.storescraperbot.bot.command;
+
+import com.miti99.storescraperbot.api.apple.AppStoreScraper;
+import com.miti99.storescraperbot.api.google.GooglePlayScraper;
+import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient;
+import com.miti99.storescraperbot.constant.Constant;
+import com.miti99.storescraperbot.repository.AdminRepository;
+import com.miti99.storescraperbot.repository.GroupRepository;
+import java.time.temporal.ChronoUnit;
+import org.telegram.telegrambots.meta.api.objects.User;
+import org.telegram.telegrambots.meta.api.objects.chat.Chat;
+import org.telegram.telegrambots.meta.generics.TelegramClient;
+
+public class CheckAppScoreCommand extends BaseStoreScraperBotCommand {
+ public static final CheckAppScoreCommand INSTANCE = new CheckAppScoreCommand();
+
+ CheckAppScoreCommand() {
+ super("checkappscore", "Kiểm tra điểm đánh giá các app (sao)");
+ }
+
+ @Override
+ protected void executeCommand(
+ TelegramClient telegramClient, User user, Chat chat, String[] arguments) {
+ var admin = AdminRepository.INSTANCE.load();
+ if (!admin.getGroups().contains(chat.getId())) {
+ StoreScrapeBotTelegramClient.INSTANCE.sendMessage(
+ chat.getId(), "Group is not allowed to use bot");
+ return;
+ }
+
+ if (arguments.length != 0) {
+ StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), "Invalid arguments");
+ return;
+ }
+
+ long groupId = chat.getId();
+ var group = GroupRepository.INSTANCE.load(groupId);
+
+ var sb = new StringBuilder();
+ sb.append("Apple Apps:\n");
+ sb.append("\n");
+ sb.append("%-20s | %-10s | %-10s\n".formatted("AppId", "Score", "Reviews"));
+ sb.append("-".repeat(32));
+ sb.append("\n");
+ for (var appId : group.getAppleApps()) {
+ double score = AppStoreScraper.getAppScore(appId);
+ long reviews = AppStoreScraper.getAppReviews(appId);
+ sb.append("%-20s | %-10s | %-10s\n".formatted(appId, score, reviews));
+ }
+ sb.append("\n");
+ sb.append("\n");
+ sb.append("Google Apps:\n");
+ sb.append("\n");
+ sb.append("%-20s | %-10s | %-10s\n".formatted("AppId", "Score", "Ratings"));
+ sb.append("-".repeat(46));
+ sb.append("\n");
+ for (var appId : group.getGoogleApps()) {
+ double score = GooglePlayScraper.getAppScore(appId);
+ long ratings = GooglePlayScraper.getAppRatings(appId);
+ sb.append("%-20s | %-10s | %-10s\n".formatted(appId, score, ratings));
+ }
+ sb.append("");
+ sb.append("\n");
+
+ StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), sb.toString());
+ }
+}
diff --git a/src/main/java/com/miti99/storescraperbot/constant/Constant.java b/src/main/java/com/miti99/storescraperbot/constant/Constant.java
index 24b3445..8f1859c 100644
--- a/src/main/java/com/miti99/storescraperbot/constant/Constant.java
+++ b/src/main/java/com/miti99/storescraperbot/constant/Constant.java
@@ -1,7 +1,7 @@
package com.miti99.storescraperbot.constant;
public class Constant {
- public static final String APP_NAME = "store_scraper_bot";
+ public static final String COMMON_COLLECTION_NAME = "common";
public static final long APP_CACHE_SECONDS = 600;
public static final long NUM_DAYS_WARNING_NOT_UPDATED = 30;
}
diff --git a/src/main/java/com/miti99/storescraperbot/model/entity/AppleAppInfo.java b/src/main/java/com/miti99/storescraperbot/model/entity/AppleAppInfo.java
new file mode 100644
index 0000000..10a6305
--- /dev/null
+++ b/src/main/java/com/miti99/storescraperbot/model/entity/AppleAppInfo.java
@@ -0,0 +1,3 @@
+package com.miti99.storescraperbot.model.entity;
+
+public class AppleAppInfo {}
diff --git a/src/main/java/com/miti99/storescraperbot/model/entity/GoogleAppInfo.java b/src/main/java/com/miti99/storescraperbot/model/entity/GoogleAppInfo.java
new file mode 100644
index 0000000..eb51c94
--- /dev/null
+++ b/src/main/java/com/miti99/storescraperbot/model/entity/GoogleAppInfo.java
@@ -0,0 +1,3 @@
+package com.miti99.storescraperbot.model.entity;
+
+public class GoogleAppInfo {}
diff --git a/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java b/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java
index d2865b8..594ab5a 100644
--- a/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java
+++ b/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java
@@ -16,9 +16,15 @@ public abstract class AbstractRepositoryTODO: Refactor các logic của một single key repository sang abstract class để dễ hiểu hơn.
+ * Code hiện tại này chỉ là trick tạm thời nên chưa tốt lắm. Cần thiết kế lại tốt hơn
+ */
public class AdminRepository extends AbstractRepository