Index: trunk/bkmk
===================================================================
--- trunk/bkmk	(revision 47)
+++ trunk/bkmk	(revision 83)
@@ -2,17 +2,22 @@
 use strict;
 
+use FindBin;
+use lib "$FindBin::RealBin/lib";
+
 use YAML;
+use Getopt::Long;
+
 use Bookmarks;
-use Getopt::Long;
 
 GetOptions(
     'file|f=s' => \my $DBNAME,
-    'tag=s' => \my @TAGS,
+    'title=s' => \my $TITLE,
 );
 
-die "Usage: $0 --file <dbname> <command>\n" unless $DBNAME;
+my $dbname = $DBNAME || $ENV{BKMK_DBNAME};
+die "Usage: $0 --file <dbname> <command>\n" unless $dbname;
 
 my $bookmarks = Bookmarks->new({
-    dbname => $DBNAME,
+    dbname => $dbname,
 });
 
@@ -23,4 +28,5 @@
         $bookmarks->create_tables;
     },
+    
     get => sub {
         my $identifier = shift;
@@ -30,12 +36,16 @@
         print $bookmark ? Dump($bookmark) : "Not Found\n";
     },
+    
     add => sub {
-        my ($uri, $title, @tags) = @_;
+        my ($uri, @tags) = @_;
+        my $title = defined $TITLE ? $TITLE : fetch_title($uri);
         my $bookmark = $bookmarks->add({ uri => $uri, title => $title, tags => \@tags });
         print Dump($bookmark);
     },
+
     list => sub {
+        my @tags = @_;
         my @resources = $bookmarks->get_bookmarks({
-            tag => \@TAGS
+            tag => \@tags
         });
         # TODO: list by tags, date, etc.
@@ -43,4 +53,6 @@
         print Dump(\@resources);
     },
+
+    # bulk loading
     load => sub {
         my ($src_file) = @_;
@@ -54,6 +66,9 @@
 $action_for{$command}->(@ARGV);
 
-=begin
-
-use YAML;
-
+sub fetch_title {
+    my $uri = shift;
+    require WWW::Mechanize;
+    my $mech = WWW::Mechanize->new;
+    $mech->get($uri);
+    return $mech->title || $uri;
+}
