package RPS::Import::YouTubeRED::v4;

use strict;

use base 'RPS::Import::Importer';

sub _fieldMap {
    {
        labelName   => 'Q',
        countryCode => 'B',
        mediaType   => 'R',
        artistName  => 'O',
        upc         => 'M',
        isrc        => 'L',
        albumName   => 'P',
        trackName   => 'H',
        units       => 'U',
        price       => 'AB',
    }
}

sub _headerIdentifier { ( trackName => 'Asset Title' ) }
sub currencyCode {'USD' };
sub productType { RPS::File::Sale::TYPE_TRACK }
sub formatType { RPS::File::Sale::FORMAT_STREAM }

sub mediaType {
    my $self = shift;

    my $type = $self->_getByFieldName('mediaType') || "";
    
    if ( $type =~ /^audio(-visual)?$/i) {
        return RPS::DB::Item::MediaType::kMediaTypeAudio;
    }
    elsif ( $type =~ /^visual$/i ) {
        return RPS::DB::Item::MediaType::kMediaTypeVideo;
    }
    else {
        $self->fail("No media type specified");
    }

    return RPS::DB::Item::MediaType::kMediaTypeAudio;
}

sub saleDates {
    my $self = shift;
    return ( $self->{_dateBegin}, $self->{_dateEnd} );
}

sub _preProcess {
    my $self = shift;

    my %args     = @_;
    my $fileName = $args{file}->OrigFileName();

    # Get date information from the filename
    #
    if ( $fileName =~ /(\d{4})(\d{2})(\d{2})_(\d{4})(\d{2})(\d{2})/ )    # YYYYMMDD_YYYYMMDD
    {
        $self->{_dateBegin} = sprintf( "%4d-%02d-%02d", $1, $2, $3 );
        $self->{_dateEnd}   = sprintf( "%4d-%02d-%02d", $4, $5, $6 );
    } 
    else {
        $self->fail("Couldn't get dates from filename '$fileName'");
    }
    
    $self->SUPER::_preProcess(%args);
}

1;
