lib/ayadn/nowplaying.rb in ayadn-2.0.3 vs lib/ayadn/nowplaying.rb in ayadn-2.0.4
- old
+ new
@@ -177,52 +177,33 @@
get_itunes_store(itunes_url, artist, track)
end
def get_itunes_store url, artist, track
results = JSON.load(CNX.download(URI.escape(url)))['results']
+
# puts results.inspect
- unless results.empty? || results.nil?
- # results.each {|obj| puts obj['trackName']}
- # puts "-"
- # puts track
- one = results.select do |obj|
- next if obj['trackName'].nil?
- obj['trackName'].downcase == track.downcase
- end
- # puts one.inspect
- if one.empty?
- by_artist = results.select do |obj|
- next if obj['artistName'].nil?
- obj['artistName'].downcase == artist.downcase
- end
- # puts by_artist
- by_exact_track = by_artist.select do |obj|
- next if obj['trackName'].nil?
- obj['trackName'].downcase == track.downcase
- end
- # puts by_exact_track
- if by_exact_track.empty?
- splitted = track.split(" ").first.downcase
- results = by_artist.select do |obj|
- next if obj['trackName'].nil?
- obj['trackName'].split(" ").first.downcase == splitted
- end
- else
- results = by_exact_track
- end
+ unless results.nil?
- else
- results = one
- end
-
if results.empty?
return {
'code' => 404,
'request' => url
}
end
- candidate = results[0]
+ candidates = []
+ candidates_track = results.map { |e| e if e['trackName'].downcase == track.downcase }.compact
+ candidates_track.each do |e|
+ next if e['artistName'].nil?
+ candidates << e if e['artistName'].downcase == artist.downcase
+ end
+ # require "pp";pp candidates; exit
+
+ candidate = if candidates.empty?
+ results[0]
+ else
+ candidates[0]
+ end
return {
'code' => 200,
'artist' => candidate['artistName'],
'track' => candidate['trackName'],