filter accounts by pattern
parent
a6c5121d54
commit
24b66d1c46
38
config.go
38
config.go
|
|
@ -24,16 +24,17 @@ var uploaders = map[string]Uploader{
|
|||
}
|
||||
|
||||
type Config struct {
|
||||
EmailUser string
|
||||
EmailPass string
|
||||
EmailIMAP string
|
||||
TodoAddr string
|
||||
TodoToken string
|
||||
TodoList string
|
||||
TodoTag string
|
||||
Uploader Uploader
|
||||
Storage storage.DB
|
||||
Banks map[Bank]bool
|
||||
EmailUser string
|
||||
EmailPass string
|
||||
EmailIMAP string
|
||||
TodoAddr string
|
||||
TodoToken string
|
||||
TodoList string
|
||||
TodoTag string
|
||||
Uploader Uploader
|
||||
Storage storage.DB
|
||||
Banks map[Bank]bool
|
||||
AccountsPattern string
|
||||
}
|
||||
|
||||
var config Config
|
||||
|
|
@ -52,7 +53,9 @@ func NewConfig() Config {
|
|||
as.Append(args.STRING, "todotoken", "todo token", "")
|
||||
as.Append(args.STRING, "todolist", "todo list", "")
|
||||
as.Append(args.STRING, "todotag", "todo tag", "expense")
|
||||
|
||||
as.Append(args.STRING, "banks", "uccu,citi,chase", "uccu,citi,chase")
|
||||
as.Append(args.STRING, "accounts", "regex to filter accounts", ".*")
|
||||
|
||||
as.Append(args.STRING, "authaddr", "auth addr", "https://auth.remote.blapointe.com")
|
||||
as.Append(args.STRING, "store", "store type", "map")
|
||||
|
|
@ -76,13 +79,14 @@ func NewConfig() Config {
|
|||
}
|
||||
|
||||
config = Config{
|
||||
EmailUser: as.GetString("emailuser"),
|
||||
EmailPass: as.GetString("emailpass"),
|
||||
EmailIMAP: as.GetString("emailimap"),
|
||||
TodoAddr: as.GetString("todoaddr"),
|
||||
TodoTag: as.GetString("todotag"),
|
||||
Storage: storage,
|
||||
Uploader: ul,
|
||||
EmailUser: as.GetString("emailuser"),
|
||||
EmailPass: as.GetString("emailpass"),
|
||||
EmailIMAP: as.GetString("emailimap"),
|
||||
TodoAddr: as.GetString("todoaddr"),
|
||||
TodoTag: as.GetString("todotag"),
|
||||
AccountsPattern: as.GetString("accounts"),
|
||||
Storage: storage,
|
||||
Uploader: ul,
|
||||
Banks: map[Bank]bool{
|
||||
Chase: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Chase.String())),
|
||||
Citi: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Citi.String())),
|
||||
|
|
|
|||
5
main.go
5
main.go
|
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"local/sandbox/contact/contact"
|
||||
"log"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -16,12 +17,16 @@ func main() {
|
|||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
patterns := regexp.MustCompile(config.AccountsPattern)
|
||||
for email := range emails {
|
||||
transactions, err := Scrape(email, config.Banks)
|
||||
if err != nil {
|
||||
log.Println("failed to scrape email:", err)
|
||||
}
|
||||
for _, transaction := range transactions {
|
||||
if !patterns.MatchString(transaction.Account) {
|
||||
log.Printf("skipping unmatching account pattern %q vs %q", config.AccountsPattern, transaction.Account)
|
||||
}
|
||||
if _, err := config.Storage.Get(transaction.ID); err == nil {
|
||||
log.Println("skipping duplicate transaction:", transaction)
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue