sandro-tagooru 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@
3
3
  coverage
4
4
  rdoc
5
5
  pkg
6
+ doc
data/README.rdoc CHANGED
@@ -3,13 +3,17 @@
3
3
  Ruby wrapper for the tagoo.ru search engine
4
4
 
5
5
  == Example
6
- require 'tagooru'
6
+ <tt>require 'tagooru'</tt>
7
7
 
8
- >> playlist = Tagooru.search("radiohead 15 step")
9
- >> playlist.first.name
10
- => "Radiohead - 15 Step"
11
- >> playlist.first.location
12
- => "http://someurl.com/music/radiohead/15_step.mp3"
8
+ <tt>>> playlist = Tagooru.search("radiohead 15 step")</tt>
9
+
10
+ <tt>>> playlist.first.name</tt>
11
+
12
+ <tt>=> "Radiohead - 15 Step"</tt>
13
+
14
+ <tt>>> playlist.first.location</tt>
15
+
16
+ <tt>=> "someurl.com/music/radiohead/15_step.mp3"</tt>
13
17
 
14
18
  == Copyright
15
19
 
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,19 @@
1
+ module HTTParty
2
+ class Request
3
+ class << self
4
+ attr_accessor :debug
5
+ end
6
+
7
+ def perform_with_debug
8
+ if self.class.debug
9
+ puts "HTTParty making #{http_method::METHOD} request to:"
10
+ puts uri
11
+ end
12
+ perform_without_debug
13
+ end
14
+
15
+ alias_method :perform_without_debug, :perform
16
+ alias_method :perform, :perform_with_debug
17
+ end
18
+ end
19
+
@@ -26,19 +26,5 @@ class Tagooru
26
26
  list.map {|line| line.chomp}
27
27
  end
28
28
  end
29
-
30
- class Track < Struct.new(:name, :location)
31
- def accessible?
32
- url = URI.parse(location)
33
- http = Net::HTTP.new url.host
34
- http.open_timeout = 2
35
- http.read_timeout = 2
36
- begin
37
- (200..399).include? http.request_head(url.path).code.to_i
38
- rescue SocketError
39
- false
40
- end
41
- end
42
- end
43
29
  end
44
30
  end
@@ -0,0 +1,15 @@
1
+ class Tagooru
2
+ class Track < Struct.new(:name, :location)
3
+ def accessible?
4
+ url = URI.parse(location)
5
+ http = Net::HTTP.new url.host
6
+ http.open_timeout = 2
7
+ http.read_timeout = 2
8
+ begin
9
+ (200..399).include? http.request_head(url.path).code.to_i
10
+ rescue Timeout::Error, SocketError
11
+ false
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/tagooru.rb CHANGED
@@ -2,17 +2,36 @@ require 'rubygems'
2
2
  require 'httparty'
3
3
 
4
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ require 'httparty_ext.rb'
5
6
 
6
7
  class Tagooru
7
8
  autoload :Playlist, 'tagooru/playlist'
9
+ autoload :Track, 'tagooru/track'
8
10
 
9
11
  include HTTParty
10
12
  base_uri 'http://tagoo.ru'
11
- default_params :for => :audio
13
+ default_params :for => :audio, :key => '74d8940f'
14
+ headers 'Referer' => 'http://tagoo.ru/en/webmaster.php?mode=json_api'
15
+ format :plain
16
+
17
+ # override method from HTTParty to prevent cookies from overriding other
18
+ # header data (httparty 0.4.4)
19
+ def self.perform_request(http_method, path, options) #:nodoc:
20
+ Request.new(http_method, path, default_options.dup.merge(options)).perform
21
+ end
12
22
 
13
23
  def self.search(query, page = 1)
14
- playlist = get '/en/search_playlist.php', :query => {:search => query, :page => page}
15
- Playlist.new(playlist).parse
24
+ response = get '/api_search.php', :query => {:search => query, :page => page, :seed => generate_seed}
25
+ data = Crack::JSON.parse(response.sub(/^.+= /, ''))
26
+ data['data'].map do |d|
27
+ Track.new d['title'], d['file_url']
28
+ end
29
+ end
30
+
31
+ # seed argument taken from search api
32
+ # http://tagoo.ru/script/api/search.js
33
+ def self.generate_seed
34
+ (rand * 100_000).to_i
16
35
  end
17
36
 
18
37
  def self.first(query, page = 1)
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'spec'
2
-
3
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
4
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
3
  require 'tagooru'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
6
 
7
7
  def fixture(filename)
8
8
  filename = File.basename(filename)
@@ -45,9 +45,9 @@ describe Tagooru::Playlist do
45
45
  end
46
46
  end
47
47
 
48
- describe Tagooru::Playlist::Track do
48
+ describe Tagooru::Track do
49
49
  before do
50
- @track = Tagooru::Playlist::Track.new "Fix You", "http://google.com/?q=fixyou.mp3"
50
+ @track = Tagooru::Track.new "Fix You", "http://google.com/?q=fixyou.mp3"
51
51
  end
52
52
 
53
53
  it "has a name and location" do
data/tagooru.gemspec ADDED
@@ -0,0 +1,55 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tagooru}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Sandro Turriate"]
9
+ s.date = %q{2009-08-10}
10
+ s.email = %q{sandro.turriate@gmail.com}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".document",
17
+ ".gitignore",
18
+ "LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "lib/httparty_ext.rb",
23
+ "lib/tagooru.rb",
24
+ "lib/tagooru/playlist.rb",
25
+ "lib/tagooru/track.rb",
26
+ "script/console",
27
+ "spec/fixtures/fix.m3u",
28
+ "spec/spec.opts",
29
+ "spec/spec_helper.rb",
30
+ "spec/tagooru/playlist_spec.rb",
31
+ "spec/tagooru_spec.rb",
32
+ "tagooru.gemspec"
33
+ ]
34
+ s.has_rdoc = true
35
+ s.homepage = %q{http://github.com/sandro/tagooru}
36
+ s.rdoc_options = ["--charset=UTF-8"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.1}
39
+ s.summary = %q{Ruby wrapper for the tagoo search engine}
40
+ s.test_files = [
41
+ "spec/spec_helper.rb",
42
+ "spec/tagooru/playlist_spec.rb",
43
+ "spec/tagooru_spec.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 2
49
+
50
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
+ else
52
+ end
53
+ else
54
+ end
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sandro-tagooru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Turriate
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-07 00:00:00 -07:00
12
+ date: 2009-08-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -28,16 +28,21 @@ files:
28
28
  - LICENSE
29
29
  - README.rdoc
30
30
  - Rakefile
31
+ - VERSION
32
+ - lib/httparty_ext.rb
31
33
  - lib/tagooru.rb
32
34
  - lib/tagooru/playlist.rb
35
+ - lib/tagooru/track.rb
33
36
  - script/console
34
37
  - spec/fixtures/fix.m3u
35
38
  - spec/spec.opts
36
39
  - spec/spec_helper.rb
37
40
  - spec/tagooru/playlist_spec.rb
38
41
  - spec/tagooru_spec.rb
42
+ - tagooru.gemspec
39
43
  has_rdoc: true
40
44
  homepage: http://github.com/sandro/tagooru
45
+ licenses:
41
46
  post_install_message:
42
47
  rdoc_options:
43
48
  - --charset=UTF-8
@@ -58,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
63
  requirements: []
59
64
 
60
65
  rubyforge_project:
61
- rubygems_version: 1.2.0
66
+ rubygems_version: 1.3.5
62
67
  signing_key:
63
68
  specification_version: 2
64
69
  summary: Ruby wrapper for the tagoo search engine