parent
cf342f41bb
commit
d9d2c37cd0
3 changed files with 192 additions and 0 deletions
@ -0,0 +1,11 @@ |
||||
module sport |
||||
|
||||
go 1.18 |
||||
|
||||
require ( |
||||
github.com/jackc/pgpassfile v1.0.0 // indirect |
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect |
||||
github.com/jackc/pgx/v5 v5.3.1 // indirect |
||||
golang.org/x/crypto v0.6.0 // indirect |
||||
golang.org/x/text v0.7.0 // indirect |
||||
) |
@ -0,0 +1,17 @@ |
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= |
||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= |
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= |
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= |
||||
github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= |
||||
github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= |
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= |
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= |
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= |
||||
golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= |
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= |
||||
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= |
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= |
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= |
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
@ -0,0 +1,164 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"context" |
||||
"fmt" |
||||
"os" |
||||
//"strconv"
|
||||
|
||||
"github.com/jackc/pgx/v5" |
||||
) |
||||
|
||||
var conn *pgx.Conn |
||||
|
||||
func main() { |
||||
var err error |
||||
urlExample := "postgres://bot:3h0SXx6Ykx1D@toolbox.cfsystems.io:5432/iptvsportlist" |
||||
//conn, err = pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
|
||||
conn, err = pgx.Connect(context.Background(), urlExample) |
||||
if err != nil { |
||||
fmt.Fprintf(os.Stderr, "Unable to connection to database: %v\n", err) |
||||
os.Exit(1) |
||||
} |
||||
|
||||
if len(os.Args) == 1 { |
||||
printHelp() |
||||
os.Exit(0) |
||||
} |
||||
|
||||
switch os.Args[1] { |
||||
|
||||
case "tug": |
||||
printTug() |
||||
|
||||
case "help": |
||||
printHelp() |
||||
|
||||
case "guide": |
||||
userTerm := "" // Default value
|
||||
|
||||
if len(os.Args) >= 3 { |
||||
userTerm = os.Args[2] |
||||
} |
||||
|
||||
err = guideTerm(userTerm) |
||||
if err != nil { |
||||
fmt.Fprintf(os.Stderr, "Unable to list events: %v\n", err) |
||||
os.Exit(1) |
||||
} |
||||
|
||||
case "whatson": |
||||
userTerm := "" // Default value
|
||||
|
||||
if len(os.Args) >= 3 { |
||||
userTerm = os.Args[2] |
||||
} |
||||
|
||||
err = whatsonTerm(userTerm) |
||||
if err != nil { |
||||
fmt.Fprintf(os.Stderr, "Unable to list events: %v\n", err) |
||||
os.Exit(1) |
||||
} |
||||
|
||||
case "upcoming": |
||||
userTerm := "" // Default value
|
||||
|
||||
if len(os.Args) >= 3 { |
||||
userTerm = os.Args[2] |
||||
} |
||||
|
||||
err = upcomingTerm(userTerm) |
||||
if err != nil { |
||||
fmt.Fprintf(os.Stderr, "Unable to list events: %v\n", err) |
||||
os.Exit(1) |
||||
} |
||||
|
||||
default: |
||||
fmt.Fprintln(os.Stderr, "Invalid command") |
||||
printHelp() |
||||
os.Exit(1) |
||||
} |
||||
} |
||||
|
||||
func printTug() { |
||||
fmt.Print(`chaturbate integration coming soon |
||||
|
||||
`) |
||||
} |
||||
|
||||
func guideTerm(userTerm string) error { |
||||
rows, err := conn.Query(context.Background(), "SELECT league, event, time_utc, string_agg(channel_name, ', ') AS channels FROM vw_gc04_epg_join_view vgejv WHERE (old_event = 'No') AND (sport = $1 OR event LIKE '%' || $1 || '%' OR league = $1) GROUP BY 1, 2, 3 ORDER BY league, time_utc ASC;", userTerm) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer rows.Close() |
||||
|
||||
for rows.Next() { |
||||
var league string |
||||
var event string |
||||
var timeUtc string |
||||
var channels string |
||||
err := rows.Scan(&league, &event, &timeUtc, &channels) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
fmt.Printf("%s | %s | %s UTC | %s |\n", league, event, timeUtc, channels) |
||||
} |
||||
|
||||
return rows.Err() |
||||
} |
||||
|
||||
func whatsonTerm(userTerm string) error { |
||||
rows, err := conn.Query(context.Background(), "SELECT league, event, time_utc, string_agg(channel_name, ', ') AS channels FROM vw_gc04_epg_join_view vgejv WHERE (old_event = 'No' AND on_air = 'Yes') AND (sport = $1 OR event LIKE '%' || $1 || '%' OR league = $1) GROUP BY 1, 2, 3 ORDER BY league, time_utc ASC;", userTerm) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer rows.Close() |
||||
|
||||
for rows.Next() { |
||||
var league string |
||||
var event string |
||||
var timeUtc string |
||||
var channels string |
||||
err := rows.Scan(&league, &event, &timeUtc, &channels) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
fmt.Printf("%s | %s | %s UTC | %s |\n", league, event, timeUtc, channels) |
||||
} |
||||
|
||||
return rows.Err() |
||||
} |
||||
|
||||
func upcomingTerm(userTerm string) error { |
||||
rows, err := conn.Query(context.Background(), "SELECT league, event, time_utc, string_agg(channel_name, ', ') AS channels FROM vw_gc04_epg_join_view vgejv WHERE (old_event = 'No' AND upcoming = 'Yes') AND (sport = $1 OR event LIKE '%' || $1 || '%' OR league = $1) GROUP BY 1, 2, 3 ORDER BY league, time_utc ASC;", userTerm) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer rows.Close() |
||||
|
||||
for rows.Next() { |
||||
var league string |
||||
var event string |
||||
var timeUtc string |
||||
var channels string |
||||
err := rows.Scan(&league, &event, &timeUtc, &channels) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
fmt.Printf("%s | %s | %s UTC | %s |\n", league, event, timeUtc, channels) |
||||
} |
||||
|
||||
return rows.Err() |
||||
} |
||||
|
||||
func printHelp() { |
||||
fmt.Print(` |
||||
|
||||
Usage: |
||||
sport whatson
|
||||
sport guide |
||||
sport upcoming |
||||
|
||||
`) |
||||
} |
Loading…
Reference in new issue