iloveck101 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/iloveck101 +48 -22
  3. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c188548911242ccb147a1306b1265c803fc9493
4
- data.tar.gz: 2505c8b437d08a50044ee19df88e068883d6f18d
3
+ metadata.gz: e4d50e2206fa60de311ee10cd31c3c0746990c74
4
+ data.tar.gz: 190b1fff19e56b4f28cc1387e4bedf3deb2eb399
5
5
  SHA512:
6
- metadata.gz: 3d31e869a2227b82a6d1ab8a2bca9c3d8c7008de4d1accdc4bddb98e607cacb77b40bf88d2cf30ce04d4f0d59a6ac0cc0efdab58398d566eb2caebc0ce478928
7
- data.tar.gz: 06f33e9f9666d0b26233906895e180beb4b273c46b824aa51c7c0a9e2cf82e836ad6b1c96b48ea7a9713b1404a50f95f7bb05c43ffb3266c19d069223275ea4c
6
+ metadata.gz: 1d5924634255db648efd2b76fb4bb2ec3cd44aa2f97e7698e5f1b12db4badcf0a3a3d7867abf26db5a8e3e720c819d3d2becd2a134be09a8275c892f183d6ea3
7
+ data.tar.gz: be8d894be8bca6d92606a8b49a7e2e8fcd9869d37afd75c6547dbcb24f11f2a268de8b190dce950bf014c10620d4c6a3884901587615bfb47f8df1372fa92644
data/bin/iloveck101 CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'open-uri'
4
3
  require 'set'
5
4
  require 'fileutils'
5
+ require 'mechanize'
6
6
 
7
7
  def iloveck101(url)
8
8
  page_uri = URI.parse(url)
@@ -19,18 +19,42 @@ def iloveck101(url)
19
19
  return
20
20
  end
21
21
 
22
- page_content = page_uri.read
22
+ agent = Mechanize.new
23
23
 
24
- title = page_content.match(%r{<title>(.+)</title>})[1]
25
- .split(' - ')[0]
26
- .gsub('/', '')
27
- .strip
24
+ page = agent.get(page_uri)
25
+
26
+ if not page.search('#messagelogin').empty?
27
+ puts 'Need to log-in to access this page!'
28
+ print 'Username: '
29
+ username = STDIN.gets.chomp
30
+ print 'Password: '
31
+ password = STDIN.gets.chomp
32
+ password_hash = Digest::MD5.hexdigest(password)
33
+
34
+ login_result_page = agent.post(
35
+ 'http://ck101.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1',
36
+ {
37
+ :quickforawrd => 'yes',
38
+ :handlekey => 'ls',
39
+ :username => username,
40
+ :password => password_hash
41
+ })
42
+ if login_result_page.body.match(/succeedhandle_ls/).nil?
43
+ STDERR.print "Failed to log-in."
44
+ return
45
+ end
46
+
47
+ page = agent.get(page_uri)
48
+ end
49
+
50
+ title = page.title.split(' - ')[0].gsub('/', '').strip
51
+
52
+ puts "Parsing #{title}"
28
53
 
29
54
  image_url_set = Set.new(
30
- page_content
31
- .scan(%r{file="([^"]+)"})
32
- .map { |e| e[0] }
33
- .find_all { |e| e.index('.thumb.').nil?}
55
+ page.search('article img[file]')
56
+ .map { |image_tag| image_tag['file'] }
57
+ .find_all { |image_url| image_url.index('.thumb.').nil?}
34
58
  )
35
59
 
36
60
  target_folder_path = File.expand_path("~/Pictures/iloveck101/#{thread_id} - #{title}")
@@ -38,20 +62,22 @@ def iloveck101(url)
38
62
  FileUtils.mkdir_p(target_folder_path)
39
63
  end
40
64
 
65
+ puts "Found #{image_url_set.length} images."
66
+
41
67
  image_url_set.each { |image_url|
42
- image_uri = page_uri.merge(image_url)
43
- filename = File.expand_path(File.basename(image_uri.path), target_folder_path)
44
- File.open(filename, 'wb') { |f|
45
- f.write(open(image_uri).read)
46
- }
68
+ puts "Downloading #{image_url}"
69
+
70
+ image = agent.get(image_url)
71
+
72
+ filename = File.expand_path(File.basename(image.uri.path), target_folder_path)
73
+ image.save(filename)
47
74
  }
48
75
 
76
+ puts 'Done!'
49
77
  end
50
78
 
51
- if __FILE__ == $0
52
- if ARGV.length >= 1
53
- iloveck101(ARGV[0])
54
- else
55
- STDERR.print "Usage: #{File.basename($0)} URL\n"
56
- end
57
- end
79
+ if ARGV.length >= 1
80
+ iloveck101(ARGV[0])
81
+ else
82
+ STDERR.print "Usage: #{File.basename($0)} URL\n"
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iloveck101
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WanCW
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2013-12-03 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mechanize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.7.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.7.3
13
27
  description: Download images from ck101 thread, inspired by tzangms.
14
28
  email: wancw.wang@gmail.com
15
29
  executables: