From 5c6ac7ae0d5b3943b3da142c0395afcc7a7d1593 Mon Sep 17 00:00:00 2001 From: Aleteoryx Date: Fri, 7 Feb 2025 23:52:48 -0500 Subject: [PATCH] picker --- README | 2 ++ pick.tcl | 34 ++++++++++++++++++++++++++++++++++ stats.tcl | 1 - table.tcl | 1 - 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 pick.tcl diff --git a/README b/README index 201870050a75d22403e4208e5b3b8c03d1149a25..03521ab36df4bafdf294f87b6c93abd028453c2c 100644 --- a/README +++ b/README @@ -18,3 +18,5 @@ scripts: unmarks each GAMEURL to be ignored by stats.tcl * table.tcl DB-PATH generates an html file with game info +* pick.tcl DB-PATH + picks a random, unplayed, unignored game from the database diff --git a/pick.tcl b/pick.tcl new file mode 100755 index 0000000000000000000000000000000000000000..2044261eacb7757812efa72990d4ec7ba508e1fd --- /dev/null +++ b/pick.tcl @@ -0,0 +1,34 @@ +#!/bin/env tclsh + +package require sqlite3 +package require tcl::chan::random +package require tcl::randomseed + +proc fatal {reason {code -1}} { + puts stderr "$argv0: fatal: $reason" + exit $code +} + +proc usage {} { + global argv0 + puts stderr "usage: $argv0 DB-PATH" + exit -1 +} +if {[llength $argv] != 1} usage +set dbpath [lindex $argv 0] + +if {[catch {sqlite3 db $dbpath -create false}]} { + fatal "can't open \"$dbpath\"" +} + +set unplayed [db eval {SELECT name,href FROM titles WHERE played ISNULL AND ignore = 0}] + +set chan [::tcl::chan::random [::tcl::randomseed]] +binary scan [read $chan 4] i1 n +set idx [expr { (abs($n) % ([llength $unplayed] / 2)) * 2 }] + +set name [lindex $unplayed $idx] +set href [lindex $unplayed $idx+1] + +puts "Random pick: $name" +puts "- $href" diff --git a/stats.tcl b/stats.tcl index c6fe4c21fe76720d050f7d9c3e7761156d69a439..d92c4dd556bab6ae2e4e4e10a59946ccb2ca4b9e 100755 --- a/stats.tcl +++ b/stats.tcl @@ -1,6 +1,5 @@ #!/bin/env tclsh -package require json package require sqlite3 proc fatal {reason {code -1}} { diff --git a/table.tcl b/table.tcl index 2be9b4e240783ce6f4a48874e5e44e009ff31a55..c38e2289d32d5590dbef90a9daddc2425d2bb281 100755 --- a/table.tcl +++ b/table.tcl @@ -1,6 +1,5 @@ #!/bin/env tclsh -package require json package require sqlite3 proc fatal {reason {code -1}} {