xunlei 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -49,6 +49,10 @@ Download files according to pattern in file names
49
49
 
50
50
  xunlei download --only matrix
51
51
  xunlei download --except bourne
52
+
53
+ Google for ed2k and magnet links
54
+
55
+ xunlei google Repulsion --with 720p
52
56
 
53
57
  Pass --help to see more tasks and options
54
58
 
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec) do |spec|
5
+ spec.pattern = 'spec/**/*_spec.rb'
6
+ end
7
+
8
+ task :default => :spec
data/bin/xunlei CHANGED
@@ -204,5 +204,21 @@ command :config do |c|
204
204
  end
205
205
  end
206
206
 
207
+ command :google do |c|
208
+ c.syntax = "google KEYWORD"
209
+ c.description = "google for ed2k links using given KEYWORD"
210
+ c.option "--with OPTIONS", String, "include additional info when Googling"
211
+ c.action do |args, options|
212
+ options.default :with => nil
213
+ puts "Searching the web for #{args.join(" ")}..."
214
+ puts
215
+ search = Xunlei::Search.new
216
+ links = search.google(args, options.with)
217
+ puts
218
+ puts "#{links.count} links found."
219
+ end
220
+ end
221
+
207
222
  alias_command :down, :download
208
- alias_command :dump, :dump_tasks
223
+ alias_command :dump, :dump_tasks
224
+ alias_command :search, :google
@@ -0,0 +1,36 @@
1
+ require "watir-webdriver"
2
+ require "Nokogiri"
3
+
4
+ module Xunlei
5
+ class Search
6
+ def initialize(driver = :chrome)
7
+ @browser = Watir::Browser.new driver
8
+ end
9
+
10
+ def google(keywords, options=nil)
11
+ @browser.goto "http://www.google.com/search?q=#{[keywords, options, "ed2k"].flatten.join("+")}"
12
+
13
+ @browser.div(:id => "ires").wait_until_present
14
+
15
+ page_links = []
16
+ @browser.lis(:class => "g").each { |li| page_links << li.as.first.href }
17
+
18
+ ed2k_links = []
19
+ page_links.each do |page_link|
20
+ @browser.goto page_link
21
+ doc = Nokogiri::HTML(@browser.html)
22
+ doc.css("a").each do |link|
23
+ href = link['href']
24
+ if href =~ /ed2k:|magnet:/ && !ed2k_links.include?(href)
25
+ puts href
26
+ ed2k_links << href
27
+ end
28
+ end
29
+ end
30
+
31
+ @browser.close
32
+
33
+ ed2k_links
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Xunlei
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/xunlei.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  require "xunlei/version"
2
2
  require "xunlei/engine"
3
-
3
+ require "xunlei/search"
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  require "simplecov"
2
2
  SimpleCov.start
3
3
 
4
- require "fakeweb"
5
-
6
- FakeWeb.allow_net_connect = false
4
+ Dir["./lib/xunlei/*.rb"].each { |file| require file }
@@ -1,3 +1,5 @@
1
1
  require "spec_helper"
2
2
 
3
- # Sorry there's no spec here. Just hack around.
3
+ describe Xunlei::Engine do
4
+
5
+ end
@@ -0,0 +1,16 @@
1
+ require "spec_helper"
2
+
3
+ describe Xunlei::Search do
4
+ before(:each) do
5
+ $stdout.stub(:puts)
6
+ end
7
+
8
+ describe "Google" do
9
+ it "should find some ed2k links" do
10
+ search = Xunlei::Search.new
11
+ links = search.google("Repulsion", "720p")
12
+
13
+ links.should_not be_empty
14
+ end
15
+ end
16
+ end
data/xunlei.gemspec CHANGED
@@ -19,7 +19,10 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_development_dependency "rake"
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "simplecov"
22
24
 
23
25
  s.add_runtime_dependency "watir-webdriver"
24
26
  s.add_runtime_dependency "commander"
27
+ s.add_runtime_dependency "nokogiri"
25
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xunlei
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-20 00:00:00.000000000Z
12
+ date: 2011-10-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70251257863900 !ruby/object:Gem::Requirement
16
+ requirement: &70191331322300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,32 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70251257863900
24
+ version_requirements: *70191331322300
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70191331321880 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70191331321880
36
+ - !ruby/object:Gem::Dependency
37
+ name: simplecov
38
+ requirement: &70191331321320 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70191331321320
25
47
  - !ruby/object:Gem::Dependency
26
48
  name: watir-webdriver
27
- requirement: &70251257862540 !ruby/object:Gem::Requirement
49
+ requirement: &70191331320640 !ruby/object:Gem::Requirement
28
50
  none: false
29
51
  requirements:
30
52
  - - ! '>='
@@ -32,10 +54,21 @@ dependencies:
32
54
  version: '0'
33
55
  type: :runtime
34
56
  prerelease: false
35
- version_requirements: *70251257862540
57
+ version_requirements: *70191331320640
36
58
  - !ruby/object:Gem::Dependency
37
59
  name: commander
38
- requirement: &70251257859720 !ruby/object:Gem::Requirement
60
+ requirement: &70191331319880 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70191331319880
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: &70191331319100 !ruby/object:Gem::Requirement
39
72
  none: false
40
73
  requirements:
41
74
  - - ! '>='
@@ -43,7 +76,7 @@ dependencies:
43
76
  version: '0'
44
77
  type: :runtime
45
78
  prerelease: false
46
- version_requirements: *70251257859720
79
+ version_requirements: *70191331319100
47
80
  description: A browser script to access lixian.vip.xunlei.com tasks automatically
48
81
  email:
49
82
  - afu@forresty.com
@@ -62,9 +95,11 @@ files:
62
95
  - bin/xunlei
63
96
  - lib/xunlei.rb
64
97
  - lib/xunlei/engine.rb
98
+ - lib/xunlei/search.rb
65
99
  - lib/xunlei/version.rb
66
100
  - spec/spec_helper.rb
67
101
  - spec/xunlei/engine_spec.rb
102
+ - spec/xunlei/search_spec.rb
68
103
  - xunlei.gemspec
69
104
  homepage: ''
70
105
  licenses: []
@@ -93,3 +128,4 @@ summary: A browser script to access lixian.vip.xunlei.com tasks automatically
93
128
  test_files:
94
129
  - spec/spec_helper.rb
95
130
  - spec/xunlei/engine_spec.rb
131
+ - spec/xunlei/search_spec.rb