feat: Inital commit

This commit is contained in:
2025-07-26 05:58:59 +00:00
commit 753d1c60ea
1849 changed files with 830533 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
package main
import (
"context"
"flag"
"log"
"strconv"
"strings"
"time"
"git.pengzhan.dev/aimaren/internal/config"
"git.pengzhan.dev/aimaren/internal/crawler"
"git.pengzhan.dev/aimaren/internal/driver"
"git.pengzhan.dev/aimaren/internal/notifier"
"git.pengzhan.dev/aimaren/internal/storage"
)
func main() {
chatIDsFlag := flag.String("chatids", "", "Comma-separated list of Telegram chat IDs to override config")
debugMode := flag.Bool("debug", false, "Enable debug mode to print raw HTML from scrapes.")
flag.Parse()
cfg, err := config.Load()
if err != nil {
log.Fatalf("❌ Failed to load configuration: %v", err)
}
if *chatIDsFlag != "" {
log.Printf("📲 Overriding chat IDs with flag: %s", *chatIDsFlag)
var parsedIDs []int64
idStrings := strings.Split(*chatIDsFlag, ",")
for _, idStr := range idStrings {
id, err := strconv.ParseInt(strings.TrimSpace(idStr), 10, 64)
if err != nil {
log.Fatalf("❌ Invalid chat ID in --chatids flag: '%s'", idStr)
}
parsedIDs = append(parsedIDs, id)
}
cfg.Telegram.ChatIDs = parsedIDs
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
if *debugMode {
ctx = context.WithValue(ctx, crawler.DebugContextKey, true)
log.Println("🐞 Debug mode enabled.")
}
store, err := storage.NewFirestoreClient(ctx, cfg.GCPProjectID)
if err != nil {
log.Fatalf("❌ Failed to create Firestore client: %v", err)
}
defer store.Close()
notify, err := notifier.NewTelegramNotifier(cfg)
if err != nil {
log.Fatalf("❌ Failed to create Telegram notifier: %v", err)
}
appDriver := driver.New(store, notify)
if err := appDriver.Run(ctx); err != nil {
log.Fatalf("❌ Crawler run failed: %v", err)
}
log.Println("✅ Crawler run completed successfully.")
}