Puke 0.0.2

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.
Files changed (3) hide show
  1. data/library/puke.rb +22 -0
  2. data/library/puke/piece.rb +31 -0
  3. metadata +47 -0
data/library/puke.rb ADDED
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ require 'cgi'
4
+ require 'json'
5
+ require 'open-uri'
6
+
7
+ require 'puke/piece'
8
+
9
+ module Puke
10
+ Version = "0.0.2"
11
+
12
+ def self.search query, key
13
+ pieces = []
14
+
15
+ open "http://tinysong.com/s/#{URI.escape query}?format=json&key=#{key}" do |response|
16
+ songs = JSON.parse response.read
17
+ pieces = songs.map &Piece.method(:new)
18
+ end
19
+
20
+ pieces
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ module Puke
4
+ class Piece
5
+ def self.attribute name, value;
6
+ define_method name do
7
+ @attributes["#{value}"]
8
+ end
9
+ end
10
+
11
+ attribute :id, :SongID
12
+ attribute :title, :SongName
13
+ attribute :artist, :ArtistName
14
+ attribute :album, :AlbumName
15
+
16
+ def initialize attributes
17
+ @attributes = attributes
18
+ end
19
+
20
+ def token; @attributes["Url"][/\w+$/] end
21
+
22
+ def url
23
+ name = self.title.gsub(/[^\s\w]/, '').gsub ' ', '+'
24
+ %{http://tinysong.com/#{token}}
25
+ end
26
+
27
+ def to_s
28
+ %{#<#{self.class.name}:#{id} @title=#{title.inspect} @artist=#{artist.inspect} @album=#{album.inspect}>}
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Puke
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mikkel Kroman
9
+ autorequire:
10
+ bindir: executables
11
+ cert_chain: []
12
+ date: 2011-10-15 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description:
15
+ email: mk@maero.dk
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - library/puke.rb
21
+ - library/puke/piece.rb
22
+ homepage:
23
+ licenses: []
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - library
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.9.1
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 1.8.10
43
+ signing_key:
44
+ specification_version: 3
45
+ summary: Puke is a minimal grooveshark library for ruby, using the Tinysong.com api
46
+ instead of grooveshark.com
47
+ test_files: []