feat: Inital commit
This commit is contained in:
@@ -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.")
|
||||
}
|
||||
Reference in New Issue
Block a user