tumblr-rb 0.1.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +7 -1
- data/README.md +17 -2
- data/Rakefile +11 -0
- data/bin/tumblr +119 -0
- data/lib/tumblr.rb +12 -6
- data/lib/tumblr/authenticator.rb +2 -0
- data/lib/tumblr/reader.rb +2 -0
- data/lib/tumblr/writer.rb +2 -0
- data/man/tumblr.1 +112 -0
- data/man/tumblr.1.html +147 -0
- data/man/tumblr.1.ronn +67 -0
- data/man/tumblr.5 +137 -0
- data/man/tumblr.5.html +163 -0
- data/man/tumblr.5.ronn +104 -0
- data/test/test_tumblr.rb +9 -0
- data/tumblr-rb.gemspec +14 -2
- metadata +30 -9
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -8,6 +8,10 @@ dependencies:
|
|
8
8
|
group:
|
9
9
|
- :test
|
10
10
|
version: ">= 0"
|
11
|
+
highline:
|
12
|
+
group:
|
13
|
+
- :default
|
14
|
+
version: ">= 1.5.2"
|
11
15
|
weary:
|
12
16
|
group:
|
13
17
|
- :default
|
@@ -49,10 +53,12 @@ specs:
|
|
49
53
|
version: 1.4.0
|
50
54
|
- contest:
|
51
55
|
version: 0.1.2
|
56
|
+
- highline:
|
57
|
+
version: 1.5.2
|
52
58
|
- fakeweb:
|
53
59
|
version: 1.2.8
|
54
60
|
- vcr:
|
55
61
|
version: 0.1.2
|
56
|
-
hash:
|
62
|
+
hash: bb23bf752ce2daa339a799069ab0b6df9063a3a4
|
57
63
|
sources: []
|
58
64
|
|
data/README.md
CHANGED
@@ -8,6 +8,20 @@ Ruby wrapper and command line tool for the [Tumblr API](http://www.tumblr.com/do
|
|
8
8
|
|
9
9
|
gem install tumblr-rb
|
10
10
|
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
$: tumblr path/to/a_post.markdown
|
14
|
+
Email Address: tumblr-user@foobarmail.com
|
15
|
+
Password:
|
16
|
+
Published to Tumblr. The ID for this post is: 123456789
|
17
|
+
|
18
|
+
You can pass `tumblr` something from standard input, but you have to set your email and password as arguments:
|
19
|
+
|
20
|
+
$: echo 'Hello world.' | tumblr -a user@tumblr.com:supers3cretp4ssw0rd
|
21
|
+
Published to Tumblr. The ID for this post is: 123456790
|
22
|
+
|
23
|
+
Try `tumblr --help` if you are in need of guidance. Read [tumblr(1)](http://mwunsch.github.com/tumblr/tumblr.1.html) for more information.
|
24
|
+
|
11
25
|
## Getting Started
|
12
26
|
|
13
27
|
Like [Jekyll](http://tom.preston-werner.com/jekyll/), and [Mustache](http://defunkt.github.com/mustache/), Tumblr gem will transform documents preceded by a [YAML](http://www.yaml.org/) frontmatter block.
|
@@ -24,6 +38,8 @@ YAML frontmatter beings with `---` on a single line, followed by YAML, ending wi
|
|
24
38
|
|
25
39
|
Understood YAML parameters are taken from the Tumblr API: http://www.tumblr.com/docs/en/api#api_write
|
26
40
|
|
41
|
+
Read [tumblr(5)](http://mwunsch.github.com/tumblr/tumblr.5.html) for more info.
|
42
|
+
|
27
43
|
#### All Posts
|
28
44
|
|
29
45
|
type regular, photo, link, quote, conversation, video, audio
|
@@ -86,8 +102,7 @@ To publish to Tumblr, do this:
|
|
86
102
|
## TODO:
|
87
103
|
|
88
104
|
+ Tumblr::Post needs methods for liking and unliking.
|
89
|
-
+
|
90
|
-
+ Make the manpages for the CLI
|
105
|
+
+ Add options to CLI for adding to queue, drafts, etc.
|
91
106
|
+ File-uploading for Photos, Videos, Audio (needs to get into Weary)
|
92
107
|
|
93
108
|
## Copyright
|
data/Rakefile
CHANGED
@@ -22,6 +22,7 @@ begin
|
|
22
22
|
gem.homepage = "http://github.com/mwunsch/tumblr"
|
23
23
|
gem.authors = ["Mark Wunsch"]
|
24
24
|
gem.add_dependency 'weary', '>= 0.7.1'
|
25
|
+
gem.add_dependency 'highline', '>= 1.5.2'
|
25
26
|
gem.add_development_dependency "bundler", ">= 0.9.7"
|
26
27
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
27
28
|
end
|
@@ -68,3 +69,13 @@ desc "Open an irb session preloaded with this library"
|
|
68
69
|
task :console do
|
69
70
|
sh "irb -rubygems -I lib -r tumblr"
|
70
71
|
end
|
72
|
+
|
73
|
+
desc "Build the manual"
|
74
|
+
task :build_man do
|
75
|
+
sh "ronn -br5 --organization='Mark Wunsch' --manual='Tumblr Manual' man/*.ronn"
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "Show the manual"
|
79
|
+
task :man => :build_man do
|
80
|
+
exec "man man/tumblr.1"
|
81
|
+
end
|
data/bin/tumblr
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
## Tumblr is a command line interface for publishing to Tumblr.com
|
3
|
+
##
|
4
|
+
## Usage: tumblr [ OPTIONS ] [ FILE or URL ]
|
5
|
+
##
|
6
|
+
## Publish to Tumblr. If a URL is given, it will create a link post.
|
7
|
+
## If URL is a YouTube or Vimeo URL, it will create a video post.
|
8
|
+
## If a FILE is given, it will publish its contents.
|
9
|
+
## See tumblr(5) for formatting instructions for FILE.
|
10
|
+
## If a URL or FILE is not given, tumblr will read from the Standard Input.
|
11
|
+
## If tumblr reads from the Standard Input, you must authenticate with -a.
|
12
|
+
##
|
13
|
+
##
|
14
|
+
|
15
|
+
require 'optparse'
|
16
|
+
|
17
|
+
def usage
|
18
|
+
File.readlines(__FILE__).
|
19
|
+
grep(/^##.*/).
|
20
|
+
map { |line| line.chomp[3..-1] }.
|
21
|
+
join("\n")
|
22
|
+
end
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'tumblr'
|
26
|
+
rescue LoadError
|
27
|
+
raise if $!.to_s !~ /tumblr/
|
28
|
+
libdir = File.expand_path("../../lib", __FILE__).sub(/^#{Dir.pwd}/, '.')
|
29
|
+
if !$:.include?(libdir)
|
30
|
+
$:.unshift libdir
|
31
|
+
require File.expand_path('../../.bundle/environment', __FILE__)
|
32
|
+
retry
|
33
|
+
end
|
34
|
+
raise
|
35
|
+
end
|
36
|
+
|
37
|
+
publisher = {}
|
38
|
+
|
39
|
+
ARGV.options do |option|
|
40
|
+
option.banner = usage
|
41
|
+
option.separator "Options"
|
42
|
+
|
43
|
+
auth_text = 'Email Address and Password, separated by a colon'
|
44
|
+
option.on('-a EMAIL:PASSWORD', '--auth EMAIL:PASSWORD', auth_text) do |auth|
|
45
|
+
credentials = auth.split(':')
|
46
|
+
publisher[:email] = credentials[0]
|
47
|
+
publisher[:password] = credentials[1]
|
48
|
+
end
|
49
|
+
|
50
|
+
address_text = 'Email Address (will prompt for password)'
|
51
|
+
option.on('-e EMAIL', '--email EMAIL', address_text) do |email|
|
52
|
+
publisher[:email] = email
|
53
|
+
end
|
54
|
+
|
55
|
+
option.separator ""
|
56
|
+
|
57
|
+
option.on('-h','--help', 'Show this help message') { puts option ; exit }
|
58
|
+
option.on('-v','--version', 'Show version number') do
|
59
|
+
puts Tumblr::VERSION
|
60
|
+
exit
|
61
|
+
end
|
62
|
+
|
63
|
+
option.separator ""
|
64
|
+
|
65
|
+
option.parse!
|
66
|
+
end
|
67
|
+
|
68
|
+
if ARGV.empty? && STDIN.tty?
|
69
|
+
puts usage
|
70
|
+
puts "See 'tumblr --help' for more information."
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
|
74
|
+
input = if !ARGV.empty?
|
75
|
+
path = ARGV.first
|
76
|
+
(path =~ /^https?:\/\/\S+$/i) ? path : File.read(path)
|
77
|
+
else
|
78
|
+
STDIN.read.chomp!
|
79
|
+
end
|
80
|
+
|
81
|
+
if !STDIN.tty? && (!publisher[:email] || !publisher[:password])
|
82
|
+
bad_auth = %q(Error: An email address and password are required. Use 'tumblr -a' to authenticate. See 'tumblr --help' for details.)
|
83
|
+
abort bad_auth
|
84
|
+
end
|
85
|
+
|
86
|
+
if !publisher[:email] || !publisher[:password]
|
87
|
+
begin
|
88
|
+
require 'highline/import'
|
89
|
+
rescue LoadError
|
90
|
+
require 'rubygems'
|
91
|
+
retry
|
92
|
+
end
|
93
|
+
|
94
|
+
def get_email(pub)
|
95
|
+
pub[:email] = ask("Email Address: ")
|
96
|
+
get_email(pub) if pub[:email].empty?
|
97
|
+
end
|
98
|
+
|
99
|
+
def get_password(pub)
|
100
|
+
pub[:password] = ask("Password: ") { |q| q.echo = false }
|
101
|
+
get_password(pub) if pub[:password].empty?
|
102
|
+
end
|
103
|
+
|
104
|
+
if !publisher[:email]
|
105
|
+
get_email(publisher)
|
106
|
+
end
|
107
|
+
|
108
|
+
if !publisher[:password]
|
109
|
+
get_password(publisher)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
response = Tumblr.execute(publisher, input)
|
114
|
+
if response.success?
|
115
|
+
puts "Published to Tumblr. The ID for this post is: #{response.body}"
|
116
|
+
exit
|
117
|
+
else
|
118
|
+
abort %Q(Oh no! Something went wrong. Tumblr says, "#{response.body}")
|
119
|
+
end
|
data/lib/tumblr.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'weary'
|
2
2
|
|
3
|
-
require 'tumblr/post'
|
4
|
-
require 'tumblr/reader'
|
5
|
-
require 'tumblr/writer'
|
6
|
-
require 'tumblr/authenticator'
|
7
|
-
|
8
3
|
class Tumblr
|
9
|
-
VERSION = "0.
|
4
|
+
VERSION = "1.0.0"
|
10
5
|
GENERATOR = "The Tumblr Gem v#{VERSION}"
|
6
|
+
USER_AGENT = "TumblrGem/#{VERSION} (+http://github.com/mwunsch/tumblr)"
|
7
|
+
|
8
|
+
require 'tumblr/post'
|
9
|
+
require 'tumblr/reader'
|
10
|
+
require 'tumblr/writer'
|
11
|
+
require 'tumblr/authenticator'
|
11
12
|
|
12
13
|
def initialize(*credentials)
|
13
14
|
@credentials = {:email => credentials[0], :password => credentials[1]} unless credentials.blank?
|
@@ -53,6 +54,11 @@ class Tumblr
|
|
53
54
|
Writer.new(@credentials[:email],@credentials[:password])
|
54
55
|
end
|
55
56
|
|
57
|
+
def self.execute(credentials, input, state=nil)
|
58
|
+
request = new(credentials[:email],credentials[:password]).post(input)
|
59
|
+
request.perform
|
60
|
+
end
|
61
|
+
|
56
62
|
# Parse a post out of a string
|
57
63
|
def self.parse(doc)
|
58
64
|
document = {}
|
data/lib/tumblr/authenticator.rb
CHANGED
data/lib/tumblr/reader.rb
CHANGED
data/lib/tumblr/writer.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
class Tumblr
|
2
2
|
class Writer < Weary::Base
|
3
3
|
|
4
|
+
headers({"User-Agent" => Tumblr::USER_AGENT})
|
5
|
+
|
4
6
|
def initialize(*credentials)
|
5
7
|
@defaults = {:generator => Tumblr::GENERATOR}
|
6
8
|
@defaults.merge!({:email => credentials[0], :password => credentials[1]}) unless credentials.blank?
|
data/man/tumblr.1
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
.\" generated with Ronn/v0.4.1
|
2
|
+
.\" http://github.com/rtomayko/ronn/
|
3
|
+
.
|
4
|
+
.TH "TUMBLR" "1" "March 2010" "Mark Wunsch" "Tumblr Manual"
|
5
|
+
.
|
6
|
+
.SH "NAME"
|
7
|
+
\fBtumblr\fR \-\- publish to tumblr.com
|
8
|
+
.
|
9
|
+
.SH "SYNOPSIS"
|
10
|
+
\fBtumblr\fR [\fIOPTIONS\fR] \fIFILE OR URL\fR
|
11
|
+
.
|
12
|
+
.SH "DESCRIPTION"
|
13
|
+
\fBtumblr\fR is a command line utility and Ruby library for working with Tumblr.com. It can read plain\-text files and publish them to Tumblr.
|
14
|
+
.
|
15
|
+
.P
|
16
|
+
The \fBtumblr\fR command will publish a named input \fIFILE\fR (or Standard Input if no file is given), or if a \fIURL\fR is given it will publish that URL as a Link post (or a Video post if the url is a YouTube or Vimeo post).
|
17
|
+
.
|
18
|
+
.P
|
19
|
+
If you preface your \fIFILE\fR with a bit of YAML (<yaml.org>) frontmatter, you can give \fBtumblr\fR more explicit instructions for publishing your post. See tumblr(5) for available YAML parameters.
|
20
|
+
.
|
21
|
+
.SH "OPTIONS"
|
22
|
+
.
|
23
|
+
.TP
|
24
|
+
\fB\-a\fR,\fB\-\-auth\fR [\fIEMAIL:PASSWORD\fR]
|
25
|
+
Provide Email Address and Password, to authenticate to Tumblr, separated by a colon.
|
26
|
+
If these are not provided, you will be prompted for them.
|
27
|
+
You \fBmust\fR provide this argument if the post comes from standard input.
|
28
|
+
.
|
29
|
+
.TP
|
30
|
+
\fB\-e\fR, \fB\-\-email\fR [\fIEMAIL\fR]
|
31
|
+
Email Address associated with your Tumblr account.
|
32
|
+
You will be prompted for a password.
|
33
|
+
.
|
34
|
+
.P
|
35
|
+
Other:
|
36
|
+
.
|
37
|
+
.TP
|
38
|
+
\fB\-h\fR, \fB\-\-help\fR
|
39
|
+
Print the help message and quit.
|
40
|
+
.
|
41
|
+
.TP
|
42
|
+
\fB\-v\fR, \fB\-\-version\fR
|
43
|
+
Print the \fBtumblr\fR version and quit.
|
44
|
+
.
|
45
|
+
.SH "EXAMPLES"
|
46
|
+
Publish a file to Tumblr.com:
|
47
|
+
.
|
48
|
+
.IP "" 4
|
49
|
+
.
|
50
|
+
.nf
|
51
|
+
$ tumblr my_post.txt
|
52
|
+
.
|
53
|
+
.fi
|
54
|
+
.
|
55
|
+
.IP "" 0
|
56
|
+
.
|
57
|
+
.P
|
58
|
+
Or from standard input:
|
59
|
+
.
|
60
|
+
.IP "" 4
|
61
|
+
.
|
62
|
+
.nf
|
63
|
+
$ cat data.yml my_post.txt | tumblr \-a tumblr_user@foobar.com:p4ssw0rd
|
64
|
+
.
|
65
|
+
.fi
|
66
|
+
.
|
67
|
+
.IP "" 0
|
68
|
+
.
|
69
|
+
.P
|
70
|
+
Make a Link post:
|
71
|
+
.
|
72
|
+
.IP "" 4
|
73
|
+
.
|
74
|
+
.nf
|
75
|
+
$ tumblr http://github.com/mwunsch/tumblr
|
76
|
+
.
|
77
|
+
.fi
|
78
|
+
.
|
79
|
+
.IP "" 0
|
80
|
+
.
|
81
|
+
.P
|
82
|
+
Or a Video post:
|
83
|
+
.
|
84
|
+
.IP "" 4
|
85
|
+
.
|
86
|
+
.nf
|
87
|
+
$ tumblr http://www.youtube.com/watch?v=CW0DUg63lqU
|
88
|
+
.
|
89
|
+
.fi
|
90
|
+
.
|
91
|
+
.IP "" 0
|
92
|
+
.
|
93
|
+
.SH "INSTALLATION"
|
94
|
+
If you have RubyGems installed:
|
95
|
+
.
|
96
|
+
.IP "" 4
|
97
|
+
.
|
98
|
+
.nf
|
99
|
+
gem install tumblr\-rb
|
100
|
+
.
|
101
|
+
.fi
|
102
|
+
.
|
103
|
+
.IP "" 0
|
104
|
+
.
|
105
|
+
.SH "COPYRIGHT"
|
106
|
+
Tumblr (the gem) is Copyright (C) 2010 Mark Wunsch
|
107
|
+
.
|
108
|
+
.P
|
109
|
+
Tumblr is Copyright (c) Tumblr, Inc. The Tumblr gem is NOT affiliated with Tumblr.
|
110
|
+
.
|
111
|
+
.SH "SEE ALSO"
|
112
|
+
tumblr(5), gem(1)
|
data/man/tumblr.1.html
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' value='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' value='Ronn/v0.4.1'>
|
6
|
+
<title>tumblr(1) -- publish to tumblr.com</title>
|
7
|
+
<style type='text/css'>
|
8
|
+
body {margin:0}
|
9
|
+
#man, #man code, #man pre, #man tt, #man kbd, #man samp {
|
10
|
+
font-family:consolas,monospace;
|
11
|
+
font-size:16px;
|
12
|
+
line-height:1.3;
|
13
|
+
color:#343331;
|
14
|
+
background:#fff; }
|
15
|
+
#man { max-width:89ex; text-align:justify; margin:0 25px 25px 25px }
|
16
|
+
#man h1, #man h2, #man h3 { color:#232221;clear:left }
|
17
|
+
#man h1 { font-size:28px; margin:15px 0 30px 0; text-align:center }
|
18
|
+
#man h2 { font-size:18px; margin-bottom:0; margin-top:10px; line-height:1.3; }
|
19
|
+
#man h3 { font-size:16px; margin:0 0 0 4ex; }
|
20
|
+
#man p, #man ul, #man ol, #man dl, #man pre { margin:0 0 18px 0; }
|
21
|
+
#man pre {
|
22
|
+
color:#333231;
|
23
|
+
background:#edeceb;
|
24
|
+
padding:5px 7px;
|
25
|
+
margin:0px 0 20px 0;
|
26
|
+
border-left:2ex solid #ddd}
|
27
|
+
#man pre + h2, #man pre + h3 {
|
28
|
+
margin-top:22px;
|
29
|
+
}
|
30
|
+
#man h2 + pre, #man h3 + pre {
|
31
|
+
margin-top:5px;
|
32
|
+
}
|
33
|
+
#man > p, #man > ul, #man > ol, #man > dl, #man > pre { margin-left:8ex; }
|
34
|
+
#man dt { margin:0; clear:left }
|
35
|
+
#man dt.flush { float:left; width:8ex }
|
36
|
+
#man dd { margin:0 0 0 9ex }
|
37
|
+
#man code, #man strong, #man b { font-weight:bold; color:#131211; }
|
38
|
+
#man pre code { font-weight:normal; color:#232221; background:inherit }
|
39
|
+
#man em, var, u {
|
40
|
+
font-style:normal; color:#333231; border-bottom:1px solid #999; }
|
41
|
+
#man h1.man-title { display:none; }
|
42
|
+
#man ol.man, #man ol.man li { margin:2px 0 10px 0; padding:0;
|
43
|
+
float:left; width:33%; list-style-type:none;
|
44
|
+
text-transform:uppercase; font-size:18px; color:#999;
|
45
|
+
letter-spacing:1px;}
|
46
|
+
#man ol.man { width:100%; }
|
47
|
+
#man ol.man li.tl { text-align:left }
|
48
|
+
#man ol.man li.tc { text-align:center;letter-spacing:4px }
|
49
|
+
#man ol.man li.tr { text-align:right }
|
50
|
+
#man ol.man a { color:#999 }
|
51
|
+
#man ol.man a:hover { color:#333231 }
|
52
|
+
</style>
|
53
|
+
</head>
|
54
|
+
<body>
|
55
|
+
<div id='man'>
|
56
|
+
|
57
|
+
<h1 class='man-title'>tumblr(1)</h1>
|
58
|
+
|
59
|
+
<ol class='head man'>
|
60
|
+
<li class='tl'>tumblr(1)</li>
|
61
|
+
<li class='tc'>Tumblr Manual</li>
|
62
|
+
<li class='tr'>tumblr(1)</li>
|
63
|
+
</ol>
|
64
|
+
|
65
|
+
<h2 id='NAME'>NAME</h2>
|
66
|
+
<p><code>tumblr</code> -- publish to tumblr.com</p>
|
67
|
+
|
68
|
+
<h2>SYNOPSIS</h2>
|
69
|
+
|
70
|
+
<p><code>tumblr</code> [<var>OPTIONS</var>] <var>FILE OR URL</var></p>
|
71
|
+
|
72
|
+
<h2>DESCRIPTION</h2>
|
73
|
+
|
74
|
+
<p><code>tumblr</code> is a command line utility and Ruby library for working with Tumblr.com. It can read plain-text files and publish them to Tumblr.</p>
|
75
|
+
|
76
|
+
<p>The <code>tumblr</code> command will publish a named input <var>FILE</var> (or Standard Input if no file is given), or if a <var>URL</var> is given it will publish that URL as a Link post (or a Video post if the url is a YouTube or Vimeo post).</p>
|
77
|
+
|
78
|
+
<p>If you preface your <var>FILE</var> with a bit of YAML (<yaml.org>) frontmatter, you can give <code>tumblr</code> more explicit instructions for publishing your post. See tumblr(5) for available YAML parameters.</p>
|
79
|
+
|
80
|
+
<h2>OPTIONS</h2>
|
81
|
+
|
82
|
+
<dl>
|
83
|
+
<dt><code>-a</code>,<code>--auth</code> [<em>EMAIL:PASSWORD</em>]</dt><dd><p> Provide Email Address and Password, to authenticate to Tumblr, separated by a colon.
|
84
|
+
If these are not provided, you will be prompted for them.
|
85
|
+
You <b>must</b> provide this argument if the post comes from standard input.</p></dd>
|
86
|
+
<dt><code>-e</code>, <code>--email</code> [<em>EMAIL</em>]</dt><dd><p> Email Address associated with your Tumblr account.
|
87
|
+
You will be prompted for a password.</p></dd>
|
88
|
+
</dl>
|
89
|
+
|
90
|
+
|
91
|
+
<p>Other:</p>
|
92
|
+
|
93
|
+
<dl>
|
94
|
+
<dt><code>-h</code>, <code>--help</code></dt><dd><p> Print the help message and quit.</p></dd>
|
95
|
+
<dt><code>-v</code>, <code>--version</code></dt><dd><p> Print the <code>tumblr</code> version and quit.</p></dd>
|
96
|
+
</dl>
|
97
|
+
|
98
|
+
|
99
|
+
<h2>EXAMPLES</h2>
|
100
|
+
|
101
|
+
<p>Publish a file to Tumblr.com:</p>
|
102
|
+
|
103
|
+
<pre><code>$ tumblr my_post.txt
|
104
|
+
</code></pre>
|
105
|
+
|
106
|
+
<p>Or from standard input:</p>
|
107
|
+
|
108
|
+
<pre><code>$ cat data.yml my_post.txt | tumblr -a tumblr_user@foobar.com:p4ssw0rd
|
109
|
+
</code></pre>
|
110
|
+
|
111
|
+
<p>Make a Link post:</p>
|
112
|
+
|
113
|
+
<pre><code>$ tumblr http://github.com/mwunsch/tumblr
|
114
|
+
</code></pre>
|
115
|
+
|
116
|
+
<p>Or a Video post:</p>
|
117
|
+
|
118
|
+
<pre><code>$ tumblr http://www.youtube.com/watch?v=CW0DUg63lqU
|
119
|
+
</code></pre>
|
120
|
+
|
121
|
+
<h2>INSTALLATION</h2>
|
122
|
+
|
123
|
+
<p>If you have RubyGems installed:</p>
|
124
|
+
|
125
|
+
<pre><code>gem install tumblr-rb
|
126
|
+
</code></pre>
|
127
|
+
|
128
|
+
<h2>COPYRIGHT</h2>
|
129
|
+
|
130
|
+
<p>Tumblr (the gem) is Copyright (C) 2010 Mark Wunsch</p>
|
131
|
+
|
132
|
+
<p>Tumblr is Copyright (c) Tumblr, Inc. The Tumblr gem is NOT affiliated with Tumblr.</p>
|
133
|
+
|
134
|
+
<h2>SEE ALSO</h2>
|
135
|
+
|
136
|
+
<p>tumblr(5), gem(1)</p>
|
137
|
+
|
138
|
+
|
139
|
+
<ol class='foot man'>
|
140
|
+
<li class='tl'>Mark Wunsch</li>
|
141
|
+
<li class='tc'>March 2010</li>
|
142
|
+
<li class='tr'>tumblr(1)</li>
|
143
|
+
</ol>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
</body>
|
147
|
+
</html>
|
data/man/tumblr.1.ronn
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
tumblr(1) -- publish to tumblr.com
|
2
|
+
===================================
|
3
|
+
|
4
|
+
## SYNOPSIS
|
5
|
+
|
6
|
+
`tumblr` [<OPTIONS>] <FILE OR URL>
|
7
|
+
|
8
|
+
## DESCRIPTION
|
9
|
+
|
10
|
+
`tumblr` is a command line utility and Ruby library for working with Tumblr.com. It can read plain-text files and publish them to Tumblr.
|
11
|
+
|
12
|
+
The `tumblr` command will publish a named input <FILE> (or Standard Input if no file is given), or if a <URL> is given it will publish that URL as a Link post (or a Video post if the url is a YouTube or Vimeo post).
|
13
|
+
|
14
|
+
If you preface your <FILE> with a bit of YAML (<yaml.org>) frontmatter, you can give `tumblr` more explicit instructions for publishing your post. See tumblr(5) for available YAML parameters.
|
15
|
+
|
16
|
+
## OPTIONS
|
17
|
+
|
18
|
+
* `-a`,`--auth` [_EMAIL:PASSWORD_]:
|
19
|
+
Provide Email Address and Password, to authenticate to Tumblr, separated by a colon.
|
20
|
+
If these are not provided, you will be prompted for them.
|
21
|
+
You <b>must</b> provide this argument if the post comes from standard input.
|
22
|
+
|
23
|
+
* `-e`, `--email` [_EMAIL_]:
|
24
|
+
Email Address associated with your Tumblr account.
|
25
|
+
You will be prompted for a password.
|
26
|
+
|
27
|
+
Other:
|
28
|
+
|
29
|
+
* `-h`, `--help`:
|
30
|
+
Print the help message and quit.
|
31
|
+
|
32
|
+
* `-v`, `--version`:
|
33
|
+
Print the `tumblr` version and quit.
|
34
|
+
|
35
|
+
## EXAMPLES
|
36
|
+
|
37
|
+
Publish a file to Tumblr.com:
|
38
|
+
|
39
|
+
$ tumblr my_post.txt
|
40
|
+
|
41
|
+
Or from standard input:
|
42
|
+
|
43
|
+
$ cat data.yml my_post.txt | tumblr -a tumblr_user@foobar.com:p4ssw0rd
|
44
|
+
|
45
|
+
Make a Link post:
|
46
|
+
|
47
|
+
$ tumblr http://github.com/mwunsch/tumblr
|
48
|
+
|
49
|
+
Or a Video post:
|
50
|
+
|
51
|
+
$ tumblr http://www.youtube.com/watch?v=CW0DUg63lqU
|
52
|
+
|
53
|
+
## INSTALLATION
|
54
|
+
|
55
|
+
If you have RubyGems installed:
|
56
|
+
|
57
|
+
gem install tumblr-rb
|
58
|
+
|
59
|
+
## COPYRIGHT
|
60
|
+
|
61
|
+
Tumblr (the gem) is Copyright (C) 2010 Mark Wunsch
|
62
|
+
|
63
|
+
Tumblr is Copyright (c) Tumblr, Inc. The Tumblr gem is NOT affiliated with Tumblr.
|
64
|
+
|
65
|
+
## SEE ALSO
|
66
|
+
|
67
|
+
tumblr(5), gem(1)
|
data/man/tumblr.5
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
.\" generated with Ronn/v0.4.1
|
2
|
+
.\" http://github.com/rtomayko/ronn/
|
3
|
+
.
|
4
|
+
.TH "TUMBLR" "5" "March 2010" "Mark Wunsch" "Tumblr Manual"
|
5
|
+
.
|
6
|
+
.SH "NAME"
|
7
|
+
\fBtumblr\fR \-\- tumblr posts in plaintext
|
8
|
+
.
|
9
|
+
.SH "SYNOPSIS"
|
10
|
+
.
|
11
|
+
.nf
|
12
|
+
\-\-\-
|
13
|
+
title: A typical Tumblr post
|
14
|
+
state: queue
|
15
|
+
publish\-on: next tuesday
|
16
|
+
tags: unix, manpages
|
17
|
+
format: markdown
|
18
|
+
\-\-\-
|
19
|
+
This will create a *Regular* type of post on Tumblr.com. It's so easy.
|
20
|
+
That bit up at the top is called YAML frontmatter, and it just gives the
|
21
|
+
post a bit of metadata, so publishing options are more flexible.
|
22
|
+
They correspond to the Tumblr API. This post will be added to your Tumblr
|
23
|
+
queue, to be published next Tuesday, tagged with "unix" and "manpages",
|
24
|
+
and formatted in markdown.
|
25
|
+
.
|
26
|
+
.fi
|
27
|
+
.
|
28
|
+
.SH "DESCRIPTION"
|
29
|
+
Any file can be published to Tumblr.com as a \fIRegular\fR post, but if you add a bit of YAML frontmatter (<yaml.org>) to the file, you can tell Tumblr exactly what you want to do.
|
30
|
+
.
|
31
|
+
.P
|
32
|
+
YAML frontmatter beings with \fB\-\-\-\fR on a single line, followed by YAML, ending with another \fB\-\-\-\fR on a single line, e.g.
|
33
|
+
.
|
34
|
+
.IP "" 4
|
35
|
+
.
|
36
|
+
.nf
|
37
|
+
\-\-\-
|
38
|
+
type: quote
|
39
|
+
source: Billy Shakespeare
|
40
|
+
state: draft
|
41
|
+
tags: hamlet, shakespeare
|
42
|
+
\-\-\-
|
43
|
+
"To be or not to be."
|
44
|
+
.
|
45
|
+
.fi
|
46
|
+
.
|
47
|
+
.IP "" 0
|
48
|
+
.
|
49
|
+
.P
|
50
|
+
Understood YAML parameters are documented and taken from the Tumblr API: http://www.tumblr.com/docs/en/api#api_write
|
51
|
+
.
|
52
|
+
.SH "BASIC PARAMETERS"
|
53
|
+
These YAML parameters are available for all posts
|
54
|
+
.
|
55
|
+
.IP "\(bu" 4
|
56
|
+
\fBtype\fR:
|
57
|
+
\fBregular\fR, \fBphoto\fR, \fBlink\fR, \fBquote\fR, \fBconversation\fR, \fBvideo\fR, \fBaudio\fR
|
58
|
+
Will take a guess if omitted.
|
59
|
+
See \fIPOST\-TYPE SPECIFIC PARAMETERS\fR below.
|
60
|
+
.
|
61
|
+
.IP "\(bu" 4
|
62
|
+
\fBstate\fR:
|
63
|
+
\fBpublished\fR, \fBdraft\fR, \fBqueue\fR, \fBsubmission\fR
|
64
|
+
.
|
65
|
+
.IP "\(bu" 4
|
66
|
+
\fBformat\fR:
|
67
|
+
\fBhtml\fR or \fBmarkdown\fR
|
68
|
+
.
|
69
|
+
.IP "\(bu" 4
|
70
|
+
\fBtags\fR:
|
71
|
+
.
|
72
|
+
.br
|
73
|
+
Comma\-separated list of tags.
|
74
|
+
.
|
75
|
+
.IP "\(bu" 4
|
76
|
+
\fBdate\fR:
|
77
|
+
Post date.
|
78
|
+
.
|
79
|
+
.IP "\(bu" 4
|
80
|
+
\fBprivate\fR:
|
81
|
+
If the post should be marked private.
|
82
|
+
.
|
83
|
+
.IP "\(bu" 4
|
84
|
+
\fBslug\fR:
|
85
|
+
A custom string to appear in the post's url.
|
86
|
+
.
|
87
|
+
.IP "\(bu" 4
|
88
|
+
\fBgroup\fR:
|
89
|
+
ID for a secondary blog.
|
90
|
+
.
|
91
|
+
.IP "\(bu" 4
|
92
|
+
\fBgenerator\fR:
|
93
|
+
Short description of the publishing application.
|
94
|
+
.
|
95
|
+
.IP "\(bu" 4
|
96
|
+
\fBsend\-to\-twitter\fR:
|
97
|
+
Twitter status update to make if the tumblelog has enabled it.
|
98
|
+
.
|
99
|
+
.IP "\(bu" 4
|
100
|
+
\fBpublish\-on\fR:
|
101
|
+
If the post state is 'queue', publish on this date
|
102
|
+
.
|
103
|
+
.IP "" 0
|
104
|
+
.
|
105
|
+
.SH "POST\-TYPE SPECIFIC PARAMETERS"
|
106
|
+
These are parameters that are available for specific types of posts.
|
107
|
+
.
|
108
|
+
.TP
|
109
|
+
\fBregular\fR
|
110
|
+
\fBtitle\fR
|
111
|
+
.
|
112
|
+
.TP
|
113
|
+
\fBphoto\fR
|
114
|
+
\fBcaption\fR, \fBclick\-through\-url\fR
|
115
|
+
.
|
116
|
+
.TP
|
117
|
+
\fBquote\fR
|
118
|
+
\fBsource\fR
|
119
|
+
.
|
120
|
+
.TP
|
121
|
+
\fBlink\fR
|
122
|
+
\fBname\fR, \fBdescription\fR
|
123
|
+
.
|
124
|
+
.TP
|
125
|
+
\fBconversation\fR
|
126
|
+
\fBtitle\fR
|
127
|
+
.
|
128
|
+
.TP
|
129
|
+
\fBvideo\fR
|
130
|
+
\fBtitle\fR,\fBcaption\fR
|
131
|
+
.
|
132
|
+
.TP
|
133
|
+
\fBaudio\fR
|
134
|
+
\fBcaption\fR
|
135
|
+
.
|
136
|
+
.SH "SEE ALSO"
|
137
|
+
tumblr(1), markdown(5)
|
data/man/tumblr.5.html
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' value='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' value='Ronn/v0.4.1'>
|
6
|
+
<title>tumblr(5) -- tumblr posts in plaintext</title>
|
7
|
+
<style type='text/css'>
|
8
|
+
body {margin:0}
|
9
|
+
#man, #man code, #man pre, #man tt, #man kbd, #man samp {
|
10
|
+
font-family:consolas,monospace;
|
11
|
+
font-size:16px;
|
12
|
+
line-height:1.3;
|
13
|
+
color:#343331;
|
14
|
+
background:#fff; }
|
15
|
+
#man { max-width:89ex; text-align:justify; margin:0 25px 25px 25px }
|
16
|
+
#man h1, #man h2, #man h3 { color:#232221;clear:left }
|
17
|
+
#man h1 { font-size:28px; margin:15px 0 30px 0; text-align:center }
|
18
|
+
#man h2 { font-size:18px; margin-bottom:0; margin-top:10px; line-height:1.3; }
|
19
|
+
#man h3 { font-size:16px; margin:0 0 0 4ex; }
|
20
|
+
#man p, #man ul, #man ol, #man dl, #man pre { margin:0 0 18px 0; }
|
21
|
+
#man pre {
|
22
|
+
color:#333231;
|
23
|
+
background:#edeceb;
|
24
|
+
padding:5px 7px;
|
25
|
+
margin:0px 0 20px 0;
|
26
|
+
border-left:2ex solid #ddd}
|
27
|
+
#man pre + h2, #man pre + h3 {
|
28
|
+
margin-top:22px;
|
29
|
+
}
|
30
|
+
#man h2 + pre, #man h3 + pre {
|
31
|
+
margin-top:5px;
|
32
|
+
}
|
33
|
+
#man > p, #man > ul, #man > ol, #man > dl, #man > pre { margin-left:8ex; }
|
34
|
+
#man dt { margin:0; clear:left }
|
35
|
+
#man dt.flush { float:left; width:8ex }
|
36
|
+
#man dd { margin:0 0 0 9ex }
|
37
|
+
#man code, #man strong, #man b { font-weight:bold; color:#131211; }
|
38
|
+
#man pre code { font-weight:normal; color:#232221; background:inherit }
|
39
|
+
#man em, var, u {
|
40
|
+
font-style:normal; color:#333231; border-bottom:1px solid #999; }
|
41
|
+
#man h1.man-title { display:none; }
|
42
|
+
#man ol.man, #man ol.man li { margin:2px 0 10px 0; padding:0;
|
43
|
+
float:left; width:33%; list-style-type:none;
|
44
|
+
text-transform:uppercase; font-size:18px; color:#999;
|
45
|
+
letter-spacing:1px;}
|
46
|
+
#man ol.man { width:100%; }
|
47
|
+
#man ol.man li.tl { text-align:left }
|
48
|
+
#man ol.man li.tc { text-align:center;letter-spacing:4px }
|
49
|
+
#man ol.man li.tr { text-align:right }
|
50
|
+
#man ol.man a { color:#999 }
|
51
|
+
#man ol.man a:hover { color:#333231 }
|
52
|
+
</style>
|
53
|
+
</head>
|
54
|
+
<body>
|
55
|
+
<div id='man'>
|
56
|
+
|
57
|
+
<h1 class='man-title'>tumblr(5)</h1>
|
58
|
+
|
59
|
+
<ol class='head man'>
|
60
|
+
<li class='tl'>tumblr(5)</li>
|
61
|
+
<li class='tc'>Tumblr Manual</li>
|
62
|
+
<li class='tr'>tumblr(5)</li>
|
63
|
+
</ol>
|
64
|
+
|
65
|
+
<h2 id='NAME'>NAME</h2>
|
66
|
+
<p><code>tumblr</code> -- tumblr posts in plaintext</p>
|
67
|
+
|
68
|
+
<h2>SYNOPSIS</h2>
|
69
|
+
|
70
|
+
<pre><code>---
|
71
|
+
title: A typical Tumblr post
|
72
|
+
state: queue
|
73
|
+
publish-on: next tuesday
|
74
|
+
tags: unix, manpages
|
75
|
+
format: markdown
|
76
|
+
---
|
77
|
+
|
78
|
+
This will create a *Regular* type of post on Tumblr.com. It's so easy.
|
79
|
+
That bit up at the top is called YAML frontmatter, and it just gives the
|
80
|
+
post a bit of metadata, so publishing options are more flexible.
|
81
|
+
They correspond to the Tumblr API. This post will be added to your Tumblr
|
82
|
+
queue, to be published next Tuesday, tagged with "unix" and "manpages",
|
83
|
+
and formatted in markdown.
|
84
|
+
</code></pre>
|
85
|
+
|
86
|
+
<h2>DESCRIPTION</h2>
|
87
|
+
|
88
|
+
<p>Any file can be published to Tumblr.com as a <i>Regular</i> post, but if you add a bit of YAML frontmatter (<yaml.org>) to the file, you can tell Tumblr exactly what you want to do.</p>
|
89
|
+
|
90
|
+
<p>YAML frontmatter beings with <code>---</code> on a single line, followed by YAML, ending with another <code>---</code> on a single line, e.g.</p>
|
91
|
+
|
92
|
+
<pre><code>---
|
93
|
+
type: quote
|
94
|
+
source: Billy Shakespeare
|
95
|
+
state: draft
|
96
|
+
tags: hamlet, shakespeare
|
97
|
+
---
|
98
|
+
"To be or not to be."
|
99
|
+
</code></pre>
|
100
|
+
|
101
|
+
<p>Understood YAML parameters are documented and taken from the Tumblr API: http://www.tumblr.com/docs/en/api#api_write</p>
|
102
|
+
|
103
|
+
<h2>BASIC PARAMETERS</h2>
|
104
|
+
|
105
|
+
<p>These YAML parameters are available for all posts</p>
|
106
|
+
|
107
|
+
<ul>
|
108
|
+
<li><p><code>type</code>:
|
109
|
+
<code>regular</code>, <code>photo</code>, <code>link</code>, <code>quote</code>, <code>conversation</code>, <code>video</code>, <code>audio</code>
|
110
|
+
Will take a guess if omitted.
|
111
|
+
See <em>POST-TYPE SPECIFIC PARAMETERS</em> below.</p></li>
|
112
|
+
<li><p><code>state</code>:
|
113
|
+
<code>published</code>, <code>draft</code>, <code>queue</code>, <code>submission</code></p></li>
|
114
|
+
<li><p><code>format</code>:
|
115
|
+
<code>html</code> or <code>markdown</code></p></li>
|
116
|
+
<li><p><code>tags</code>: <br />
|
117
|
+
Comma-separated list of tags.</p></li>
|
118
|
+
<li><p><code>date</code>:
|
119
|
+
Post date.</p></li>
|
120
|
+
<li><p><code>private</code>:
|
121
|
+
If the post should be marked private.</p></li>
|
122
|
+
<li><p><code>slug</code>:
|
123
|
+
A custom string to appear in the post's url.</p></li>
|
124
|
+
<li><p><code>group</code>:
|
125
|
+
ID for a secondary blog.</p></li>
|
126
|
+
<li><p><code>generator</code>:
|
127
|
+
Short description of the publishing application.</p></li>
|
128
|
+
<li><p><code>send-to-twitter</code>:
|
129
|
+
Twitter status update to make if the tumblelog has enabled it.</p></li>
|
130
|
+
<li><p><code>publish-on</code>:
|
131
|
+
If the post state is 'queue', publish on this date</p></li>
|
132
|
+
</ul>
|
133
|
+
|
134
|
+
|
135
|
+
<h2>POST-TYPE SPECIFIC PARAMETERS</h2>
|
136
|
+
|
137
|
+
<p>These are parameters that are available for specific types of posts.</p>
|
138
|
+
|
139
|
+
<dl>
|
140
|
+
<dt class="flush"><code>regular</code></dt><dd><p> <code>title</code></p></dd>
|
141
|
+
<dt class="flush"><code>photo</code></dt><dd><p> <code>caption</code>, <code>click-through-url</code></p></dd>
|
142
|
+
<dt class="flush"><code>quote</code></dt><dd><p> <code>source</code></p></dd>
|
143
|
+
<dt class="flush"><code>link</code></dt><dd><p> <code>name</code>, <code>description</code></p></dd>
|
144
|
+
<dt><code>conversation</code></dt><dd><p> <code>title</code></p></dd>
|
145
|
+
<dt class="flush"><code>video</code></dt><dd><p> <code>title</code>,<code>caption</code></p></dd>
|
146
|
+
<dt class="flush"><code>audio</code></dt><dd><p> <code>caption</code></p></dd>
|
147
|
+
</dl>
|
148
|
+
|
149
|
+
|
150
|
+
<h2>SEE ALSO</h2>
|
151
|
+
|
152
|
+
<p>tumblr(1), markdown(5)</p>
|
153
|
+
|
154
|
+
|
155
|
+
<ol class='foot man'>
|
156
|
+
<li class='tl'>Mark Wunsch</li>
|
157
|
+
<li class='tc'>March 2010</li>
|
158
|
+
<li class='tr'>tumblr(5)</li>
|
159
|
+
</ol>
|
160
|
+
|
161
|
+
</div>
|
162
|
+
</body>
|
163
|
+
</html>
|
data/man/tumblr.5.ronn
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
tumblr(5) -- tumblr posts in plaintext
|
2
|
+
======================================
|
3
|
+
|
4
|
+
## SYNOPSIS
|
5
|
+
|
6
|
+
---
|
7
|
+
title: A typical Tumblr post
|
8
|
+
state: queue
|
9
|
+
publish-on: next tuesday
|
10
|
+
tags: unix, manpages
|
11
|
+
format: markdown
|
12
|
+
---
|
13
|
+
|
14
|
+
This will create a *Regular* type of post on Tumblr.com. It's so easy.
|
15
|
+
That bit up at the top is called YAML frontmatter, and it just gives the
|
16
|
+
post a bit of metadata, so publishing options are more flexible.
|
17
|
+
They correspond to the Tumblr API. This post will be added to your Tumblr
|
18
|
+
queue, to be published next Tuesday, tagged with "unix" and "manpages",
|
19
|
+
and formatted in markdown.
|
20
|
+
|
21
|
+
## DESCRIPTION
|
22
|
+
|
23
|
+
Any file can be published to Tumblr.com as a <i>Regular</i> post, but if you add a bit of YAML frontmatter (<yaml.org>) to the file, you can tell Tumblr exactly what you want to do.
|
24
|
+
|
25
|
+
YAML frontmatter beings with `---` on a single line, followed by YAML, ending with another `---` on a single line, e.g.
|
26
|
+
|
27
|
+
---
|
28
|
+
type: quote
|
29
|
+
source: Billy Shakespeare
|
30
|
+
state: draft
|
31
|
+
tags: hamlet, shakespeare
|
32
|
+
---
|
33
|
+
"To be or not to be."
|
34
|
+
|
35
|
+
Understood YAML parameters are documented and taken from the Tumblr API: http://www.tumblr.com/docs/en/api#api_write
|
36
|
+
|
37
|
+
## BASIC PARAMETERS
|
38
|
+
|
39
|
+
These YAML parameters are available for all posts
|
40
|
+
|
41
|
+
* `type`:
|
42
|
+
`regular`, `photo`, `link`, `quote`, `conversation`, `video`, `audio`
|
43
|
+
Will take a guess if omitted.
|
44
|
+
See _POST-TYPE SPECIFIC PARAMETERS_ below.
|
45
|
+
|
46
|
+
* `state`:
|
47
|
+
`published`, `draft`, `queue`, `submission`
|
48
|
+
|
49
|
+
* `format`:
|
50
|
+
`html` or `markdown`
|
51
|
+
|
52
|
+
* `tags`:
|
53
|
+
Comma-separated list of tags.
|
54
|
+
|
55
|
+
* `date`:
|
56
|
+
Post date.
|
57
|
+
|
58
|
+
* `private`:
|
59
|
+
If the post should be marked private.
|
60
|
+
|
61
|
+
* `slug`:
|
62
|
+
A custom string to appear in the post's url.
|
63
|
+
|
64
|
+
* `group`:
|
65
|
+
ID for a secondary blog.
|
66
|
+
|
67
|
+
* `generator`:
|
68
|
+
Short description of the publishing application.
|
69
|
+
|
70
|
+
* `send-to-twitter`:
|
71
|
+
Twitter status update to make if the tumblelog has enabled it.
|
72
|
+
|
73
|
+
* `publish-on`:
|
74
|
+
If the post state is 'queue', publish on this date
|
75
|
+
|
76
|
+
## POST-TYPE SPECIFIC PARAMETERS
|
77
|
+
|
78
|
+
These are parameters that are available for specific types of posts.
|
79
|
+
|
80
|
+
* `regular`:
|
81
|
+
`title`
|
82
|
+
|
83
|
+
* `photo`:
|
84
|
+
`caption`, `click-through-url`
|
85
|
+
|
86
|
+
* `quote`:
|
87
|
+
`source`
|
88
|
+
|
89
|
+
* `link`:
|
90
|
+
`name`, `description`
|
91
|
+
|
92
|
+
* `conversation`:
|
93
|
+
`title`
|
94
|
+
|
95
|
+
* `video`:
|
96
|
+
`title`,`caption`
|
97
|
+
|
98
|
+
* `audio`:
|
99
|
+
`caption`
|
100
|
+
|
101
|
+
## SEE ALSO
|
102
|
+
|
103
|
+
tumblr(1), markdown(5)
|
104
|
+
|
data/test/test_tumblr.rb
CHANGED
@@ -109,6 +109,15 @@ link
|
|
109
109
|
assert tumbl.authenticate.is_a? Weary::Request
|
110
110
|
assert_equal auth.uri, tumbl.authenticate.uri
|
111
111
|
end
|
112
|
+
|
113
|
+
test 'executes' do
|
114
|
+
cred = {:email => 'test@testermcgee.com', :password => 'dontrevealmysecrets'}
|
115
|
+
response = VCR.with_cassette('write/write') do
|
116
|
+
Tumblr.execute(cred, 'Hello World.')
|
117
|
+
end
|
118
|
+
assert response.is_a? Weary::Response
|
119
|
+
assert response.success?
|
120
|
+
end
|
112
121
|
end
|
113
122
|
|
114
123
|
describe 'Reader' do
|
data/tumblr-rb.gemspec
CHANGED
@@ -5,13 +5,15 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tumblr-rb}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mark Wunsch"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-10}
|
13
|
+
s.default_executable = %q{tumblr}
|
13
14
|
s.description = %q{Ruby library and command line utility to work with the Tumblr Blogging Platform, powered by Weary.}
|
14
15
|
s.email = %q{mark@markwunsch.com}
|
16
|
+
s.executables = ["tumblr"]
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"LICENSE",
|
17
19
|
"README.md"
|
@@ -23,6 +25,7 @@ Gem::Specification.new do |s|
|
|
23
25
|
"LICENSE",
|
24
26
|
"README.md",
|
25
27
|
"Rakefile",
|
28
|
+
"bin/tumblr",
|
26
29
|
"lib/tumblr.rb",
|
27
30
|
"lib/tumblr/authenticator.rb",
|
28
31
|
"lib/tumblr/post.rb",
|
@@ -35,6 +38,12 @@ Gem::Specification.new do |s|
|
|
35
38
|
"lib/tumblr/post/video.rb",
|
36
39
|
"lib/tumblr/reader.rb",
|
37
40
|
"lib/tumblr/writer.rb",
|
41
|
+
"man/tumblr.1",
|
42
|
+
"man/tumblr.1.html",
|
43
|
+
"man/tumblr.1.ronn",
|
44
|
+
"man/tumblr.5",
|
45
|
+
"man/tumblr.5.html",
|
46
|
+
"man/tumblr.5.ronn",
|
38
47
|
"test/fixtures/vcr_cassettes/authenticate/authenticate.yml",
|
39
48
|
"test/fixtures/vcr_cassettes/read/authenticated.yml",
|
40
49
|
"test/fixtures/vcr_cassettes/read/authentication_failure.yml",
|
@@ -63,13 +72,16 @@ Gem::Specification.new do |s|
|
|
63
72
|
|
64
73
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
65
74
|
s.add_runtime_dependency(%q<weary>, [">= 0.7.1"])
|
75
|
+
s.add_runtime_dependency(%q<highline>, [">= 1.5.2"])
|
66
76
|
s.add_development_dependency(%q<bundler>, [">= 0.9.7"])
|
67
77
|
else
|
68
78
|
s.add_dependency(%q<weary>, [">= 0.7.1"])
|
79
|
+
s.add_dependency(%q<highline>, [">= 1.5.2"])
|
69
80
|
s.add_dependency(%q<bundler>, [">= 0.9.7"])
|
70
81
|
end
|
71
82
|
else
|
72
83
|
s.add_dependency(%q<weary>, [">= 0.7.1"])
|
84
|
+
s.add_dependency(%q<highline>, [">= 1.5.2"])
|
73
85
|
s.add_dependency(%q<bundler>, [">= 0.9.7"])
|
74
86
|
end
|
75
87
|
end
|
metadata
CHANGED
@@ -3,10 +3,10 @@ name: tumblr-rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
|
-
- 0
|
7
|
-
- 1
|
8
6
|
- 1
|
9
|
-
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 1.0.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mark Wunsch
|
@@ -14,8 +14,8 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
18
|
-
default_executable:
|
17
|
+
date: 2010-03-10 00:00:00 -05:00
|
18
|
+
default_executable: tumblr
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: weary
|
@@ -32,9 +32,23 @@ dependencies:
|
|
32
32
|
type: :runtime
|
33
33
|
version_requirements: *id001
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: highline
|
36
36
|
prerelease: false
|
37
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 5
|
44
|
+
- 2
|
45
|
+
version: 1.5.2
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: bundler
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
38
52
|
requirements:
|
39
53
|
- - ">="
|
40
54
|
- !ruby/object:Gem::Version
|
@@ -44,11 +58,11 @@ dependencies:
|
|
44
58
|
- 7
|
45
59
|
version: 0.9.7
|
46
60
|
type: :development
|
47
|
-
version_requirements: *
|
61
|
+
version_requirements: *id003
|
48
62
|
description: Ruby library and command line utility to work with the Tumblr Blogging Platform, powered by Weary.
|
49
63
|
email: mark@markwunsch.com
|
50
|
-
executables:
|
51
|
-
|
64
|
+
executables:
|
65
|
+
- tumblr
|
52
66
|
extensions: []
|
53
67
|
|
54
68
|
extra_rdoc_files:
|
@@ -61,6 +75,7 @@ files:
|
|
61
75
|
- LICENSE
|
62
76
|
- README.md
|
63
77
|
- Rakefile
|
78
|
+
- bin/tumblr
|
64
79
|
- lib/tumblr.rb
|
65
80
|
- lib/tumblr/authenticator.rb
|
66
81
|
- lib/tumblr/post.rb
|
@@ -73,6 +88,12 @@ files:
|
|
73
88
|
- lib/tumblr/post/video.rb
|
74
89
|
- lib/tumblr/reader.rb
|
75
90
|
- lib/tumblr/writer.rb
|
91
|
+
- man/tumblr.1
|
92
|
+
- man/tumblr.1.html
|
93
|
+
- man/tumblr.1.ronn
|
94
|
+
- man/tumblr.5
|
95
|
+
- man/tumblr.5.html
|
96
|
+
- man/tumblr.5.ronn
|
76
97
|
- test/fixtures/vcr_cassettes/authenticate/authenticate.yml
|
77
98
|
- test/fixtures/vcr_cassettes/read/authenticated.yml
|
78
99
|
- test/fixtures/vcr_cassettes/read/authentication_failure.yml
|