xunlei 0.0.2 → 0.0.3

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.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