in reply to SPOPS compared with SQL::Catalog + DBIx
in thread Save MP3 Tag's to Database with SPOPS

Terrence asked me to post an Alzabo version of this code for the curious. So, assuming that you already have your schema object defined (which can be done in about 5 lines of code with reverse engineering or via the web app that comes with Alzabo)...
use strict; use MP3::Info; use File::Find; use Alzabo::Runtime; $|++; @ARGV = ('.') unless @ARGV; my $schema = Alzabo::Runtime::Schema->load_from_file( name => 'mp3' ); find sub { return unless m/\.mp3$/; my $tag = get_mp3tag($_) or return; my %mp3 = map {lc($_)=>$tag->{$_}} keys %$tag; print STDERR join(':',values %$mp3),"\n"; $schema->table('Track')->insert( values => \%mp3 ); }, @ARGV;
Of course, that's a pretty weird table that has album, artist, etc. You'd probably want to do that relationally with multiple tables instead.

Terrence, you neglected to mention that 'sql_lookup' bit in your example actually requires some setup in advance.

Replies are listed 'Best First'.
more on MP3 data to database
by princepawn (Parson) on Jan 09, 2002 at 22:47 UTC
    Terrence, you neglected to mention that 'sql_lookup' bit in your example actually requires some setup in advance.
    Right you are, sql_lookup is a function in SQL::Catalog and SQL::Catalog archives all SQL for a project to a database for later use. Thus, the first step in designing a SQL-oriented database app is to create all your SQL along with labels and store it. then, you can retrieve it using SQL::Catalog.

    and then use any DBI shortcut interface to execute the SQL for the desired results.