automatic 13.4.1 → 13.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -0
- data/README.md +3 -3
- data/Rakefile +6 -3
- data/VERSION +1 -1
- data/automatic.gemspec +29 -3
- data/bin/automatic +4 -1
- data/doc/ChangeLog +15 -1
- data/doc/PLUGINS +107 -0
- data/doc/PLUGINS.ja +107 -0
- data/doc/README +4 -4
- data/doc/README.ja +4 -4
- data/lib/automatic/feed_parser.rb +2 -2
- data/lib/automatic.rb +2 -2
- data/plugins/filter/ignore.rb +8 -0
- data/plugins/filter/one.rb +36 -0
- data/plugins/filter/rand.rb +28 -0
- data/plugins/publish/pocket.rb +44 -0
- data/plugins/publish/twitter.rb +57 -0
- data/plugins/store/target_link.rb +10 -9
- data/plugins/subscription/google_reader_star.rb +1 -1
- data/plugins/subscription/text.rb +85 -0
- data/plugins/subscription/weather.rb +66 -0
- data/script/build +3 -1
- data/spec/lib/automatic_spec.rb +2 -2
- data/spec/plugins/filter/ignore_spec.rb +49 -0
- data/spec/plugins/filter/one_spec.rb +71 -0
- data/spec/plugins/filter/rand_spec.rb +52 -0
- data/spec/plugins/publish/pocket_spec.rb +51 -0
- data/spec/plugins/publish/twitter_spec.rb +35 -0
- data/spec/plugins/store/target_link_spec.rb +1 -1
- data/spec/plugins/subscription/feed_spec.rb +2 -2
- data/spec/plugins/subscription/text_spec.rb +67 -0
- data/spec/plugins/subscription/weather_spec.rb +57 -0
- data/spec/spec_helper.rb +1 -1
- data/test/integration/test_add_pocket.yml +23 -0
- data/test/integration/test_one.yml +22 -0
- data/test/integration/test_rand.yml +20 -0
- data/test/integration/test_text2feed.yml +27 -0
- data/test/integration/test_weather.yml +18 -0
- metadata +68 -3
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -28,7 +28,7 @@ $ automatic -c ~/.automatic/config/example/feed2console.yml
|
|
28
28
|
|
29
29
|
``` html
|
30
30
|
[Development]
|
31
|
-
$ git clone git://github.com/
|
31
|
+
$ git clone git://github.com/automaticruby/automaticruby.git
|
32
32
|
$ cd automaticruby
|
33
33
|
$ bundle install --path vendor/gems
|
34
34
|
$ bin/automatic scaffold
|
@@ -85,11 +85,11 @@ We need your help.
|
|
85
85
|
|
86
86
|
**Repository**
|
87
87
|
|
88
|
-
+ https://github.com/
|
88
|
+
+ https://github.com/automaticruby/automaticruby
|
89
89
|
|
90
90
|
**Issues**
|
91
91
|
|
92
|
-
+ https://github.com/
|
92
|
+
+ https://github.com/automaticruby/automaticruby/issues
|
93
93
|
|
94
94
|
**RubyFroge**
|
95
95
|
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
|
@@ -23,11 +23,13 @@ namespace :spec do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
task :default => :spec
|
27
|
+
|
26
28
|
require 'jeweler'
|
27
29
|
Jeweler::Tasks.new do |gem|
|
28
30
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
29
31
|
gem.name = "automatic"
|
30
|
-
gem.homepage = "http://github.com/
|
32
|
+
gem.homepage = "http://github.com/automaticruby/automaticruby"
|
31
33
|
gem.license = "GPL"
|
32
34
|
gem.summary = %Q{Automatic Ruby}
|
33
35
|
gem.description = %Q{Ruby General Automation Framework}
|
@@ -35,9 +37,10 @@ Jeweler::Tasks.new do |gem|
|
|
35
37
|
gem.authors = ["id774"]
|
36
38
|
# dependencies defined in Gemfile
|
37
39
|
end
|
40
|
+
|
38
41
|
Jeweler::RubygemsDotOrgTasks.new
|
39
42
|
|
40
|
-
|
43
|
+
if RUBY_VERSION >= '1.9.0'
|
41
44
|
desc "Run RSpec code examples with simplecov"
|
42
45
|
task :simplecov do
|
43
46
|
ENV['COVERAGE'] = "on"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
13.
|
1
|
+
13.5.0
|
data/automatic.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "automatic"
|
8
|
-
s.version = "13.
|
8
|
+
s.version = "13.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["id774"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-05-18"
|
13
13
|
s.description = "Ruby General Automation Framework"
|
14
14
|
s.email = "idnanashi@gmail.com"
|
15
15
|
s.executables = ["automatic"]
|
@@ -46,6 +46,8 @@ Gem::Specification.new do |s|
|
|
46
46
|
"plugins/filter/ignore.rb",
|
47
47
|
"plugins/filter/image.rb",
|
48
48
|
"plugins/filter/image_source.rb",
|
49
|
+
"plugins/filter/one.rb",
|
50
|
+
"plugins/filter/rand.rb",
|
49
51
|
"plugins/filter/sort.rb",
|
50
52
|
"plugins/filter/tumblr_resize.rb",
|
51
53
|
"plugins/notify/ikachan.rb",
|
@@ -54,7 +56,9 @@ Gem::Specification.new do |s|
|
|
54
56
|
"plugins/publish/hatena_bookmark.rb",
|
55
57
|
"plugins/publish/instapaper.rb",
|
56
58
|
"plugins/publish/mail.rb",
|
59
|
+
"plugins/publish/pocket.rb",
|
57
60
|
"plugins/publish/smtp.rb",
|
61
|
+
"plugins/publish/twitter.rb",
|
58
62
|
"plugins/store/database.rb",
|
59
63
|
"plugins/store/full_text.rb",
|
60
64
|
"plugins/store/permalink.rb",
|
@@ -62,8 +66,10 @@ Gem::Specification.new do |s|
|
|
62
66
|
"plugins/subscription/feed.rb",
|
63
67
|
"plugins/subscription/google_reader_star.rb",
|
64
68
|
"plugins/subscription/link.rb",
|
69
|
+
"plugins/subscription/text.rb",
|
65
70
|
"plugins/subscription/tumblr.rb",
|
66
71
|
"plugins/subscription/twitter.rb",
|
72
|
+
"plugins/subscription/weather.rb",
|
67
73
|
"script/build",
|
68
74
|
"spec/fixtures/sampleRecipe.yml",
|
69
75
|
"spec/lib/automatic/pipeline_spec.rb",
|
@@ -75,6 +81,8 @@ Gem::Specification.new do |s|
|
|
75
81
|
"spec/plugins/filter/ignore_spec.rb",
|
76
82
|
"spec/plugins/filter/image_source_spec.rb",
|
77
83
|
"spec/plugins/filter/image_spec.rb",
|
84
|
+
"spec/plugins/filter/one_spec.rb",
|
85
|
+
"spec/plugins/filter/rand_spec.rb",
|
78
86
|
"spec/plugins/filter/sort_spec.rb",
|
79
87
|
"spec/plugins/filter/tumblr_resize_spec.rb",
|
80
88
|
"spec/plugins/notify/ikachan_spec.rb",
|
@@ -83,20 +91,25 @@ Gem::Specification.new do |s|
|
|
83
91
|
"spec/plugins/publish/hatena_bookmark_spec.rb",
|
84
92
|
"spec/plugins/publish/instapaper_spec.rb",
|
85
93
|
"spec/plugins/publish/mail_spec.rb",
|
94
|
+
"spec/plugins/publish/pocket_spec.rb",
|
86
95
|
"spec/plugins/publish/smtp_spec.rb",
|
96
|
+
"spec/plugins/publish/twitter_spec.rb",
|
87
97
|
"spec/plugins/store/full_text_spec.rb",
|
88
98
|
"spec/plugins/store/permalink_spec.rb",
|
89
99
|
"spec/plugins/store/target_link_spec.rb",
|
90
100
|
"spec/plugins/subscription/feed_spec.rb",
|
91
101
|
"spec/plugins/subscription/google_reader_star_spec.rb",
|
92
102
|
"spec/plugins/subscription/link_spec.rb",
|
103
|
+
"spec/plugins/subscription/text_spec.rb",
|
93
104
|
"spec/plugins/subscription/tumblr_spec.rb",
|
94
105
|
"spec/plugins/subscription/twitter_spec.rb",
|
106
|
+
"spec/plugins/subscription/weather_spec.rb",
|
95
107
|
"spec/spec_helper.rb",
|
96
108
|
"spec/user_dir/plugins/store/mock.rb",
|
97
109
|
"test/fixtures/sampleOPML.xml",
|
98
110
|
"test/integration/test_absoluteurl.yml",
|
99
111
|
"test/integration/test_activerecord.yml",
|
112
|
+
"test/integration/test_add_pocket.yml",
|
100
113
|
"test/integration/test_fulltext.yml",
|
101
114
|
"test/integration/test_googlealert.yml",
|
102
115
|
"test/integration/test_googlestar.yml",
|
@@ -106,12 +119,16 @@ Gem::Specification.new do |s|
|
|
106
119
|
"test/integration/test_image2local.yml",
|
107
120
|
"test/integration/test_instapaper.yml",
|
108
121
|
"test/integration/test_link2local.yml",
|
122
|
+
"test/integration/test_one.yml",
|
123
|
+
"test/integration/test_rand.yml",
|
109
124
|
"test/integration/test_sort.yml",
|
110
125
|
"test/integration/test_svnlog.yml",
|
126
|
+
"test/integration/test_text2feed.yml",
|
111
127
|
"test/integration/test_tumblr2local.yml",
|
128
|
+
"test/integration/test_weather.yml",
|
112
129
|
"vendor/.gitkeep"
|
113
130
|
]
|
114
|
-
s.homepage = "http://github.com/
|
131
|
+
s.homepage = "http://github.com/automaticruby/automaticruby"
|
115
132
|
s.licenses = ["GPL"]
|
116
133
|
s.require_paths = ["lib"]
|
117
134
|
s.rubygems_version = "1.8.24"
|
@@ -130,6 +147,9 @@ Gem::Specification.new do |s|
|
|
130
147
|
s.add_runtime_dependency(%q<xml-simple>, [">= 0"])
|
131
148
|
s.add_runtime_dependency(%q<feedbag>, [">= 0"])
|
132
149
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
150
|
+
s.add_runtime_dependency(%q<twitter>, [">= 0"])
|
151
|
+
s.add_runtime_dependency(%q<weather_hacker>, [">= 0"])
|
152
|
+
s.add_runtime_dependency(%q<pocket-ruby>, [">= 0"])
|
133
153
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
134
154
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
135
155
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
@@ -143,6 +163,9 @@ Gem::Specification.new do |s|
|
|
143
163
|
s.add_dependency(%q<xml-simple>, [">= 0"])
|
144
164
|
s.add_dependency(%q<feedbag>, [">= 0"])
|
145
165
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
166
|
+
s.add_dependency(%q<twitter>, [">= 0"])
|
167
|
+
s.add_dependency(%q<weather_hacker>, [">= 0"])
|
168
|
+
s.add_dependency(%q<pocket-ruby>, [">= 0"])
|
146
169
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
147
170
|
s.add_dependency(%q<bundler>, [">= 0"])
|
148
171
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
@@ -157,6 +180,9 @@ Gem::Specification.new do |s|
|
|
157
180
|
s.add_dependency(%q<xml-simple>, [">= 0"])
|
158
181
|
s.add_dependency(%q<feedbag>, [">= 0"])
|
159
182
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
183
|
+
s.add_dependency(%q<twitter>, [">= 0"])
|
184
|
+
s.add_dependency(%q<weather_hacker>, [">= 0"])
|
185
|
+
s.add_dependency(%q<pocket-ruby>, [">= 0"])
|
160
186
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
161
187
|
s.add_dependency(%q<bundler>, [">= 0"])
|
162
188
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
data/bin/automatic
CHANGED
@@ -100,7 +100,10 @@ parser = OptionParser.new {|parser|
|
|
100
100
|
parser.version = Automatic.const_get(:VERSION)
|
101
101
|
parser.banner = "Automatic #{parser.version}
|
102
102
|
Usage: automatic [options] [subcommand]"
|
103
|
-
parser.separator "SubCommands:
|
103
|
+
parser.separator "SubCommands:"
|
104
|
+
subparsers.keys.each {|key|
|
105
|
+
parser.separator " " + key
|
106
|
+
}
|
104
107
|
#{subparsers.keys.join(", ")}"
|
105
108
|
parser.separator "Options:"
|
106
109
|
parser.on('-c', '--config FILE', String,
|
data/doc/ChangeLog
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
=== 13.5.0 / 2013-05-18
|
2
|
+
|
3
|
+
* Added new plugins.
|
4
|
+
|
5
|
+
* Subscription::Text
|
6
|
+
* Subscription::Weather
|
7
|
+
* Filter::One
|
8
|
+
* Filter::Rand
|
9
|
+
* Pulish::Twitter
|
10
|
+
* Pulish::Pocket
|
11
|
+
|
12
|
+
* Move repository from id774/automaticruby to automaticruby/automaticruby.
|
13
|
+
|
14
|
+
|
1
15
|
=== 13.4.1 / 2013-04-10
|
2
16
|
|
3
17
|
* Command automatic-config merged into automatic.
|
@@ -48,7 +62,7 @@
|
|
48
62
|
|
49
63
|
* Bug fix
|
50
64
|
|
51
|
-
* It should be considered the case of the feed link including nil
|
65
|
+
* It should be considered the case of the feed link including nil.
|
52
66
|
|
53
67
|
|
54
68
|
=== 12.9.0 / 2012-09-18
|
data/doc/PLUGINS
CHANGED
@@ -94,6 +94,47 @@ SubscriptionTwitter
|
|
94
94
|
retry: RETRY_COUNT
|
95
95
|
|
96
96
|
|
97
|
+
SubscriptionText
|
98
|
+
----------------
|
99
|
+
[Path]
|
100
|
+
/plugins/subscription/text.rb
|
101
|
+
|
102
|
+
[Abstract]
|
103
|
+
Create new feeds from urls, titles, feeds on text.
|
104
|
+
|
105
|
+
[Syntax]
|
106
|
+
- module: SubscriptionText
|
107
|
+
config:
|
108
|
+
titles:
|
109
|
+
- 'title'
|
110
|
+
urls:
|
111
|
+
- 'url'
|
112
|
+
feeds:
|
113
|
+
-
|
114
|
+
title: 'title'
|
115
|
+
url: 'url'
|
116
|
+
-
|
117
|
+
title: 'title'
|
118
|
+
url: 'url'
|
119
|
+
|
120
|
+
|
121
|
+
SubscriptionWeather
|
122
|
+
-------------------
|
123
|
+
[Path]
|
124
|
+
/plugins/subscription/weather.rb
|
125
|
+
|
126
|
+
[Abstract]
|
127
|
+
Subscribe weather (using gem weather_hacker) by zipcode.
|
128
|
+
|
129
|
+
[Syntax]
|
130
|
+
- module: SubscriptionWeather
|
131
|
+
config:
|
132
|
+
zipcode: ZIPCODE (ex. 166-0003)
|
133
|
+
day: DAY (ex. 'today', 'tomorrow')
|
134
|
+
interval: INTERVAL_FOR_SCRAPING (in seconds.)
|
135
|
+
retry: RETRY_COUNT
|
136
|
+
|
137
|
+
|
97
138
|
FilterSort
|
98
139
|
----------
|
99
140
|
[Path]
|
@@ -154,6 +195,32 @@ FilterImageSource
|
|
154
195
|
- module: FilterImageSource
|
155
196
|
|
156
197
|
|
198
|
+
FilterOne
|
199
|
+
---------
|
200
|
+
[Path]
|
201
|
+
/plugins/filter/one.rb
|
202
|
+
|
203
|
+
[Abstract]
|
204
|
+
Select a item from items.
|
205
|
+
|
206
|
+
[Syntax]
|
207
|
+
- module: FilterOne
|
208
|
+
config:
|
209
|
+
pick: last (If none, pick the first item.)
|
210
|
+
|
211
|
+
|
212
|
+
FilterRand
|
213
|
+
----------
|
214
|
+
[Path]
|
215
|
+
/plugins/filter/rand.rb
|
216
|
+
|
217
|
+
[Abstract]
|
218
|
+
Randomize the array of the feed items.
|
219
|
+
|
220
|
+
[Syntax]
|
221
|
+
- module: FilterRand
|
222
|
+
|
223
|
+
|
157
224
|
FilterFullFeed
|
158
225
|
--------------
|
159
226
|
[Path]
|
@@ -279,6 +346,46 @@ PublishHatenaBookmark
|
|
279
346
|
interval: INTERVAL_FOR_BOOKMARK (in seconds.)
|
280
347
|
|
281
348
|
|
349
|
+
PublishTwitter
|
350
|
+
--------------
|
351
|
+
[Path]
|
352
|
+
/plugins/publish/twitter.rb
|
353
|
+
|
354
|
+
[Abstract]
|
355
|
+
Publish to twitter.
|
356
|
+
|
357
|
+
[Syntax]
|
358
|
+
- module: PublishTwitter
|
359
|
+
config:
|
360
|
+
consumer_key: 'your_consumer_key'
|
361
|
+
consumer_secret: 'your_consumer_secret'
|
362
|
+
oauth_token: 'your_oauth_token'
|
363
|
+
oauth_token_secret: 'your_oauth_token_secret'
|
364
|
+
tweet_tmp: 'tweet text {link}'
|
365
|
+
interval: INTERVAL_FOR_RETRY (in seconds.)
|
366
|
+
retry: RETRY_COUNT
|
367
|
+
|
368
|
+
|
369
|
+
PublishPocket
|
370
|
+
-----------------
|
371
|
+
[Path]
|
372
|
+
/plugins/publish/pocket.rb
|
373
|
+
|
374
|
+
[Abstract]
|
375
|
+
Register an appointment to Pocket.
|
376
|
+
|
377
|
+
[Description]
|
378
|
+
Submission to Pocket API. (using gem pocket-ruby)
|
379
|
+
|
380
|
+
[Syntax]
|
381
|
+
- module: PublishPocket
|
382
|
+
config:
|
383
|
+
consumer_key: CONSUMER_KEY
|
384
|
+
access_token: ACCESS_TOKEN
|
385
|
+
interval: INTERVAL_FOR_RETRY (in seconds.)
|
386
|
+
retry: RETRY_COUNT
|
387
|
+
|
388
|
+
|
282
389
|
PublishInstapaper
|
283
390
|
-----------------
|
284
391
|
[Path]
|
data/doc/PLUGINS.ja
CHANGED
@@ -94,6 +94,47 @@ SubscriptionTwitter
|
|
94
94
|
retry: エラー時のリトライ回数 (回数, 省略時 0)
|
95
95
|
|
96
96
|
|
97
|
+
SubscriptionWeather
|
98
|
+
-------------------
|
99
|
+
[パス]
|
100
|
+
/plugins/subscription/weather.rb
|
101
|
+
|
102
|
+
[概要]
|
103
|
+
与えられた郵便番号に基づいて天気情報を取得する
|
104
|
+
|
105
|
+
[レシピ記法]
|
106
|
+
- module: SubscriptionWeather
|
107
|
+
config:
|
108
|
+
zipcode: 郵便番号
|
109
|
+
day: ('today' もしくは 'tomorrow')
|
110
|
+
interval: スクレイピングの間隔 (秒数, 省略可)
|
111
|
+
retry: エラー時のリトライ回数 (回数, 省略時 0)
|
112
|
+
|
113
|
+
|
114
|
+
SubscriptionText
|
115
|
+
----------------
|
116
|
+
[パス]
|
117
|
+
/plugins/subscription/text.rb
|
118
|
+
|
119
|
+
[概要]
|
120
|
+
テキストベースの urls, titles, feeds から新規のフィードを作成する
|
121
|
+
|
122
|
+
[レシピ記法]
|
123
|
+
- module: SubscriptionText
|
124
|
+
config:
|
125
|
+
titles:
|
126
|
+
- TITLE ...
|
127
|
+
urls:
|
128
|
+
- URL
|
129
|
+
- URL ...
|
130
|
+
feeds:
|
131
|
+
-
|
132
|
+
title: TITLE
|
133
|
+
url: URL ...
|
134
|
+
interval: スクレイピングの間隔 (秒数, 省略可)
|
135
|
+
retry: エラー時のリトライ回数 (回数, 省略時 0)
|
136
|
+
|
137
|
+
|
97
138
|
FilterSort
|
98
139
|
----------
|
99
140
|
[パス]
|
@@ -199,6 +240,32 @@ FilterTumblrResize
|
|
199
240
|
- module: FilterTumblrResize
|
200
241
|
|
201
242
|
|
243
|
+
FilterOne
|
244
|
+
---------
|
245
|
+
[パス]
|
246
|
+
/plugins/filter/one.rb
|
247
|
+
|
248
|
+
[概要]
|
249
|
+
アイテムをフィードから 1 件だけ取り出す
|
250
|
+
|
251
|
+
[レシピ記法]
|
252
|
+
- module: FilterOne
|
253
|
+
config:
|
254
|
+
pick: last (省略時は先頭から)
|
255
|
+
|
256
|
+
|
257
|
+
FilterRand
|
258
|
+
----------
|
259
|
+
[パス]
|
260
|
+
/plugins/filter/rand.rb
|
261
|
+
|
262
|
+
[概要]
|
263
|
+
フィードの順番をランダムにする
|
264
|
+
|
265
|
+
[レシピ記法]
|
266
|
+
- module: FilterRand
|
267
|
+
|
268
|
+
|
202
269
|
StorePermalink
|
203
270
|
--------------
|
204
271
|
[パス]
|
@@ -279,6 +346,46 @@ PublishHatenaBookmark
|
|
279
346
|
interval: はてブする間隔 (秒)
|
280
347
|
|
281
348
|
|
349
|
+
PublishTwitter
|
350
|
+
--------------
|
351
|
+
[パス]
|
352
|
+
/plugins/publish/twitter.rb
|
353
|
+
|
354
|
+
[概要]
|
355
|
+
Twitter に投稿する
|
356
|
+
|
357
|
+
[レシピ記法]
|
358
|
+
- module: PublishTwitter
|
359
|
+
config:
|
360
|
+
consumer_key: your_consumer_key
|
361
|
+
consumer_secret: your_consumer_secret
|
362
|
+
oauth_token: your_oauth_token
|
363
|
+
oauth_token_secret: your_oauth_token_secret
|
364
|
+
tweet_tmp: tweet する文章 {title} の記法で feed の値から置換
|
365
|
+
interval: 複数の予定の投稿間隔, エラー時のリトライ間隔 (秒)
|
366
|
+
retry: エラー時のリトライ回数 (回数, 省略時 0)
|
367
|
+
|
368
|
+
|
369
|
+
PublishPocket
|
370
|
+
-----------------
|
371
|
+
[パス]
|
372
|
+
/plugins/publish/pocket.rb
|
373
|
+
|
374
|
+
[概要]
|
375
|
+
Pocket に登録する
|
376
|
+
|
377
|
+
[説明]
|
378
|
+
Pocket API へ送信する(gem pocket-rubyを使用)
|
379
|
+
|
380
|
+
[レシピ記法]
|
381
|
+
- module: PublishPocket
|
382
|
+
config:
|
383
|
+
consumer_key: CONSUMER_KEY
|
384
|
+
access_token: ACCESS_TOKEN
|
385
|
+
interval: 複数の予定の投稿間隔, エラー時のリトライ間隔 (秒)
|
386
|
+
retry: エラー時のリトライ回数 (回数, 省略時 0)
|
387
|
+
|
388
|
+
|
282
389
|
PublishInstapaper
|
283
390
|
-----------------
|
284
391
|
[パス]
|
data/doc/README
CHANGED
@@ -31,7 +31,7 @@ $ automatic -c ~/.automatic/config/example/feed2console.yml
|
|
31
31
|
|
32
32
|
|
33
33
|
[Development]
|
34
|
-
$ git clone git://github.com/
|
34
|
+
$ git clone git://github.com/automaticruby/automaticruby.git
|
35
35
|
$ cd automaticruby
|
36
36
|
$ bundle install --path vendor/gems
|
37
37
|
$ bin/automatic scaffold
|
@@ -304,10 +304,10 @@ Development
|
|
304
304
|
===========
|
305
305
|
|
306
306
|
Repository
|
307
|
-
https://github.com/
|
307
|
+
https://github.com/automaticruby/automaticruby
|
308
308
|
|
309
309
|
Issues
|
310
|
-
https://github.com/
|
310
|
+
https://github.com/automaticruby/automaticruby/issues
|
311
311
|
|
312
312
|
RubyForge
|
313
313
|
http://rubyforge.org/projects/automatic/
|
@@ -489,7 +489,7 @@ TODO
|
|
489
489
|
====
|
490
490
|
|
491
491
|
Refer to the issues of github.
|
492
|
-
https://github.com/
|
492
|
+
https://github.com/automaticruby/automaticruby/issues
|
493
493
|
|
494
494
|
|
495
495
|
===========
|
data/doc/README.ja
CHANGED
@@ -32,7 +32,7 @@ $ automatic -c ~/.automatic/config/example/feed2console.yml
|
|
32
32
|
|
33
33
|
|
34
34
|
[開発版]
|
35
|
-
$ git clone git://github.com/
|
35
|
+
$ git clone git://github.com/automaticruby/automaticruby.git
|
36
36
|
$ cd automaticruby
|
37
37
|
$ bundle install --path vendor/gems
|
38
38
|
$ bin/automatic scaffold
|
@@ -284,10 +284,10 @@ plugins:
|
|
284
284
|
==============
|
285
285
|
|
286
286
|
リポジトリ
|
287
|
-
https://github.com/
|
287
|
+
https://github.com/automaticruby/automaticruby
|
288
288
|
|
289
289
|
課題
|
290
|
-
https://github.com/
|
290
|
+
https://github.com/automaticruby/automaticruby/issues
|
291
291
|
|
292
292
|
RubyForge
|
293
293
|
http://rubyforge.org/projects/automatic/
|
@@ -497,7 +497,7 @@ TODO
|
|
497
497
|
====
|
498
498
|
|
499
499
|
GitHub の issues を参照
|
500
|
-
https://github.com/
|
500
|
+
https://github.com/automaticruby/automaticruby/issues
|
501
501
|
|
502
502
|
|
503
503
|
========
|
@@ -32,7 +32,7 @@ module Automatic
|
|
32
32
|
xss = maker.xml_stylesheets.new_xml_stylesheet
|
33
33
|
maker.channel.title = "Automatic Ruby"
|
34
34
|
maker.channel.description = "Automatic Ruby"
|
35
|
-
maker.channel.link = "https://github.com/
|
35
|
+
maker.channel.link = "https://github.com/automaticruby/automaticruby"
|
36
36
|
maker.items.do_sort = true
|
37
37
|
|
38
38
|
unless feeds.nil?
|
@@ -61,7 +61,7 @@ module Automatic
|
|
61
61
|
xss = maker.xml_stylesheets.new_xml_stylesheet
|
62
62
|
maker.channel.title = "Automatic Ruby"
|
63
63
|
maker.channel.description = "Automatic Ruby"
|
64
|
-
maker.channel.link = "https://github.com/
|
64
|
+
maker.channel.link = "https://github.com/automaticruby/automaticruby"
|
65
65
|
maker.items.do_sort = true
|
66
66
|
|
67
67
|
doc = Nokogiri::HTML(html)
|
data/lib/automatic.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Ruby
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Feb 18, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: May 18, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012-2013
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -13,7 +13,7 @@ module Automatic
|
|
13
13
|
require 'automatic/log'
|
14
14
|
require 'automatic/feed_parser'
|
15
15
|
|
16
|
-
VERSION = "13.
|
16
|
+
VERSION = "13.5.0"
|
17
17
|
USER_DIR = "/.automatic"
|
18
18
|
|
19
19
|
class << self
|
data/plugins/filter/ignore.rb
CHANGED
@@ -31,6 +31,14 @@ module Automatic::Plugin
|
|
31
31
|
|
32
32
|
def exclude(items)
|
33
33
|
detection = false
|
34
|
+
unless @config['title'].nil?
|
35
|
+
@config['title'].each {|e|
|
36
|
+
if items.title.include?(e.chomp)
|
37
|
+
detection = true
|
38
|
+
Automatic::Log.puts("info", "Excluded by title: #{items.link}")
|
39
|
+
end
|
40
|
+
}
|
41
|
+
end
|
34
42
|
unless @config['link'].nil?
|
35
43
|
@config['link'].each {|e|
|
36
44
|
if items.link.include?(e.chomp)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Name:: Automatic::Plugin::Filter::One
|
3
|
+
# Author:: soramugi <http://soramugi.net>
|
4
|
+
# Created:: May 8, 2013
|
5
|
+
# Updated:: May 8, 2013
|
6
|
+
# Copyright:: soramugi Copyright (c) 2013
|
7
|
+
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
|
+
|
9
|
+
module Automatic::Plugin
|
10
|
+
class FilterOne
|
11
|
+
|
12
|
+
def initialize(config, pipeline=[])
|
13
|
+
@config = config
|
14
|
+
@pipeline = pipeline
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
@return_feeds = []
|
19
|
+
@pipeline.each {|feed|
|
20
|
+
unless feed.nil?
|
21
|
+
item = []
|
22
|
+
unless @config.nil? or @config['pick'].nil?
|
23
|
+
if @config['pick'] == 'last'
|
24
|
+
item << feed.items.pop
|
25
|
+
end
|
26
|
+
end
|
27
|
+
if item.count == 0
|
28
|
+
item << feed.items.shift
|
29
|
+
end
|
30
|
+
@return_feeds << Automatic::FeedParser.create(item)
|
31
|
+
end
|
32
|
+
}
|
33
|
+
@return_feeds
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Name:: Automatic::Plugin::Filter::Rand
|
3
|
+
# Author:: soramugi <http://soramugi.net>
|
4
|
+
# 774 <http://id774.net>
|
5
|
+
# Created:: Mar 6, 2013
|
6
|
+
# Updated:: Mar 7, 2013
|
7
|
+
# Copyright:: soramugi Copyright (c) 2013
|
8
|
+
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
9
|
+
|
10
|
+
module Automatic::Plugin
|
11
|
+
class FilterRand
|
12
|
+
|
13
|
+
def initialize(config, pipeline=[])
|
14
|
+
@config = config
|
15
|
+
@pipeline = pipeline
|
16
|
+
end
|
17
|
+
|
18
|
+
def run
|
19
|
+
@return_feeds = []
|
20
|
+
@pipeline.each {|feed|
|
21
|
+
unless feed.nil?
|
22
|
+
@return_feeds << Automatic::FeedParser.create(feed.items.shuffle)
|
23
|
+
end
|
24
|
+
}
|
25
|
+
@return_feeds
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|