| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package processor
- import (
- "context"
- "log"
- "spider/internal/crawler"
- "spider/internal/model"
- )
- // TMeChecker filters dead TG accounts via HTTP t.me page scraping.
- // Free, unlimited, 100% accurate.
- type TMeChecker struct {
- validator *crawler.TMeValidator
- }
- // NewTMeChecker creates a new TMeChecker.
- func NewTMeChecker() *TMeChecker {
- return &TMeChecker{validator: crawler.NewTMeValidator()}
- }
- // Filter checks each raw merchant's tg_username against t.me.
- // Returns alive merchants; dead ones are returned separately with status="invalid".
- func (c *TMeChecker) Filter(ctx context.Context, raws []model.MerchantRaw) (alive []model.MerchantRaw, dead []model.MerchantRaw) {
- for _, raw := range raws {
- if ctx.Err() != nil {
- break
- }
- if raw.TgUsername == "" {
- alive = append(alive, raw)
- continue
- }
- if c.validator.IsAlive(ctx, raw.TgUsername) {
- alive = append(alive, raw)
- } else {
- log.Printf("[tmechecker] dead: @%s", raw.TgUsername)
- dead = append(dead, raw)
- }
- }
- return
- }
|