Module: EasyTag::Attributes

Defined in:
lib/easytag/attributes/mp3.rb,
lib/easytag/attributes/mp3.rb,
lib/easytag/attributes/mp4.rb,
lib/easytag/attributes/mp4.rb,
lib/easytag/attributes/base.rb

Defined Under Namespace

Modules: ItemType, Type Classes: BaseAttribute, MP3Attribute, MP4Attribute

Constant Summary collapse

MP3_ATTRIB_ARGS =
[
# title
{
  :name         => :title,
  :id3v2_frames => ['TIT2'],
  :id3v1_tag    => :title,
  :handler      => :read_first_id3,
  :type         => Type::STRING,
},

# title_sort_order
#   TSOT - (v2.4 only)
#   XSOT - Musicbrainz Picard custom
{
  :name         => :title_sort_order,
  :id3v2_frames => ['TSOT', 'XSOT'],
  :handler      => :read_first_id3,
},

# subtitle
{
  :name         => :subtitle,
  :id3v2_frames => ['TIT3'],
  :handler      => :read_first_id3,
},

# artist
{
  :name         => :artist,
  :id3v2_frames => ['TPE1'],
  :id3v1_tag    => :artist,
  :handler      => :read_first_id3,
},

# artist_sort_order
#   TSOP - (v2.4 only)
#   XSOP - Musicbrainz Picard custom
{
  :name         => :artist_sort_order,
  :id3v2_frames => ['TSOP', 'XSOP'],
  :handler      => :read_first_id3,
},

# album_artist
{
  :name         => :album_artist,
  :id3v2_frames => ['TPE2'],
  :handler      => :read_first_id3,
},

# album_artist_sort_order
{
  :name         => :album_artist_sort_order,
  :handler      => lambda { |iface| iface.[:albumartistsort] }
},

# album
{
  :name         => :album,
  :id3v2_frames => ['TALB'],
  :id3v1_tag    => :album,
  :handler      => :read_first_id3,
},

# compilation?
{
  :name         => :compilation?,
  :id3v2_frames => ['TCMP'],
  :default      => false,
  :handler      => :read_first_id3,
  :options      => {:is_flag => true},
},

# album_sort_order
#   TSOA - (v2.4 only)
#   XSOA - Musicbrainz Picard custom
{
  :name         => :album_sort_order,
  :id3v2_frames => ['TSOA', 'XSOA'],
  :handler      => :read_first_id3,
},

# genre
{
  :name         => :genre,
  :id3v2_frames => ['TCON'],
  :id3v1_tag    => :genre,
  :handler      => :read_first_id3,
},

# disc_subtitle
{
  :name         => :disc_subtitle,
  :id3v2_frames => ['TSST'],
  :handler      => :read_first_id3,
},

# media
{
  :name         => :media,
  :id3v2_frames => ['TMED'],
  :handler      => :read_first_id3,
},

# label
{
  :name         => :label,
  :id3v2_frames => ['TPUB'],
  :handler      => :read_first_id3,
},

# encoded_by
{
  :name         => :encoded_by,
  :id3v2_frames => ['TENC'],
  :handler      => :read_first_id3,
},

# encoder_settings
{
  :name         => :encoder_settings,
  :id3v2_frames => ['TSSE'],
  :handler      => :read_first_id3,
},

# group
{
  :name         => :group,
  :id3v2_frames => ['TIT1'],
  :handler      => :read_first_id3,
},

# composer
{
  :name         => :composer,
  :id3v2_frames => ['TCOM'],
  :handler      => :read_first_id3,
},

# lyrics
{
  :name         => :lyrics,
  :id3v2_frames => ['USLT'],
  :handler      => :read_first_id3,
},

# lyricist
{
  :name         => :lyricist,
  :id3v2_frames => ['TEXT'],
  :handler      => :read_first_id3,
},

# copyright
{
  :name         => :copyright,
  :id3v2_frames => ['TCOP'],
  :handler      => :read_first_id3,
},

# bpm
{
  :name         => :bpm,
  :id3v2_frames => ['TBPM'],
  :handler      => :read_first_id3,
  :type         => Type::INT,
},

# track_num
{
  :name         => :track_num,
  :id3v2_frames => ['TRCK'],
  :id3v1_tag    => :track,
  :default      => [0, 0],
  :handler      => :read_int_pair,
  :type         => Type::INT_LIST, # don't know if this will ever be useful
},

# disc_num
{
  :name         => :disc_num,
  :id3v2_frames => ['TPOS'],
  :default      => [0, 0],
  :handler      => :read_int_pair,
  :type         => Type::INT_LIST, # don't know if this will ever be useful
},

# original_date
#   TDOR - orig release date (v2.4 only)
#   TORY - orig release year (v2.3)
{
  :name         => :original_date,
  :id3v2_frames => ['TDOR', 'TORY'],
  :handler      => :read_first_id3,
  :type         => Type::DATETIME,
},

# comments
{
  :name         => :comments,
  :id3v2_frames => ['COMM'],
  :id3v1_tag    => :comment,
  :handler      => :read_all_id3,
  :default      => [],
  :options      => { :compact => true }
},

# comment
{
  :name         => :comment,
  :handler      => lambda { |iface| iface.comments.first }
},

# album_art
{
  :name         => :album_art,
  :id3v2_frames => ['APIC'],
  :handler      => :read_all_id3,
  :default      => [],
},

# date
{
  :name         => :date,
  :handler      => :read_date,
  :type         => Type::DATETIME,
},

# year
{
  :name         => :year,
  :handler      => lambda { |iface| iface.date.nil? ? 0 : iface.date.year }
},

# user_info
{
  :name         => :user_info,
  :id3v2_frames => ['TXXX'],
  :handler      => :read_field_list_as_key_value,
  :default      => {},
  :options     => { :normalize => true, 
    :to_sym => true,
    :field_list => true },
},
]
MP4_ATTRIB_ARGS =
[
# title
{
  :name       => :title,
  :item_ids   => ['©nam'],
  :handler    => :read_first_item,
},

# title_sort_order
{
  :name       => :title_sort_order,
  :item_ids   => ['sonm'],
  :handler    => :read_first_item,
},

# artist
{
  :name       => :artist,
  :item_ids   => ['©ART'],
  :handler    => :read_first_item,
},

# artist_sort_order
{
  :name       => :artist_sort_order,
  :item_ids   => ['soar'],
  :handler    => :read_first_item,
},

# album_artist
{
  :name       => :album_artist,
  :item_ids   => ['aART'],
  :handler    => :read_first_item,
},

# album_artist_sort_order
{
  :name       => :album_artist_sort_order,
  :item_ids   => ['soaa'],
  :handler    => :read_first_item,
},

# album
{
  :name       => :album,
  :item_ids   => ['©alb'],
  :handler    => :read_first_item,
},

# album_sort_order
{
  :name       => :album_sort_order,
  :item_ids   => ['soal'],
  :handler    => :read_first_item,
},

# genre
{
  :name       => :genre,
  :item_ids   => ['©gen'],
  :handler    => :read_first_item,
},

# comments
{
  :name       => :comments,
  :item_ids   => ['©cmt'],
  :handler    => :read_first_item,
  :item_type  => ItemType::STRING_LIST,
  :default    => [],
},

# comment
{
  :name       => :comment,
  :handler    => lambda { |iface| iface.comments.first }
},

# lyrics
{
  :name       => :lyrics,
  :item_ids   => ['©lyr'],
  :handler    => :read_first_item,
},

# date
{
  :name       => :date,
  :item_ids   => ['©day'],
  :handler    => :read_first_item,
  :type       => Type::DATETIME,
},

# year
{
  :name         => :year,
  :handler      => lambda { |iface| iface.date.nil? ? 0 : iface.date.year }
},

# apple_id
{
  :name       => :apple_id,
  :item_ids   => ['apid'],
  :handler    => :read_first_item,
},

# encoded_by
{
  :name       => :encoded_by,
  :item_ids   => ['©enc'],
  :handler    => :read_first_item,
},

# encoder_settings
{
  :name       => :encoder_settings,
  :item_ids   => ['©too'],
  :handler    => :read_first_item,
},

# group
{
  :name       => :group,
  :item_ids   => ['©grp'],
  :handler    => :read_first_item,
},

# compilation?
{
  :name       => :compilation?,
  :item_ids   => ['cpil'],
  :handler    => :read_first_item,
  :item_type  => ItemType::BOOL,
  :default    => false,
},

# bpm
{
  :name       => :bpm,
  :item_ids   => ['tmpo'],
  :handler    => :read_first_item,
  :item_type  => ItemType::INT,
  :default    => 0,
},

# copyright
{
  :name       => :copyright,
  :item_ids   => ['cprt'],
  :handler    => :read_first_item,
},

# track_num
{
  :name       => :track_num,
  :item_ids   => ['trkn'],
  :handler    => :read_first_item,
  :item_type  => ItemType::INT_PAIR,
  :default    => [0, 0],
},

# disc_num
{
  :name       => :disc_num,
  :item_ids   => ['disk'],
  :handler    => :read_first_item,
  :item_type  => ItemType::INT_PAIR,
  :default    => [0, 0],
},

# album_art
{
  :name       => :album_art,
  :item_ids   => ['covr'],
  :handler    => :read_first_item,
  :item_type  => ItemType::COVER_ART_LIST,
  :default    => [],
},

# user_info
{
  :name       => :user_info,
  :handler    => :read_user_info,
  :default    => {},
  :options    => {:normalize => true, :to_sym => true},
},

# subtitle
{
  :name       => :subtitle,
  :handler    => lambda { |iface| iface.[:subtitle] }
},

# disc_subtitle
{
  :name       => :disc_subtitle,
  :handler    => lambda { |iface| iface.[:discsubtitle] }
},

# media
{
  :name       => :media,
  :handler    => lambda { |iface| iface.[:media] }
},

# label
{
  :name       => :label,
  :handler    => lambda { |iface| iface.[:label] }
},

# composer
{
  :name       => :composer,
  :handler    => lambda { |iface| iface.[:composer] }
},

# lyricist
{
  :name       => :lyricist,
  :handler    => lambda { |iface| iface.[:lyricist] }
},

]