#!/bin/env tclsh
package require json
package require sqlite3
proc fatal {reason {code -1}} {
puts stderr "$argv0: fatal: $reason"
exit $code
}
proc usage {} {
global argv0
puts stderr "usage: $argv0 DB-PATH DATAFILE ?DATAFILE ...?"
exit -1
}
if {[llength $argv] < 2} usage
set datafiles [lassign $argv dbpath]
if {[catch {sqlite3 db $dbpath -create false}]} {
fatal "can't open \"$dbpath\""
}
foreach datafile $datafiles {
set fd [open $datafile]
set data [::json::json2dict [read $fd]]
close $fd
foreach title $data {
set name [dict get $title title]
set href [dict get $title href]
puts $name
db eval {
INSERT OR IGNORE INTO titles(name, href)
VALUES($name, $href);
}
}
}