package parser import ( "bufio" "fmt" "html" "log" "os" "regexp" "strings" "google.golang.org/api/gmail/v1" ) // Message . type Message struct { gmailID string date string // retrieved from message header snippet string } // GetMessages . func GetMessages(srv *gmail.Service) []Message { msgs := []Message{} pageToken := "" for { req := srv.Users.Messages.List("me").Q("is:unread").Q("from:messaging@iamresponding.com") // req := srv.Users.Messages.List("me").Q("is:unread") if pageToken != "" { req.PageToken(pageToken) } r, err := req.Do() if err != nil { log.Fatalf("Unable to retrieve messages: %v", err) } log.Printf("Processing %v messages...\n", len(r.Messages)) for _, m := range r.Messages { msg, err := srv.Users.Messages.Get("me", m.Id).Format("full").Do() if err != nil { log.Fatalf("Unable to retrieve message %v: %v", m.Id, err) } date := "" for _, h := range msg.Payload.Headers { if h.Name == "Date" { date = h.Value } // break } msgs = append(msgs, Message{ gmailID: msg.Id, date: date, snippet: html.UnescapeString(msg.Snippet), }) } if r.NextPageToken == "" { break } pageToken = r.NextPageToken } reader := bufio.NewReader(os.Stdin) count, deleted := 0, 0 for _, m := range msgs { count++ re := regexp.MustCompile(`^(?P
[^\s\[\[].*)\s\[\[(?P[^\]\]].*)\]\]\s\((?P[^\)].*)\)\s\-\s(?P.*?)(?P\(\d{3}\)\s\d{3}\-\d{4})?\s?(?:F\d{9})?\s?(?:\d{7})?\s?(?P