Gitea migration
This commit is contained in:
114
scraper.go
Normal file
114
scraper.go
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
Author: Lew Price
|
||||
|
||||
Note: THIS WILL NOT WORK WITHOUT CREATING A BOT ON DISCORD AND SUPPLYING THIS CODE WITH THE BOT TOKEN!
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/gocolly/colly"
|
||||
)
|
||||
|
||||
type Key struct {
|
||||
hash string
|
||||
reward string
|
||||
date string
|
||||
}
|
||||
|
||||
func getTable() []Key {
|
||||
|
||||
var keyList []Key
|
||||
|
||||
c := colly.NewCollector()
|
||||
|
||||
c.OnRequest(func(r *colly.Request) {
|
||||
fmt.Println("Visiting: ", r.URL)
|
||||
})
|
||||
|
||||
c.OnError(func(_ *colly.Response, err error) {
|
||||
fmt.Println("Something went wrong: ", err)
|
||||
})
|
||||
|
||||
c.OnResponse(func(r *colly.Response) {
|
||||
fmt.Println("Page visited: ", r.Request.URL)
|
||||
})
|
||||
|
||||
c.OnScraped(func(r *colly.Response) {
|
||||
|
||||
})
|
||||
|
||||
c.OnHTML("table", func(e *colly.HTMLElement) {
|
||||
fmt.Print("Processing the table...\n\n")
|
||||
var key Key
|
||||
count := 0
|
||||
e.ForEach("span", func(i int, h *colly.HTMLElement) {
|
||||
if i >= 3 {
|
||||
if count == 0 {
|
||||
key.hash = strings.TrimSpace(h.Text)
|
||||
} else if count == 1 {
|
||||
key.reward = strings.TrimSpace(h.Text)
|
||||
} else if count == 2 {
|
||||
key.date = strings.TrimSpace(h.Text)
|
||||
keyList = append(keyList, key)
|
||||
count = -1
|
||||
}
|
||||
count++
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
c.Visit("https://mobalytics.gg/borderlands-4/shift-codes-borderlands-4")
|
||||
|
||||
return keyList
|
||||
}
|
||||
|
||||
func run() {
|
||||
botToken := /* INSERT YOUR DISCORD BOT TOKEN TO SEE THIS RUN */
|
||||
bot, err := discordgo.New("Bot " + botToken)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal("bad connection to discord.")
|
||||
return
|
||||
}
|
||||
|
||||
bot.AddHandler(userMessage)
|
||||
|
||||
bot.Open()
|
||||
defer bot.Close()
|
||||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
<-c
|
||||
}
|
||||
|
||||
func userMessage(bot *discordgo.Session, message *discordgo.MessageCreate) {
|
||||
//fmt.Println(message.ChannelID)
|
||||
//fmt.Println(message.Content)
|
||||
if message.Author.ID == bot.State.User.ID {
|
||||
return
|
||||
}
|
||||
prefix := "!"
|
||||
if message.Content == prefix+"codes" {
|
||||
keyList := getTable()
|
||||
|
||||
for _, key := range keyList {
|
||||
tableLine := fmt.Sprintf("Reward: %s\nCode: %s\nExpires: %s\n\n", key.reward, key.hash, key.date)
|
||||
|
||||
_, _ = bot.ChannelMessageSend(message.ChannelID, tableLine)
|
||||
}
|
||||
fmt.Println("Done.")
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("Press ctrl + c to kill the server.")
|
||||
run()
|
||||
}
|
||||
Reference in New Issue
Block a user