]> git.donarmstrong.com Git - infobot.git/blobdiff - scripts/factpack.pl
merge in changes from 1810:1870
[infobot.git] / scripts / factpack.pl
diff --git a/scripts/factpack.pl b/scripts/factpack.pl
new file mode 100755 (executable)
index 0000000..6a6e60c
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/perl -w
+
+$| = 1;
+
+use strict;
+use File::Basename;
+use vars qw($bot_base_dir $bot_src_dir $bot_misc_dir $bot_state_dir
+  $bot_data_dir $bot_config_dir $bot_log_dir $bot_run_dir
+    $bot_pid $memusage %param
+);
+
+
+# Check for arguments
+if ( !scalar @ARGV ) {
+    print "Usage: $0 <pack1.fact> [<pack2.fact> <pack2.fact> ...]\n";
+    print "Example: $0 areacodes.fact usazips.fact\n";
+    exit 1;
+}
+
+
+# set any $bot_*_dir var's
+$bot_base_dir   = '.';
+$bot_config_dir = 'files/';
+$bot_data_dir   = 'files/';
+$bot_state_dir  = 'files/';
+$bot_run_dir    = '.';
+$bot_src_dir    = "$bot_base_dir/src";
+$bot_log_dir    = "$bot_base_dir/log";
+$bot_misc_dir   = "$bot_base_dir/files";
+$bot_pid        = $$;
+
+require "$bot_src_dir/logger.pl";
+require "$bot_src_dir/core.pl";
+require "$bot_src_dir/modules.pl";
+
+# Initialize enough to get DB access
+&setupConfig();
+&loadCoreModules();
+&loadDBModules();
+&loadFactoidsModules();
+&setup();
+
+if ( !scalar @ARGV ) {
+    print "Usage: $0 <pack1.fact> [<pack2.fact> <pack2.fact> ...]\n";
+    print "Example: $0 areacodes.fact usazips.fact\n";
+    exit 0;
+}
+
+foreach (@ARGV) {
+    next unless ( -f $_ );
+    my $file = $_;
+
+    open( IN, $file ) or die "error: cannot open $file\n";
+    print "Opened $file for input...\n";
+
+    print "inserting... ";
+    while (<IN>) {
+        chomp;
+        next if /^#/;
+        next unless (/=>/);
+
+        # Split into "key => value" pairs
+        my ($key, $value) = split(/=>/,$_,2);
+
+        # Strip extra begin/end whitespace
+        $key =~ s/^\s*(.*?)\s*$/$1/;
+        $value =~ s/^\s*(.*?)\s*$/$1/;
+        
+        # convert tabs
+        $key =~ s/\t/ /g;
+        $value =~ s/\t/ /g;
+
+        # The key needs to be lower case to match query case
+        $key = lc $key;
+
+        ### TODO: check if it already exists. if so, don't add.
+        ### TODO: combine 2 setFactInfo's into single
+        &setFactInfo( $key, "factoid_value", $value );
+        &setFactInfo( $key, "created_by", basename($file) );
+        print ":: $key ";
+    }
+
+    close IN;
+}
+print "...Done!\n";
+
+# vim:ts=4:sw=4:expandtab:tw=80