diff --git a/app.go b/app.go index e09cd4a..d18a0de 100644 --- a/app.go +++ b/app.go @@ -3,15 +3,60 @@ package main import ( "GofileScrapper/api" "GofileScrapper/misc" + "GofileScrapper/structs" "fmt" + "sync" ) -func main() { - id := misc.GetRandomContent() - guest, err := api.GetGuest() - if err != nil { - misc.Logger.Error().Msg(err.Error()) +func run(guest structs.Guest) []structs.Content { + var contents []structs.Content + + for i := 0; i < 10; i++ { + id := misc.GetRandomContent() + content, err := api.GetContent(guest, id) + + if err != nil { + misc.Logger.Error().Msg(err.Error()) + } else { + contents = append(contents, content) + } } - fmt.Println(api.GetContent(guest, id)) + return contents +} + +func main() { + var guests []structs.Guest + + for i := 0; i < misc.GUEST_COUNT; i++ { + guest, err := api.GetGuest() + if err != nil { + misc.Logger.Error().Msg(err.Error()) + } else { + guests = append(guests, guest) + } + } + + results := make(chan structs.Content) + + var wg sync.WaitGroup + + for _, guest := range guests { + wg.Add(1) + go func(guest structs.Guest) { + defer wg.Done() + for _, content := range run(guest) { + results <- content + } + }(guest) + } + + go func() { + wg.Wait() + close(results) + }() + + for content := range results { + fmt.Println("Content:", content) + } } diff --git a/misc/constants.go b/misc/constants.go index 7510ad2..5eb711f 100644 --- a/misc/constants.go +++ b/misc/constants.go @@ -2,3 +2,5 @@ package misc var CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" var API_URL = "https://api.gofile.io" + +var GUEST_COUNT = 5