added commands for runserver and scraping
This commit is contained in:
+30
-1
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user