func Crawl(pool *mgo.Session, du *DigestwUser, tl *TwTimeLine, resolveURL bool, done chan<- int) { defer func() { done <- 0 }() sess := pool.New() defer sess.Close() sa := NewStatsAll(du.TwUser.Screen_Name, sess) var sid, first, last int64 for k, v := range *tl { tmpTime, _ := time.Parse(time.RubyDate, v.Created_at) tmpSec := tmpTime.Seconds() if du.UTC_Offset != nil { tmpSec += *du.UTC_Offset v.Created_at = time.SecondsToUTC(tmpSec).Format(time.RubyDate) } if k == 0 { sid = v.Id last = tmpSec } addStats(sa, &v, resolveURL) if k == (len(*tl) - 1) { first = tmpSec } //log.Printf("id:%d", v.Id) } sa.Foreach(update) // decide to the next execution time du.SinceId = strconv.Itoa64(sid) du.NextSeconds = time.Seconds() + (last - first) if _, err := du.Upsert(sess); err != nil { log.Print(err) } }