tumblr_api 0.1.0
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 +12 -0
- data/tumblr_api.rb +96 -0
- metadata +66 -0
data/README
ADDED
data/tumblr_api.rb
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'nokogiri'
|
|
3
|
+
require 'open-uri'
|
|
4
|
+
|
|
5
|
+
class Tumblr
|
|
6
|
+
attr_accessor :articles
|
|
7
|
+
|
|
8
|
+
def initialize(url)
|
|
9
|
+
get_full_list(url)
|
|
10
|
+
@tumblelog = @xml.xpath("//tumblelog")
|
|
11
|
+
@posts = @body.xpath("//post")
|
|
12
|
+
@articles = []
|
|
13
|
+
@total.times do |num|
|
|
14
|
+
@articles.push Article.new(@posts[num])
|
|
15
|
+
end
|
|
16
|
+
@articles.sort_by{|a| [a.date_gmt]}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class Article
|
|
20
|
+
attr_accessor :id, :url, :type, :date_gmt, :date, :unix_timestamp, :format, :reglog_key, :slug
|
|
21
|
+
def initialize(post)
|
|
22
|
+
@article = Nokogiri::XML(post.to_s, nil, 'UTF-8').xpath("//post")[0]
|
|
23
|
+
@id = @article['id']
|
|
24
|
+
@url = @article['url']
|
|
25
|
+
@type = @article['type']
|
|
26
|
+
@date_gmt = @article['date-gmt']
|
|
27
|
+
@date = @article['date']
|
|
28
|
+
@unix_timestamp = @article['unix_timestamp']
|
|
29
|
+
@format = @article['format']
|
|
30
|
+
@reblog_key = @article['reblog-key']
|
|
31
|
+
@slug = @article['slug']
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def title
|
|
35
|
+
title = ""
|
|
36
|
+
unless @article.xpath("//photo-caption")[0].nil?
|
|
37
|
+
title = @article.xpath("//photo-caption")[0].content
|
|
38
|
+
@article.xpath("//photo-caption")[0].remove
|
|
39
|
+
end
|
|
40
|
+
unless @article.xpath("//regular-title")[0].nil?
|
|
41
|
+
title = @article.xpath("//regular-title")[0].content
|
|
42
|
+
@article.xpath("//regular-title")[0].remove
|
|
43
|
+
end
|
|
44
|
+
title
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def content
|
|
48
|
+
@article.css("photo-url").each do |elem|
|
|
49
|
+
"<img src = \"" + elem.content + "\" />"
|
|
50
|
+
elem.remove
|
|
51
|
+
end
|
|
52
|
+
@article.css("tag").each do |elem|
|
|
53
|
+
elem.remove
|
|
54
|
+
end
|
|
55
|
+
@article
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def id
|
|
60
|
+
@tumblelog[0]['name']
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def title
|
|
64
|
+
@tumblelog[0]['title']
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def timezone
|
|
68
|
+
@tumblelog[0]['timezone']
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def to_s
|
|
72
|
+
"http://" + @tumblelog[0]['name'] + ".tumblr.com"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def get_full_list(url)
|
|
76
|
+
uri = url + "/api/read?num=50"
|
|
77
|
+
@xml = Nokogiri::HTML(open(uri), nil, 'UTF-8')
|
|
78
|
+
posts = @xml.xpath("//posts").to_s
|
|
79
|
+
@total = @xml.xpath("//posts")[0]['total'].to_i
|
|
80
|
+
pages = @total.to_i/50
|
|
81
|
+
num = 50
|
|
82
|
+
pages.times do
|
|
83
|
+
uri = url + "/api/read?num=50&start=" + num.to_s
|
|
84
|
+
temp = Nokogiri::HTML(open(uri), nil, 'UTF-8').xpath("//posts").to_s
|
|
85
|
+
posts = posts + temp
|
|
86
|
+
num += 50
|
|
87
|
+
end
|
|
88
|
+
@body = Nokogiri::HTML(posts, nil, 'UTF-8')
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
=begin
|
|
93
|
+
url = "http://thejoysofbeingjoy.tumblr.com"
|
|
94
|
+
articles = Tumblr.new(url).articles
|
|
95
|
+
puts articles[0].title
|
|
96
|
+
=end
|
metadata
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: tumblr_api
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
hash: 27
|
|
5
|
+
prerelease:
|
|
6
|
+
segments:
|
|
7
|
+
- 0
|
|
8
|
+
- 1
|
|
9
|
+
- 0
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
platform: ruby
|
|
12
|
+
authors:
|
|
13
|
+
- Kyu Park
|
|
14
|
+
autorequire:
|
|
15
|
+
bindir: bin
|
|
16
|
+
cert_chain: []
|
|
17
|
+
|
|
18
|
+
date: 2011-11-24 00:00:00 Z
|
|
19
|
+
dependencies: []
|
|
20
|
+
|
|
21
|
+
description: It loads a tumblr blog data.
|
|
22
|
+
email: park@kyu.co
|
|
23
|
+
executables: []
|
|
24
|
+
|
|
25
|
+
extensions: []
|
|
26
|
+
|
|
27
|
+
extra_rdoc_files: []
|
|
28
|
+
|
|
29
|
+
files:
|
|
30
|
+
- tumblr_api.rb
|
|
31
|
+
- README
|
|
32
|
+
homepage: https://github.com/parkq/tumblr_api
|
|
33
|
+
licenses: []
|
|
34
|
+
|
|
35
|
+
post_install_message:
|
|
36
|
+
rdoc_options: []
|
|
37
|
+
|
|
38
|
+
require_paths:
|
|
39
|
+
- lib
|
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
hash: 3
|
|
46
|
+
segments:
|
|
47
|
+
- 0
|
|
48
|
+
version: "0"
|
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
|
+
none: false
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
hash: 3
|
|
55
|
+
segments:
|
|
56
|
+
- 0
|
|
57
|
+
version: "0"
|
|
58
|
+
requirements: []
|
|
59
|
+
|
|
60
|
+
rubyforge_project:
|
|
61
|
+
rubygems_version: 1.8.11
|
|
62
|
+
signing_key:
|
|
63
|
+
specification_version: 3
|
|
64
|
+
summary: Tumblr Read API
|
|
65
|
+
test_files: []
|
|
66
|
+
|