-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtumblr.rb
58 lines (47 loc) · 1.28 KB
/
tumblr.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class Tumblr
TUMBLR_API_KEY = ARGV[0].freeze
TUMBLR_DOMAIN = ARGV[1].freeze
BASE_URL = "https://api.tumblr.com/v2/blog/#{TUMBLR_DOMAIN}/posts/text?api_key=#{TUMBLR_API_KEY}"
def initialize
@page = 1
@per_page = 20
raw = HTTParty.get("#{BASE_URL}&limit=#{@per_page}&offset=#{offset}")
@page_results = raw['response']
@total_posts = @page_results['total_posts']
@posts_read = 0
end
def next_post
if @posts_read >= @total_posts
puts "We're done!"
return nil
end
post = @page_results['posts'][@posts_read - offset]
if post.nil?
if @posts_read == @total_posts
return nil
end
puts "~~~ Page #{@page} done ~~~"
puts "Read so far: #{@posts_read}"
puts "Out of #{@total_posts}"
@page_results = next_page
post = @page_results['posts'][@posts_read - offset]
end
@posts_read+=1
puts "#{@posts_read} - #{post['title']}"
return post
end
def next_page
sleep 1
@page += 1
raw = HTTParty.get("#{BASE_URL}&limit=#{@per_page}&offset=#{offset}")
if raw['meta']['status'] != 200
puts "#{raw['meta']['status']} - #{raw['meta']['msg']}"
# binding.pry
raise "Tumblr API Error"
end
raw['response']
end
def offset
(@page - 1 ) * 20
end
end