tunecore_direct 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Manifest.txt CHANGED
@@ -5,6 +5,7 @@ README.txt
5
5
  Rakefile
6
6
  config/hoe.rb
7
7
  config/requirements.rb
8
+ examples/quick_tutorial.rb
8
9
  lib/tunecore_direct.rb
9
10
  lib/tunecore_direct/album.rb
10
11
  lib/tunecore_direct/base.rb
@@ -0,0 +1,60 @@
1
+ # This script will demonstrate how to create a user at TuneCore and add an Album and Song.
2
+ email = 'alex.kane@gmail.com'
3
+ tunecore_server = "http://localhost:3000"
4
+ api_key = "testkey"
5
+
6
+ # Set up our environment
7
+ #require 'rubygems'
8
+ require 'tunecore_direct'
9
+ include TunecoreDirect
10
+ TunecoreDirect::Base.tunecore_server = tunecore_server
11
+ TunecoreDirect::Base.api_key = api_key
12
+
13
+ person = Person.get("alex.kane@gmail.com")
14
+
15
+
16
+ # Create a person
17
+ person = TunecoreDirect::Person.new
18
+ person.name = "Joe Schmoe"
19
+ person.email = email
20
+ person.password = "pa$$word"
21
+ person.phone_number = "212-555-1212"
22
+ person.country = "United States"
23
+ person.postal_code = "11201"
24
+ # person.create should return true. If it returns false check person.errors to see why the person
25
+ # couldn't be created. Assuming that it returned true, the person_id attribute will now be set.
26
+ person.create
27
+
28
+ # Create an Album for our person
29
+ album = TunecoreDirect::Album.new
30
+ album.name = "My Album"
31
+ album.person_id = person.person_id # this is the person_id of the person we created above
32
+ album.orig_release_date = "2008-02-23"
33
+ album.sale_date = "2008-02-23"
34
+ album.primary_genre = "Rock"
35
+ album.secondary_genre = "Alternative"
36
+ album.artist_name = "Alex Kane"
37
+ album.label_name = "Shochu"
38
+ album.c_copyright = "1999"
39
+ album.p_copyright = "1999"
40
+ album.recording_location = "Brooklyn"
41
+ album.parental_advisory = false
42
+ album.stores = "iTunesUS,iTunesAU,iTunesCA,iTunesEU,iTunesJP,iTunesEU,RhapsodyRH,MusicNet,Napster,eMusic,Amazon,Lala"
43
+ # Our album object is built, now let's create it on the TuneCore server. Like person, the Album object will
44
+ # return true if the album was created, and false if there was a problem. If false check album.errors to see
45
+ # what the problem was.
46
+ album.create
47
+
48
+
49
+ # Create a song to go on the Album we just created
50
+ song = TunecoreDirect::Song.new
51
+ song.album_id = album.album_id
52
+ song.name = "My song"
53
+ song.track_num = 1
54
+ song.save
55
+
56
+ # Now that we've created the Song in TuneCore's server the next step is to upload the audio file
57
+ # to TuneCore. We do this by using TuneCore's flash uploade tool.
58
+ # The url to upload tool for this song is:
59
+
60
+
@@ -27,7 +27,7 @@ module TunecoreDirect
27
27
  attr_accessor :artist_name, :label_name, :c_copyright, :p_copyright, :recording_location, :parental_advisory
28
28
  attr_accessor :artwork_s3_id, :takedown_at
29
29
  attr_accessor :errors
30
- attr_accessor :stores, :state
30
+ attr_accessor :stores, :state, :xml
31
31
 
32
32
  def initialize(options = {})
33
33
  options.each do |k,v|
@@ -38,8 +38,8 @@ module TunecoreDirect
38
38
  # Creates an Album object from a Rexml:Element
39
39
  def self.from_xml_element( album_element)
40
40
  @xml = album_element
41
- #puts @xml
42
- album = self.new
41
+ puts @xml
42
+ album = self.new(:xml => @xml)
43
43
  album.album_id = album_element.elements["id"].text
44
44
  album.person_id = album_element.elements["person-id"].text
45
45
  album.name = album_element.elements["name"].text
@@ -101,7 +101,13 @@ module TunecoreDirect
101
101
 
102
102
  # Returns an array that contains every Song in this Album
103
103
  def songs
104
- raise "Album#songs is not implemented in this version of the SDK"
104
+ # if @xml == nil
105
+ # self.
106
+ songs = []
107
+ @xml.elements.each("songs/song") do |song_element|
108
+ songs << Song.from_xml_element( song_element)
109
+ end
110
+ return songs
105
111
  end
106
112
 
107
113
  # Returns the number of songs that have been created for this album
@@ -129,7 +135,12 @@ module TunecoreDirect
129
135
 
130
136
  def is_taken_down?
131
137
  !@takedown.nil?
132
- end
138
+ end
133
139
 
140
+ def upload_url
141
+ "http://#{TunecoreDirect::Base.tunecore_server}/partner/songs?album_id=#{self.album_id}"
142
+ end
143
+
144
+
134
145
  end
135
146
  end
@@ -71,6 +71,12 @@ module TunecoreDirect
71
71
  req.get_people.object
72
72
  end
73
73
 
74
+ # Get's a person object from the TuneCore server. Id can be either a person_id or an email address
75
+ def self.get(id)
76
+ req = Request.new
77
+ req.get_person(id).object
78
+ end
79
+
74
80
  # Returns an array of albums owned by this person
75
81
  def albums
76
82
  req = Request.new
@@ -48,14 +48,19 @@ module TunecoreDirect
48
48
  # Creates an Album object from a Rexml:Element
49
49
  def self.from_xml_element( song_element)
50
50
  song = self.new
51
- song.song_id = song_element.elements["id"].text
52
- song.album_id = song_element.elements["album-id"].text
53
- song.name = song_element.elements["name"].text
54
- song.artist_name = song_element.elements["artist-name"].text unless song_element.elements["artist-name"].nil?
55
- song.track_num = song_element.elements["parental-advisory"].text
51
+ song.song_id = song_element.elements["id"].text
52
+ song.album_id = song_element.elements["album-id"].text
53
+ song.name = song_element.elements["name"].text
54
+ song.artist_name = song_element.elements["artist-name"].text unless song_element.elements["artist-name"].nil?
55
+ song.parental_advisory = song_element.elements["parental-advisory"].text
56
+ song.track_num = song_element.elements["track-num"].text
56
57
  return song
57
58
  end
58
-
59
+
60
+ # Returns the URL for the upload tool
61
+ def upload_url
62
+ "#{tunecore_server}/partner/track_upload?api_key=#{api_key}&song_id=#{self.song_id}"
63
+ end
59
64
 
60
65
  end
61
66
 
@@ -2,7 +2,7 @@ module TunecoreDirect #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 3
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/test_helper.rb'
3
3
  class TestTunecoreDirect < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- TunecoreDirect::Base.tunecore_server = "http://test.tunecore.com"
6
+ TunecoreDirect::Base.tunecore_server = "http://localhost:3000"
7
7
  TunecoreDirect::Base.api_key = "testkey"
8
8
 
9
9
  #random email address so we dont get collisions after the first test
@@ -46,7 +46,7 @@ class TestTunecoreDirect < Test::Unit::TestCase
46
46
  album.label_name = "Shochu"
47
47
  album.c_copyright = "1999"
48
48
  album.p_copyright = "1999"
49
- album.recording_location = "Bucktown"
49
+ album.recording_location = "Brooklyn"
50
50
  album.parental_advisory = false
51
51
  album.stores = "iTunesUS,iTunesAU,iTunesCA,iTunesEU,iTunesJP,iTunesEU,RhapsodyRH,MusicNet,Napster,eMusic,Amazon,Lala"
52
52
  created = album.create
@@ -56,6 +56,7 @@ class TestTunecoreDirect < Test::Unit::TestCase
56
56
  song = TunecoreDirect::Song.new
57
57
  song.album_id = album.album_id
58
58
  song.name = "My song"
59
+ song.track_num = 1
59
60
  assert song.save == true
60
61
 
61
62
  # get all albums
@@ -66,6 +67,13 @@ class TestTunecoreDirect < Test::Unit::TestCase
66
67
  album_id = albums.first.album_id
67
68
  assert TunecoreDirect::Album.takedown( album_id ) != nil
68
69
 
70
+ # get person by email
71
+ person = TunecoreDirect::Person.get(@email)
72
+ assert person.email = @email
73
+
74
+ # get all the songs for this album
75
+ songs = person.albums.first.songs
76
+
69
77
  end
70
78
 
71
79
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunecore_direct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Kane
@@ -30,7 +30,7 @@ cert_chain:
30
30
  f3TSOQ==
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2008-04-11 00:00:00 -04:00
33
+ date: 2008-04-15 00:00:00 -04:00
34
34
  default_executable:
35
35
  dependencies: []
36
36
 
@@ -54,6 +54,7 @@ files:
54
54
  - Rakefile
55
55
  - config/hoe.rb
56
56
  - config/requirements.rb
57
+ - examples/quick_tutorial.rb
57
58
  - lib/tunecore_direct.rb
58
59
  - lib/tunecore_direct/album.rb
59
60
  - lib/tunecore_direct/base.rb
metadata.gz.sig CHANGED
Binary file