added commands for runserver and scraping

This commit is contained in:
2025-02-26 11:26:23 -06:00
parent e511f533ba
commit fdaacace66
2 changed files with 38 additions and 4 deletions
+30 -1
View File
@@ -3,7 +3,9 @@ package main
import ( import (
"database/sql" "database/sql"
"embed" "embed"
"flag"
"fmt" "fmt"
"os"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
@@ -15,17 +17,44 @@ import (
//go:embed migrations/*.sql //go:embed migrations/*.sql
var migrations embed.FS var migrations embed.FS
var host = flag.String("host", "127.0.0.1:8000", "Set the web server host address.")
const POSITIONAL_ARGS_HELP = `
Valid commands:
runserver: Runs the web server.
scrape: Runs the web scraper.
`
func main() { func main() {
flag.Parse()
if len(flag.Args()) == 0 {
fmt.Print(POSITIONAL_ARGS_HELP)
os.Exit(1)
}
cmd := flag.Args()[0]
client := NewScraperClient()
queries, err := InitDb("db.sqlite") queries, err := InitDb("db.sqlite")
if err != nil { if err != nil {
fmt.Println("Error initializing database:", err) fmt.Println("Error initializing database:", err)
return return
} }
err = RunServer("0.0.0.0:3001", queries) switch cmd {
case "runserver":
go ScrapeEventsLoop(queries, client, true)
err = RunServer(*host, queries)
if err != nil { if err != nil {
fmt.Println("Error starting web server:", err) fmt.Println("Error starting web server:", err)
} }
case "scrape":
ScrapeEvents(queries, client, true)
default:
fmt.Print(POSITIONAL_ARGS_HELP)
os.Exit(1)
}
} }
func InitDb(name string) (*event.Queries, error) { func InitDb(name string) (*event.Queries, error) {
+6 -1
View File
@@ -9,6 +9,11 @@ import (
type Scraper func(ClientScraper) (*[]*event.Event, error) type Scraper func(ClientScraper) (*[]*event.Event, error)
func ScrapeEventsLoop(q *event.Queries, client ClientScraper, tapology bool) {
time.Sleep(time.Duration(1) * time.Hour)
ScrapeEvents(q, client, tapology)
}
func ScrapeEvents(q *event.Queries, client ClientScraper, tapology bool) { func ScrapeEvents(q *event.Queries, client ClientScraper, tapology bool) {
events := []*event.Event{} events := []*event.Event{}
scrapers := []Scraper{ scrapers := []Scraper{
@@ -65,7 +70,7 @@ func UpdateTapology(q *event.Queries, client ClientScraper, events *[]*event.Eve
} }
ff.Link = link ff.Link = link
} }
time.Sleep(time.Duration(5_000_000_000)) time.Sleep(time.Duration(5) * time.Second)
} else { } else {
ff.Link = tapology.Url ff.Link = tapology.Url
} }