#!/usr/bin/perl
# abstract: beet <-> mpd now playing script
# vim: ft=perl:fdm=marker:fmr=#<,#>:fen:et:sw=2:
use strict;
use warnings FATAL => 'all';
use vars     qw($VERSION);
use autodie  qw(:all);

use utf8;
use open qw(:std :utf8);

my $APP  = 'mpd-beets-np';
$VERSION = '0.001';

use Data::Dumper;

{
  package Data::Dumper;
  no strict 'vars';
  $Terse = $Indent = $Useqq = $Deparse = $Sortkeys = 1;
  $Quotekeys = 0;
}

use lib '../lib';
use Music::Beets::Info qw(beet_info);

use Audio::MPD;
use Term::ExtendedColor qw(fg bold italic underline);
use File::LsColor qw(can_ls_color);
use Time::Date;

my $mpd = Audio::MPD->new;

my $music_dir = "$ENV{XDG_MUSIC_DIR}/" . $mpd->current->file;

my $data = beet_info("$ENV{XDG_MUSIC_DIR}/" . $mpd->current->file);
#print Dumper $data;

$data->{bitrate} = $data->{bitrate} ? sprintf("%d", $data->{bitrate} / 1000) : 0;

if($data->{original_date}) {
  my $t = Time::Date->new($data->{original_date});
  $data->{original_date} = sprintf(". Released %s", nc($t->strftime("%d %B, %Y")));
}
else {
  $data->{original_date} = '';
}

if($data->{label}) {
  $data->{label} = sprintf(" on %s", underline($data->{label}));
}
else {
  $data->{label} = '';
}


printf "np: the %s song '%s' by %s on %s%s%s. It's track %s/%s and the bitrate is %s kbps (%s).\n",
  bold(lc($data->{genre})),
  fg(142, $data->{title}),
  fg(148, $data->{artist}),
  fg(107, $data->{album}),
  $data->{original_date},
  $data->{label},
  nc(defined $data->{track} ? $data->{track} : 0),
  nc(defined $data->{tracktotal} ? $data->{tracktotal} : 0),
  nc($data->{bitrate}),
  fg(can_ls_color(lc($data->{format})), $data->{format});

sub nc { return bold(fg(33, shift)); }
