musix_match 0.1.15 → 0.1.16

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/README.rdoc CHANGED
@@ -22,30 +22,6 @@
22
22
 
23
23
  MusixMatch::API::Base.api_key = 'YOUR_API_KEY'
24
24
 
25
- === Lyrics search
26
-
27
- response = MusixMatch.search_lyrics(:q_artist => 'Pantera')
28
- if response.status_code == 200
29
- response.each do |lyrics|
30
- puts "#{lyrics.lyrics_id}: #{lyrics.track_name} (#{lyrics.artist_name})"
31
- end
32
- end
33
-
34
- Available options for the search_lyrics methods are:
35
-
36
- * q: string to be searched in every data field
37
- * q_track: string to be searched among tracks titles
38
- * q_artist: string to be searched among artists names
39
- * page: requested page of results
40
- * page_size: desired number of items per result page
41
-
42
- === Getting lyrics
43
-
44
- response = MusixMatch.get_lyrics(track_id)
45
- if response.status_code == 200 && lyrics = response.lyrics
46
- puts lyrics.lyrics_body
47
- end
48
-
49
25
  === Track search
50
26
 
51
27
  response = MusixMatch.search_track(:q_artist => 'Pantera')
@@ -54,7 +30,7 @@ Available options for the search_lyrics methods are:
54
30
  puts "#{track.track_id}: #{track.track_name} (#{track.artist_name})"
55
31
  end
56
32
  end
57
-
33
+
58
34
  Available options for the search_track methods are:
59
35
 
60
36
  * q: a string that will be searched in every data field
@@ -64,6 +40,13 @@ Available options for the search_track methods are:
64
40
  * page_size: desired number of items per result page
65
41
  * f_has_lyrics: exclude tracks without an available lyrics
66
42
 
43
+ === Getting lyrics
44
+
45
+ response = MusixMatch.get_lyrics(track_id)
46
+ if response.status_code == 200 && lyrics = response.lyrics
47
+ puts lyrics.lyrics_body
48
+ end
49
+
67
50
  === Getting track
68
51
 
69
52
  response = MusixMatch.get_track(track_id)
@@ -1,20 +1,11 @@
1
1
  module MusixMatch
2
2
  module API
3
- class Search < Base
4
- def search_lyrics(options={})
5
- response = get('lyrics.search', options)
6
- LyricsSearchResult.new(response)
7
- end
8
-
3
+ class Search < Base
9
4
  def search_track(options={})
10
5
  response = get('track.search', options)
11
6
  TrackSearchResult.new(response)
12
7
  end
13
8
 
14
- def self.search_lyrics(options={})
15
- Search.new.search_lyrics(options)
16
- end
17
-
18
9
  def self.search_track(options={})
19
10
  Search.new.search_track(options)
20
11
  end
@@ -1,5 +1,5 @@
1
1
  module MusixMatch
2
- module Models
2
+ module Models
3
3
  module Model
4
4
  def self.included(base)
5
5
  base.send(:extend, ClassMethods)
@@ -10,11 +10,7 @@ module MusixMatch
10
10
  def model_with_attributes(*attributes)
11
11
  attr_accessor(*attributes)
12
12
  ModelBuilder.build_constructor(self, *attributes)
13
- end
14
-
15
- def search(options={})
16
- API::Search.send("search_#{self.name.split('::').last.downcase}", options)
17
- end
13
+ end
18
14
 
19
15
  def get(item_id)
20
16
  API::Finder.send("find_#{self.name.split('::').last.downcase}", item_id)
@@ -22,6 +18,18 @@ module MusixMatch
22
18
  end
23
19
  end
24
20
 
21
+ module Searcher
22
+ def self.included(base)
23
+ base.send(:extend, ClassMethods)
24
+ end
25
+
26
+ module ClassMethods
27
+ def search(options={})
28
+ API::Search.send("search_#{self.name.split('::').last.downcase}", options)
29
+ end
30
+ end
31
+ end
32
+
25
33
  module ModelBuilder
26
34
  def self.build_constructor(base, *attributes)
27
35
  initialize_method = Proc.new do |*params|
@@ -2,6 +2,7 @@ module MusixMatch
2
2
  module Models
3
3
  class Track
4
4
  include Model
5
+ include Searcher
5
6
 
6
7
  model_with_attributes :track_id, :track_mbid, :track_name, :track_mbid, :track_length, :lyrics_id, :instrumental, :subtitle_id,
7
8
  :artist_id, :artist_mbid, :artist_name, :artist_mbid,
@@ -2,24 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe MusixMatch::API::Search do
4
4
 
5
- lyrics_search_response = {'message' => {'body' => {'lyrics_list' => []}, 'header' => { 'status_code' => 200, 'execute_time' => 1, 'available' => 10 }}}
6
- track_search_response = {'message' => {'body' => {'track_list' => [] }, 'header' => { 'status_code' => 200, 'execute_time' => 1, 'available' => 10 }}}
7
-
8
- it "should initialize a new Search object and call search_lyrics" do
9
- search = mock(MusixMatch::API::Search)
10
- MusixMatch::API::Search.should_receive(:new).and_return(search)
11
- options = { :q_artist => 'artist name' }
12
- search.should_receive(:search_lyrics).with(options)
13
- MusixMatch::API::Search.search_lyrics(options)
14
- end
15
-
16
- it "should call get with lyrics.search and initialize a LyricsSearchResult object" do
17
- search = MusixMatch::API::Search.new
18
- options = { :q_artist => 'artist name' }
19
- search.should_receive(:get).with('lyrics.search', options).and_return(lyrics_search_response)
20
- MusixMatch::LyricsSearchResult.should_receive(:new).with(lyrics_search_response)
21
- search.search_lyrics(options)
22
- end
5
+ track_search_response = {'message' => {'body' => {'track_list' => [] }, 'header' => { 'status_code' => 200, 'execute_time' => 1, 'available' => 10 }}}
23
6
 
24
7
  it "should initialize a new Search object and call search_track" do
25
8
  search = mock(MusixMatch::API::Search)
@@ -1,23 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe MusixMatch::Models::Lyrics do
4
- it 'should call search_lyrics on Search class' do
5
- params = { :q_artist => 'artist name' }
6
- MusixMatch::API::Search.should_receive(:search_lyrics).with(params)
7
- MusixMatch::Models::Lyrics.search(params)
8
- end
9
-
3
+ describe MusixMatch::Models::Lyrics do
10
4
  it 'should call find_lyrics on Finder class' do
11
5
  lyrics_id = 1
12
6
  MusixMatch::API::Finder.should_receive(:find_lyrics).with(lyrics_id)
13
7
  MusixMatch::Models::Lyrics.get(lyrics_id)
14
8
  end
15
9
 
16
- context 'when created' do
17
- it 'should have the search class method' do
18
- MusixMatch::Models::Lyrics.should respond_to(:search)
19
- end
20
-
10
+ context 'when created' do
21
11
  it 'should have the get class method' do
22
12
  MusixMatch::Models::Lyrics.should respond_to(:get)
23
13
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: musix_match
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.15
5
+ version: 0.1.16
6
6
  platform: ruby
7
7
  authors:
8
8
  - Andrea Franz