Amarok Script: Playlog
I just finished Playlog, my first Amarok plugin, written in Perl. I grew tired of last.fm having the sole properties of my listening-log, and such, this script everything that you listen to, along with the time that you listen to it, into two nice and handy MySQL tables. In the future, I plan to write some kind of analysis script for the data.
This was also my first piece of software to send in to kde-apps.org: Playlog.
Here is the Perl source code, in case you are interested. I release it under the GPL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #!/usr/bin/perl use strict; use DBI; my $dbh = DBI->connect( 'DBI:mysql:database=playlog;host=localhost', 'playlog', '', { 'RaiseError' => 1 } ); $dbh->do( 'CREATE TABLE IF NOT EXISTS songs ( song_id INT(11) NOT NULL AUTO_INCREMENT, song_artist VARCHAR(255), song_album VARCHAR(255), song_title VARCHAR(255), PRIMARY KEY (song_id) )' ); $dbh->do( 'CREATE TABLE IF NOT EXISTS playlog ( play_time INT(11), song_id INT(11) )' ); sub cleanup { $dbh->disconnect; } $SIG{'TERM'} = 'cleanup'; while ( <> ) { if ( m/^trackChange$/ ) { chomp( my $artist = `dcop amarok player artist` ); chomp( my $album = `dcop amarok player album` ); chomp( my $song = `dcop amarok player title` ); my $id; my @s = &qsong( $artist, $album, $song ); if ( ! $s[0] ) { $dbh->do( sprintf( 'INSERT INTO songs ( song_artist, song_album, song_title ) VALUES ( %s, %s, %s )', $dbh->quote( $artist ), $dbh->quote( $album ), $dbh->quote( $song ) ) ) or die $dbh->errstr; @s = &qsong( $artist, $album, $song ); } $dbh->do( sprintf( 'INSERT INTO playlog ( play_time, song_id ) VALUES ( %d, %d )', time, $s[0] ) ); } } sub qsong { my ( $artist, $album, $song ) = @_; my $sth = $dbh->prepare( sprintf( 'SELECT song_id FROM songs WHERE song_artist = %s AND song_album = %s AND song_title = %s', $dbh->quote( $artist ), $dbh->quote( $album ), $dbh->quote( $song ) ) ) or die $dbh->errstr; $sth->execute(); return $sth->fetchrow_array(); } |

works great!
Thanks for that
Comment by agony — September 19, 2007 @ 10:25 am
[...] Som komplement till last.fm har jag börjat samla information själv om vad jag lyssnar på, med hjälp av mitt Amarok-script Playlog, som sparar data om vad du lyssnar på i en MySQL-databas, redo för analys. Ett mycket simpelt Perl-script listar vad jag har lyssnar på på musik.gurka.se än så länge, men planen är att det ska bli bättre. [...]
Pingback by Last.fm äter upp din statistik - En gurka bland morötter — September 29, 2007 @ 7:13 pm
[...] there were for Amarok. With their snazzy script manager, I found a neat script called “Playlog” that uploaded song information and play times to a MySQL database. Wow! Unfortunately, it [...]
Pingback by Y4K Studios » Ubuntu and more! — July 23, 2008 @ 11:30 am