Changeset 2666 in ProjectBuilder


Ignore:
Timestamp:
Feb 17, 2021, 1:44:52 AM (3 years ago)
Author:
Bruno Cornec
Message:

Version 0.6 adds support for CD-TEXT

File:
1 edited

Legend:

Unmodified
Added
Removed
  • projects/CDDBeditor/devel/CDDBeditor/bin/CDDBeditor

    r2658 r2666  
    2727use Device::Cdio::Device;
    2828use Device::Cdio::Track;
     29use perlcdio;
    2930use File::Copy;
    3031use File::Basename;
     
    362363        $ind--;
    363364    }
     365
    364366    # Point now to the right CD
    365367    $ce_cd = $cecd[$ind];
     
    412414        my $device = Device::Cdio::Device->new(-source=>$ce_config{"CD_DEVICE"});
    413415        my $track  = $device->get_last_track();
     416        my $cd = perlcdio::open_cd(undef,$perlcdio::DRIVER_DEVICE,undef);
     417        # Prepare to get info from CD-TEXT if defined
     418        my $cdtext = perlcdio::cdio_get_cdtext($cd);
    414419        $ce_cd->{tno} = $track->{track};
    415420        my $n = 0;
    416421
    417         # If they were not found
     422        # If they were not found, try to get them from CD-TEXT
     423        $ce_cd->{artist} = perlcdio::cdtext_get_const($cdtext,$perlcdio::CDTEXT_FIELD_PERFORMER,$n) if (not defined $ce_cd->{artist});
    418424        $ce_cd->{artist} = "" if (not defined $ce_cd->{artist});
     425        my $composer = perlcdio::cdtext_get_const($cdtext,$perlcdio::CDTEXT_FIELD_COMPOSER,$n);
     426        $ce_cd->{title} = perlcdio::cdtext_get_const($cdtext,$perlcdio::CDTEXT_FIELD_TITLE,$n) if (not defined $ce_cd->{title});
    419427        $ce_cd->{title} = "" if (not defined $ce_cd->{title});
     428        $ce_cd->{title} = $composer.": ".$ce_cd->{title} if ((defined $composer) && ($composer ne ""));
     429        $ce_cd->{genre} = perlcdio::cdtext_get_const($cdtext,$perlcdio::CDTEXT_FIELD_GENRE,$n)  if (not defined $ce_cd->{genre});
    420430        $ce_cd->{genre} = "" if (not defined $ce_cd->{genre});
    421431        $ce_cd->{cat} = "" if (not defined $ce_cd->{cat});
     
    428438            $track->set_track($n+1);
    429439            # Again only if not found previously
    430             $ce_cd->{track}[$n] = "" if (not defined $ce_cd->{track}[$n]);
     440            if (not defined $ce_cd->{track}[$n]) {
     441                # Try to get it from CD-TEXT
     442                my $title = perlcdio::cdtext_get_const($cdtext,$perlcdio::CDTEXT_FIELD_TITLE,$n+1);
     443                $title = $composer." / ".$title if ((defined $composer) && ($composer ne ""));
     444                $ce_cd->{track}[$n] = $title;
     445                $ce_cd->{track}[$n] = "" if (not defined $ce_cd->{track}[$n]);
     446            }
    431447            my ($m, $s, $f) = split(/:/,$track->get_msf());
    432448            $ce_cd->{frames}[$n] = $f + 75*$s + 75*60*$m;
Note: See TracChangeset for help on using the changeset viewer.