Class: Sevendigital::Track

Inherits:
SevendigitalObject show all
Defined in:
lib/sevendigital/model/track.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from SevendigitalObject

#copy_basic_properties_from, #initialize

Constructor Details

This class inherits a constructor from Sevendigital::SevendigitalObject

Instance Attribute Details

#artistArtist

Artist of the track

Returns:



23
24
25
# File 'lib/sevendigital/model/track.rb', line 23

def artist
  @artist
end

#idInteger

track id

Returns:

  • (Integer)


7
8
9
# File 'lib/sevendigital/model/track.rb', line 7

def id
  @id
end

#releaseRelease

release the track appears on

Returns:



19
20
21
# File 'lib/sevendigital/model/track.rb', line 19

def release
  @release
end

#titleString

title of the track

Returns:

  • (String)


11
12
13
# File 'lib/sevendigital/model/track.rb', line 11

def title
  @title
end

#versionString

version of the track (e.g. remix, radio edit)

Returns:

  • (String)


15
16
17
# File 'lib/sevendigital/model/track.rb', line 15

def version
  @version
end

Instance Method Details

#alternate_version_of?(another_track) ⇒ Boolean

Compares 2 songs whether they’re just different versions of the same song by the same artist e.g. track “Some Song (Radio Edit)” is alternate version of “Some Song (Remastered)” returns true also if the 2 songs are the same

Returns:

  • (Boolean)


76
77
78
79
# File 'lib/sevendigital/model/track.rb', line 76

def alternate_version_of?(another_track)
  return another_track && short_title.downcase == another_track.short_title.downcase \
        && another_track.artist && artist.name.downcase == another_track.artist.name.downcase
end

#durationInteger

The length of the track in seconds

Returns:

  • (Integer)


31
# File 'lib/sevendigital/model/track.rb', line 31

sevendigital_basic_property :duration

#explicit_contentBoolean

parental advisory - explicit content tag

Returns:

  • (Boolean)


35
# File 'lib/sevendigital/model/track.rb', line 35

sevendigital_basic_property :explicit_content

#get_details(options = {}) ⇒ Track

Retrieves and populates all track properties

useful with lazy loading turned off

Parameters:

  • options (Hash) (defaults to: {})

    optional hash of additional API parameters, e.g. image_size => 75, etc

Returns:



58
59
60
61
62
# File 'lib/sevendigital/model/track.rb', line 58

def get_details(options={})
  track_with_details = @api_client.track.get_details_from_release(@id, @release.id, options)
  copy_basic_properties_from(track_with_details)
  self
end

#isrcString

ISRC code

Returns:

  • (String)


39
# File 'lib/sevendigital/model/track.rb', line 39

sevendigital_basic_property :isrc

#preview_url(options = {}) ⇒ String

URL of mp3 preview for this track

Returns:

  • (String)


83
84
85
# File 'lib/sevendigital/model/track.rb', line 83

def preview_url(options={})
  @api_client.track.build_preview_url(@id, options)
end

#pricePrice

Pricing information of the track

Returns:



47
# File 'lib/sevendigital/model/track.rb', line 47

sevendigital_basic_property :price

#short_titleString

Title of the track stripped out of any version information if it’s included the title of the track rather than version property e.g. if title is “Some Song (Radio Edit)” it will return “Some Song”

Returns:

  • (String)


67
68
69
70
# File 'lib/sevendigital/model/track.rb', line 67

def short_title
  #   return title.gsub(/\s+[\(\[](album|lp|single|short|edit|radio)\s+version[\)\]]/ , "")
  return title.gsub(/\s+\(.*\s?(version|mix|remix|edit|edition|live|feat|explicit|original|remaster)\s?.*\)/i, "")
end

#track_numberInteger

Number of the track as it appears on the release

Returns:

  • (Integer)


27
# File 'lib/sevendigital/model/track.rb', line 27

sevendigital_basic_property :track_number

#typeString

Track type, e.g. :audio, :video, :pdf, etc

Returns:

  • (String)


51
# File 'lib/sevendigital/model/track.rb', line 51

sevendigital_basic_property :type

#urlString

URL link to 7digital page where this track can be purchased

Returns:

  • (String)


43
# File 'lib/sevendigital/model/track.rb', line 43

sevendigital_basic_property :url