package Distribution::Packager::Fuga;

use strict;
use Data::Dumper;
use File::Basename;

use Common::Assert;

use lib '/app/tools/distribution/lib';
use base 'Distribution::PackagerNew';

sub _serviceCountries {
    qw( AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ 
        BA BB BD BE BF BG BH BI BJ BM BN BO BR BS BT BV BW 
        BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV 
        CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI 
        FJ FK FM FO FR GA GG GB GD GE GF GH GI GL GM GN GP 
        GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IN 
        IO IQ IR IS IT JM JO JP JE KE KG KH KI KM KN KP KR 
        KW KY KZ IM LA LB LC LI LK LR LS LT LU LV LY MA MC 
        MD ME MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW 
        MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA 
        PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS 
        RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR 
        ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT 
        TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF 
        WS YE YT ZA ZM ZW );
}
sub _requireAllowed { 1 };

sub _templateFile { 'fuga.tt' }
sub _xsdFile { 'fuga-ingestion.xsd' }

sub _requireMappedArtistRoles { 1 }

sub _requireMappedGenres { 1 }

sub _requireAllowed  { 1 }

sub _worldWideTerritory { 'WORLD' }

###
#   Album Art
###
sub _imageFormat {{
    geometry => '1400x1400',
    density => 300,
}}

###
#   Album Audio
###
sub _audioConverter { 'MediaServe::Audio::Converter::Wav' }

sub _processTrack {
    my $self = shift;
    my ( $album, $volume, $track ) = @_;


    $album->{'cline'} =~ /^(\d{4})\s+(.*)/;
    $album->{'cline_year'} = $1;
    $album->{'cline_text'} = $2;

    $album->{'pline'} =~ /^(\d{4})\s+(.*)/;
    $album->{'pline_year'} = $1;
    $album->{'pline_text'} = $2;

    $track->{'cline'} =~ /^(\d{4})\s+(.*)/;
    $track->{'cline_year'} = $1;
    $track->{'cline_text'} = $2;

    $track->{'pline'} =~ /^(\d{4})\s+(.*)/;
    $track->{'pline_year'} = $1;
    $track->{'pline_text'} = $2;

    return $self->SUPER::_processTrack( @_ );
}

1;
