xunlei 0.0.7 → 0.0.8

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
@@ -43,6 +43,10 @@ Download files according to pattern in file names
43
43
  Add ed2k or magnet link as new task
44
44
 
45
45
  xunlei add ed2k_or_magment_link
46
+
47
+ Add all ed2k or magnet links on given web page as new tasks
48
+
49
+ xunlei add_page http://page_with_a_chunk_load_of_links/
46
50
 
47
51
  Google for ed2k and magnet links
48
52
 
data/bin/xunlei CHANGED
@@ -44,10 +44,10 @@ def execute_dump_action(args, options)
44
44
  engine.stop
45
45
  end
46
46
 
47
- def do_dump_cookies(c)
47
+ def do_dump_cookies(c, &block)
48
48
  c.option "--driver DRIVER", String, "use a different webdriver (e.g. firefox). default is chrome"
49
49
  c.action do |args, options|
50
- execute_dump_action(args, options)
50
+ execute_dump_action(args, options, &block)
51
51
  end
52
52
  end
53
53
 
@@ -336,6 +336,28 @@ command :lucky do |c|
336
336
  end
337
337
  end
338
338
 
339
+ command :add_page do |c|
340
+ c.syntax = "add_page URL"
341
+ c.description = "add all ed2k and magnet links as new tasks on given web page :)"
342
+ c.option "--only PATTERN", String, "only add links which names include PATTERN"
343
+ c.option "--except PATTERN", String, "do not add links which names include PATTERN"
344
+ c.action do |args, options|
345
+ options.default :only => nil, :except => nil
346
+ puts "Adding page '#{args.first}'..."
347
+ puts
348
+ search = Xunlei::Search.new
349
+ links = search.add_page(args.first, options)
350
+ puts
351
+ puts "#{links.count} links found."
352
+
353
+ execute_dump_action(args, options) do |engine, args|
354
+ links.each do |link|
355
+ engine.add_task(link)
356
+ end
357
+ end
358
+ end
359
+ end
360
+
339
361
  alias_command :down, :download
340
362
  alias_command :dump, :dump_tasks
341
363
  alias_command :search, :google
data/lib/xunlei/search.rb CHANGED
@@ -1,11 +1,10 @@
1
- require "watir-webdriver"
2
1
  require "Nokogiri"
3
2
  require "uri"
3
+ require "open-uri"
4
4
 
5
5
  module Xunlei
6
6
  class Search
7
7
  def initialize(driver = :chrome)
8
- @browser = Watir::Browser.new driver
9
8
  end
10
9
 
11
10
  def google(keywords, options)
@@ -16,40 +15,47 @@ module Xunlei
16
15
  do_google(keywords, options, "http://www.google.com/search?q=site:simplecd.org+", 1)
17
16
  end
18
17
 
18
+ def add_page(page_url, options)
19
+ doc = Nokogiri::HTML(open(page_url) { |page| page.read })
20
+ links = []
21
+
22
+ doc.css("a").select do |a|
23
+ !a['href'].nil? && a['href'] =~ /ed2k:|magnet:/
24
+ end.map do |a|
25
+ a['href']
26
+ end.uniq.each do |link|
27
+ if !options.only.nil?
28
+ links << link if link =~ /#{options.only}/i
29
+ elsif !options.except.nil?
30
+ links << link unless link =~ /#{options.except}/i
31
+ else
32
+ links << link
33
+ end
34
+ end
35
+ links.each { |link| puts link }
36
+ links
37
+ end
38
+
19
39
  private
20
40
 
21
41
  def do_google(keywords, options, prefix, limit)
22
42
  q = [keywords, options.with, "ed2k"].flatten.join("+")
23
43
  q += "+-" + options.without unless options.without.nil?
24
44
 
25
- @browser.goto "#{prefix}#{q}"
26
-
27
- @browser.div(:id => "ires").wait_until_present
28
-
29
- page_links = []
30
- @browser.lis(:class => "g").each { |li| page_links << li.as.first.href }
45
+ search_result = Nokogiri::HTML(open("#{prefix}#{q}") { |page| page.read })
46
+ page_links = search_result.css(".g h3 a").map { |a| a['href'] }[0, limit]
31
47
 
32
48
  ed2k_links = []
33
49
 
34
50
  page_links.each do |page_link|
35
- @browser.goto page_link
36
- doc = Nokogiri::HTML(@browser.html)
37
- doc.css("a").each do |link|
38
- next if link['href'].nil?
39
- # href = URI.escape(link['href'])
40
- href = link['href']
41
- if href =~ /ed2k:|magnet:/ && !ed2k_links.include?(href)
42
- puts href
43
- ed2k_links << href
44
- end
45
- end
46
-
47
- limit -= 1
48
- break unless limit > 1
51
+ doc = Nokogiri::HTML(open(page_link) { |page| page.read })
52
+ ed2k_links += doc.css("a").select do |a|
53
+ !a['href'].nil? && a['href'] =~ /ed2k:|magnet:/
54
+ end.map do |a|
55
+ a['href'].tap { |a| puts a }
56
+ end.uniq
49
57
  end
50
58
 
51
- @browser.close
52
-
53
59
  ed2k_links
54
60
  end
55
61
  end
@@ -1,3 +1,3 @@
1
1
  module Xunlei
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  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.7
4
+ version: 0.0.8
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-12-18 00:00:00.000000000Z
12
+ date: 2011-12-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70299977384620 !ruby/object:Gem::Requirement
16
+ requirement: &70151191992140 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70299977384620
24
+ version_requirements: *70151191992140
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70299977384200 !ruby/object:Gem::Requirement
27
+ requirement: &70151191991700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70299977384200
35
+ version_requirements: *70151191991700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: simplecov
38
- requirement: &70299977383780 !ruby/object:Gem::Requirement
38
+ requirement: &70151191991240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70299977383780
46
+ version_requirements: *70151191991240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: watir-webdriver
49
- requirement: &70299977383280 !ruby/object:Gem::Requirement
49
+ requirement: &70151191990800 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70299977383280
57
+ version_requirements: *70151191990800
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: commander
60
- requirement: &70299977382860 !ruby/object:Gem::Requirement
60
+ requirement: &70151191990360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70299977382860
68
+ version_requirements: *70151191990360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: nokogiri
71
- requirement: &70299977382440 !ruby/object:Gem::Requirement
71
+ requirement: &70151191989900 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70299977382440
79
+ version_requirements: *70151191989900
80
80
  description: A browser script to access lixian.vip.xunlei.com tasks automatically
81
81
  email:
82
82
  - afu@forresty.com
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: 1170829789028878004
118
+ hash: -893131726371942937
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements:
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  segments:
126
126
  - 0
127
- hash: 1170829789028878004
127
+ hash: -893131726371942937
128
128
  requirements: []
129
129
  rubyforge_project: xunlei
130
130
  rubygems_version: 1.8.11