tumblr-sync 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c7ca6b3b3e4b62a67f38becef728495e1669df1
4
- data.tar.gz: a559f845a2bebabeec7efaadb019300ddf642f1d
3
+ metadata.gz: a2edebfa1352fb0b59d5bd7d2303511cfd92fc44
4
+ data.tar.gz: 9d035dba102a1d72c8d638ae8a04dd120ccba82f
5
5
  SHA512:
6
- metadata.gz: 5e3eb49cc10633af64c5b1425ff2a04c5c3d0872efbbfb241d31f290221802d1678dd7d76c123eff344f47f6cdcd4d8cf2e5e0b60c8c6169f5deaa479138328c
7
- data.tar.gz: 13b4a9f16319db3406525bc31b584008fee41c8b2ac96a36415c3c62e76c5a82a8d16106b8f30fa41466db8210b8108aedf738a57b52fca24d1a5a6dc3e7f6f7
6
+ metadata.gz: 016d7bc3325a367056f86140198dfa4adadb8bfddb07593826dd78779446d99ea3650ecffa447d367e9366b487e1057e262303c6ab88332a8cab2f4f1d724138
7
+ data.tar.gz: a78b6d9a55a200f6d9dfb0d3252da6494bbbfd7947fcc877385ba60cec04b3121fe90d2e95f3bb84e6339ec57f8d331b1a7a3b7ef3ad7bb9dc7b945148820693
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
4
+ - 2.3.0
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # TumblrSync
2
2
 
3
+ [![Build Status](https://travis-ci.org/madwork/tumblr-sync.png)](https://travis-ci.org/madwork/tumblr-sync)
4
+ [![Gem Version](https://badge.fury.io/rb/tumblr-sync.png)](http://badge.fury.io/rb/tumblr-sync)
5
+
3
6
  MultiThread Tumblr Synchronization
4
7
 
5
8
  You like download and fill your hard drive with tons of funny pictures, this tool is for you!
@@ -29,15 +29,18 @@ module TumblrSync
29
29
  images = queue.pop
30
30
  images.each_slice(10).each do |group|
31
31
  threads = []
32
- group.each do |url|
33
- threads << Thread.new {
34
- begin
35
- photo_fetcher.fetch url
36
- rescue Mechanize::ResponseCodeError
37
- ensure
38
- progress_bar.increment
39
- end
40
- }
32
+ group.each do |urls|
33
+ progress_bar.total += (urls.size - 1)
34
+ urls.each do |url|
35
+ threads << Thread.new {
36
+ begin
37
+ photo_fetcher.fetch url
38
+ rescue Mechanize::ResponseCodeError
39
+ ensure
40
+ progress_bar.increment
41
+ end
42
+ }
43
+ end
41
44
  end
42
45
  threads.each(&:join)
43
46
  end
@@ -16,7 +16,7 @@ module TumblrSync
16
16
  def images(start, number = MAX)
17
17
  response = Net::HTTP.get_response uri_endpoint(type: :photo, start: start, num: number)
18
18
  doc = Nokogiri::XML.parse response.body
19
- doc.xpath("//posts/post/photo-url[@max-width='1280']").map { |url| url.text.strip }
19
+ doc.xpath("//posts/post").map{|post| post.xpath(".//photo-url[@max-width='1280']").map { |url| url.text.strip }.uniq }
20
20
  end
21
21
 
22
22
  def total
@@ -1,3 +1,3 @@
1
1
  module TumblrSync
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -59,5 +59,43 @@ http://24.media.tumblr.com/tumblr_mebojvwCIb1rjwt7po1_75sq.jpg
59
59
  <tag>look</tag>
60
60
  <tag>clothes</tag>
61
61
  </post>
62
+ <post id="114776082263" url="http://steveargyle.tumblr.com/post/114776082263" url-with-slug="http://steveargyle.tumblr.com/post/114776082263/thalia-guardian-of-thraben-world-magic-cup-promo" type="photo" date-gmt="2015-03-27 19:35:35 GMT" date="Fri, 27 Mar 2015 13:35:35" unix-timestamp="1427484935" format="html" reblog-key="yPypkR39" slug="thalia-guardian-of-thraben-world-magic-cup-promo" width="900" height="657">
63
+ <photo-caption>&lt;h2&gt;Thalia, Guardian of Thraben World Magic Cup promo card has finally spoiled!&lt;/h2&gt;&lt;p&gt;Creating artwork for a promotional version of a character is an interesting challenge of balance.  You need the work to stay true to the original, but offer some new insight, story, or perspective.  It&amp;rsquo;s also really intimidating to be following artwork that is already incredible, such as the original by Jana Schirmer and Johannes Voss.&lt;/p&gt;&lt;p&gt;As shown in the sketches, a few of the approaches considered were to show her in front of, or in, a vibrant, thriving city of Thraben.  Or perhaps commanding her armies, or admiring a statue of Avacyn.  While you only get one piece in the end, between me, the art directors, and the concept teams, a whole lot of ideas are explored.  In the end, we settled on one with subtlety.  Instead of a more typical Magic high-action, or epic hero shot, we see this fearsome commander in a moment of humility, saluting another mighty guardian, Avacyn.&lt;/p&gt;&lt;p&gt;And that part is pretty subtle, no?  Avacyn is portrayed here almost entirely as a light source.  And while you&amp;rsquo;ll never-never-never-ever-ever see it on the card, Avacyn is there, a tiny little reflection of her in Thalia&amp;rsquo;s eyes.  I am relentlessly detail obsessed, if you hadn&amp;rsquo;t already noticed.  (Such as the basket hilt design, which if you haven&amp;rsquo;t caught it, is a heron of Innistrad.)&lt;/p&gt;&lt;p&gt;For Magic the Gathering. Copyright Wizards of the Coast. Art directed by Jeremy Jarvis.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.steveargyle.com/#!thalia-guardian-of-thraben/c9g5"&gt;http://www.steveargyle.com/#!thalia-guardian-of-thraben/c9g5&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;</photo-caption>
64
+ <photo-url max-width="1280">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_1280.jpg</photo-url>
65
+ <photo-url max-width="500">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_500.jpg</photo-url>
66
+ <photo-url max-width="400">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_400.jpg</photo-url>
67
+ <photo-url max-width="250">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_250.jpg</photo-url>
68
+ <photo-url max-width="100">http://41.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_100.jpg</photo-url>
69
+ <photo-url max-width="75">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_75sq.jpg</photo-url>
70
+ <photoset>
71
+ <photo offset="o1" caption="Saluting Avacyn" width="900" height="657">
72
+ <photo-url max-width="1280">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_1280.jpg</photo-url>
73
+ <photo-url max-width="500">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_500.jpg</photo-url>
74
+ <photo-url max-width="400">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_400.jpg</photo-url>
75
+ <photo-url max-width="250">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_250.jpg</photo-url>
76
+ <photo-url max-width="100">http://41.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_100.jpg</photo-url>
77
+ <photo-url max-width="75">http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_75sq.jpg</photo-url>
78
+ </photo>
79
+ <photo offset="o3" caption="Lots of ideas were discussed" width="800" height="584">
80
+ <photo-url max-width="1280">http://36.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_1280.jpg</photo-url>
81
+ <photo-url max-width="500">http://36.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_500.jpg</photo-url>
82
+ <photo-url max-width="400">http://40.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_400.jpg</photo-url>
83
+ <photo-url max-width="250">http://40.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_250.jpg</photo-url>
84
+ <photo-url max-width="100">http://40.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_100.jpg</photo-url>
85
+ <photo-url max-width="75">http://40.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_75sq.jpg</photo-url>
86
+ </photo>
87
+ <photo offset="o2" caption="They opted not to go for this one, sadly." width="800" height="1118">
88
+ <photo-url max-width="1280">http://40.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_1280.jpg</photo-url>
89
+ <photo-url max-width="500">http://40.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_500.jpg</photo-url>
90
+ <photo-url max-width="400">http://41.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_400.jpg</photo-url>
91
+ <photo-url max-width="250">http://40.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_250.jpg</photo-url>
92
+ <photo-url max-width="100">http://36.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_100.jpg</photo-url>
93
+ <photo-url max-width="75">http://41.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_75sq.jpg</photo-url>
94
+ </photo>
95
+ </photoset>
96
+ <tag>thalia</tag>
97
+ <tag>world magic cup</tag>
98
+ <tag>mtg promo</tag>
99
+ </post>
62
100
  </posts>
63
- </tumblr>
101
+ </tumblr>
@@ -24,8 +24,14 @@ describe TumblrSync::Tumblr do
24
24
  end
25
25
 
26
26
  it "should get array of images" do
27
- stub_request(:get, "foo.tumblr.com/api/read").with(query: { type: :photo, start: 0, num: 2 }).to_return(body: File.new('test/fixtures/api.xml'), status: 200)
28
- tumblr.images(0, 2).must_equal ["http://24.media.tumblr.com/tumblr_mebokdGrmq1rjwt7po1_500.jpg", "http://25.media.tumblr.com/tumblr_mebojvwCIb1rjwt7po1_500.jpg"]
27
+ stub_request(:get, "foo.tumblr.com/api/read").with(query: { type: :photo, start: 0, num: 10 }).to_return(body: File.new('test/fixtures/api.xml'), status: 200)
28
+ tumblr.images(0, 10).must_equal [
29
+ ["http://24.media.tumblr.com/tumblr_mebokdGrmq1rjwt7po1_500.jpg"],
30
+ ["http://25.media.tumblr.com/tumblr_mebojvwCIb1rjwt7po1_500.jpg"],
31
+ ["http://40.media.tumblr.com/7bf3bc523a3c0f99ad095bb048ec7f05/tumblr_nlvyfb7Fm41r3bmeoo1_1280.jpg",
32
+ "http://36.media.tumblr.com/4904f4db02d987c12b215a2845a7294b/tumblr_nlvyfb7Fm41r3bmeoo3_1280.jpg",
33
+ "http://40.media.tumblr.com/24070cfbdeed18e81b025b1fa76c5ccd/tumblr_nlvyfb7Fm41r3bmeoo2_1280.jpg"],
34
+ ]
29
35
  end
30
36
 
31
37
  it "should get total of images" do
metadata CHANGED
@@ -1,134 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tumblr-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Durand
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMRcwFQYDVQQDDA52aW5j
14
- ZW50LmR1cmFuZDEXMBUGCgmSJomT8ixkARkWB21hZHdvcmsxEzARBgoJkiaJk/Is
15
- ZAEZFgNvcmcwHhcNMTMwOTE4MTY0MDEwWhcNMTQwOTE4MTY0MDEwWjBHMRcwFQYD
16
- VQQDDA52aW5jZW50LmR1cmFuZDEXMBUGCgmSJomT8ixkARkWB21hZHdvcmsxEzAR
17
- BgoJkiaJk/IsZAEZFgNvcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
18
- AQDzlsghBvfbH4yPzi3dXyfkmxjy/uksOkYwzqwbZ6z/TvJdIjY9Xqi/gLe2AxGF
19
- kuVxDuxih84WDG8qxCnAfUxt2nDGAVEspmTXHBAsyZqLLDRiP5LvmH/eAKsJY+rU
20
- ERSJOaLAotMqHHqXiWnpRgFnzE6RM3Cnqq8LH0jIGF9F8gZVLZeRD+VXK4IX1Vyd
21
- HgZKgTPL15k92u7bzqBw7niPCBa9LfYxID6E1bnSHw/kb+7hWarVd/sxpgeH0jgb
22
- f8ieDs8S9+bL/TfzEDAOALAqMDgPXPX1mDKESDZ/wBGW/tP3NSbVKsSZFK8b0e00
23
- Au/fVbAe+P7+T8po/a5UhjMbAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
24
- BAMCBLAwHQYDVR0OBBYEFKne49vGKR3nRMYhyEbJDI2BVQikMCUGA1UdEQQeMByB
25
- GnZpbmNlbnQuZHVyYW5kQG1hZHdvcmsub3JnMCUGA1UdEgQeMByBGnZpbmNlbnQu
26
- ZHVyYW5kQG1hZHdvcmsub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQB0EDvvwy8uol26
27
- Xm4O1iYcfgkTTX11UwgI6XIbS+1AzUwhl4BdWWFFxcy7v2/UMcx4QaJm+tL2B05V
28
- CcVFS8tOMaGk6s7fPdhFswRp+HE9Ex5aiCMAhoIdUbrR5LCJTWyiEBLJhforT+3R
29
- RARQ4FabsVVHevPHxzEAUGGGdWzbG4BcvKpWxbsOz/6yVgy3dpscmanMPH6pBpNH
30
- XD6+HDD0HP0RBeQtHV2LIhLpiJLmNWRmJ9/Cfry72diEnM7173RAelpJNj0kRYjJ
31
- xDr7hfCTJQsNosd7V5q7Uz+SYPK9ALyONt5t3KKYEWS/mBCStEuQXwjIsWG/bqwr
32
- vqfQstIS
33
- -----END CERTIFICATE-----
34
- date: 2013-12-17 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2016-03-11 00:00:00.000000000 Z
35
12
  dependencies:
36
13
  - !ruby/object:Gem::Dependency
37
14
  name: bundler
38
15
  requirement: !ruby/object:Gem::Requirement
39
16
  requirements:
40
- - - ~>
17
+ - - "~>"
41
18
  - !ruby/object:Gem::Version
42
19
  version: '1.3'
43
20
  type: :development
44
21
  prerelease: false
45
22
  version_requirements: !ruby/object:Gem::Requirement
46
23
  requirements:
47
- - - ~>
24
+ - - "~>"
48
25
  - !ruby/object:Gem::Version
49
26
  version: '1.3'
50
27
  - !ruby/object:Gem::Dependency
51
28
  name: rake
52
29
  requirement: !ruby/object:Gem::Requirement
53
30
  requirements:
54
- - - '>='
31
+ - - ">="
55
32
  - !ruby/object:Gem::Version
56
33
  version: '0'
57
34
  type: :development
58
35
  prerelease: false
59
36
  version_requirements: !ruby/object:Gem::Requirement
60
37
  requirements:
61
- - - '>='
38
+ - - ">="
62
39
  - !ruby/object:Gem::Version
63
40
  version: '0'
64
41
  - !ruby/object:Gem::Dependency
65
42
  name: minitest
66
43
  requirement: !ruby/object:Gem::Requirement
67
44
  requirements:
68
- - - '>='
45
+ - - ">="
69
46
  - !ruby/object:Gem::Version
70
47
  version: '0'
71
48
  type: :development
72
49
  prerelease: false
73
50
  version_requirements: !ruby/object:Gem::Requirement
74
51
  requirements:
75
- - - '>='
52
+ - - ">="
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: webmock
80
57
  requirement: !ruby/object:Gem::Requirement
81
58
  requirements:
82
- - - '>='
59
+ - - ">="
83
60
  - !ruby/object:Gem::Version
84
61
  version: '0'
85
62
  type: :development
86
63
  prerelease: false
87
64
  version_requirements: !ruby/object:Gem::Requirement
88
65
  requirements:
89
- - - '>='
66
+ - - ">="
90
67
  - !ruby/object:Gem::Version
91
68
  version: '0'
92
69
  - !ruby/object:Gem::Dependency
93
70
  name: nokogiri
94
71
  requirement: !ruby/object:Gem::Requirement
95
72
  requirements:
96
- - - ~>
73
+ - - "~>"
97
74
  - !ruby/object:Gem::Version
98
75
  version: 1.6.0
99
76
  type: :runtime
100
77
  prerelease: false
101
78
  version_requirements: !ruby/object:Gem::Requirement
102
79
  requirements:
103
- - - ~>
80
+ - - "~>"
104
81
  - !ruby/object:Gem::Version
105
82
  version: 1.6.0
106
83
  - !ruby/object:Gem::Dependency
107
84
  name: mechanize
108
85
  requirement: !ruby/object:Gem::Requirement
109
86
  requirements:
110
- - - ~>
87
+ - - "~>"
111
88
  - !ruby/object:Gem::Version
112
89
  version: 2.7.0
113
90
  type: :runtime
114
91
  prerelease: false
115
92
  version_requirements: !ruby/object:Gem::Requirement
116
93
  requirements:
117
- - - ~>
94
+ - - "~>"
118
95
  - !ruby/object:Gem::Version
119
96
  version: 2.7.0
120
97
  - !ruby/object:Gem::Dependency
121
98
  name: ruby-progressbar
122
99
  requirement: !ruby/object:Gem::Requirement
123
100
  requirements:
124
- - - ~>
101
+ - - "~>"
125
102
  - !ruby/object:Gem::Version
126
103
  version: 1.2.0
127
104
  type: :runtime
128
105
  prerelease: false
129
106
  version_requirements: !ruby/object:Gem::Requirement
130
107
  requirements:
131
- - - ~>
108
+ - - "~>"
132
109
  - !ruby/object:Gem::Version
133
110
  version: 1.2.0
134
111
  description: Synchronize pictures from a Tumblr blog with ease and faster than ever!
@@ -138,8 +115,8 @@ executables:
138
115
  extensions: []
139
116
  extra_rdoc_files: []
140
117
  files:
141
- - .gitignore
142
- - .travis.yml
118
+ - ".gitignore"
119
+ - ".travis.yml"
143
120
  - Gemfile
144
121
  - LICENSE.txt
145
122
  - README.md
@@ -166,17 +143,17 @@ require_paths:
166
143
  - lib
167
144
  required_ruby_version: !ruby/object:Gem::Requirement
168
145
  requirements:
169
- - - '>='
146
+ - - ">="
170
147
  - !ruby/object:Gem::Version
171
148
  version: '0'
172
149
  required_rubygems_version: !ruby/object:Gem::Requirement
173
150
  requirements:
174
- - - '>='
151
+ - - ">="
175
152
  - !ruby/object:Gem::Version
176
153
  version: '0'
177
154
  requirements: []
178
155
  rubyforge_project:
179
- rubygems_version: 2.1.11
156
+ rubygems_version: 2.4.5.1
180
157
  signing_key:
181
158
  specification_version: 4
182
159
  summary: Synchronize pictures from a Tumblr blog
@@ -1,2 +0,0 @@
1
-  8�ŭO�)fz�c[��\���\uw�ƕ�e���_l�H�5�� 5��ӗ�,��.�*0�q33&�\ �}aH��u�^�jQ�ó��O� &���#L#�j~�_��XG���ά�
2
- ?�()��RK/� ����
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1 +0,0 @@
1
- <1?��~6