automatic 12.4.0 → 12.6.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.
Files changed (81) hide show
  1. data/Gemfile +1 -0
  2. data/README.md +8 -5
  3. data/Rakefile +1 -1
  4. data/VERSION +1 -1
  5. data/automatic.gemspec +32 -9
  6. data/bin/automatic +3 -3
  7. data/bin/automatic-config +34 -17
  8. data/config/feed2console.yml +1 -2
  9. data/config/html2console.yml +16 -0
  10. data/doc/ChangeLog +38 -3
  11. data/doc/PLUGINS +191 -14
  12. data/doc/PLUGINS.ja +187 -10
  13. data/doc/README +70 -42
  14. data/doc/README.ja +64 -58
  15. data/lib/automatic/opml.rb +2 -1
  16. data/lib/automatic/pipeline.rb +3 -3
  17. data/lib/automatic/recipe.rb +6 -1
  18. data/lib/automatic.rb +6 -6
  19. data/plugins/extract/link.rb +32 -0
  20. data/plugins/filter/ignore.rb +7 -16
  21. data/plugins/filter/image_link.rb +37 -0
  22. data/plugins/filter/{image.rb → image_source.rb} +6 -7
  23. data/plugins/filter/reverse.rb +3 -4
  24. data/plugins/filter/tumblr_resize.rb +3 -4
  25. data/plugins/notify/ikachan.rb +1 -2
  26. data/plugins/publish/console.rb +0 -1
  27. data/plugins/publish/dump.rb +24 -0
  28. data/plugins/publish/google_calendar.rb +0 -2
  29. data/plugins/publish/hatena_bookmark.rb +2 -3
  30. data/plugins/store/{store_database.rb → database.rb} +32 -7
  31. data/plugins/store/full_text.rb +5 -5
  32. data/plugins/store/link.rb +47 -0
  33. data/plugins/store/permalink.rb +7 -7
  34. data/plugins/store/target.rb +41 -0
  35. data/plugins/subscription/feed.rb +0 -1
  36. data/plugins/subscription/uri.rb +31 -0
  37. data/script/build +18 -4
  38. data/spec/fixtures/extractLink.html +14 -0
  39. data/spec/fixtures/filterImageLink.html +34 -0
  40. data/spec/fixtures/publishDump.html +14 -0
  41. data/{config/default.yml → spec/fixtures/sampleRecipe.yml} +8 -10
  42. data/spec/fixtures/storeLink.html +34 -0
  43. data/spec/fixtures/storeLink2.html +36 -0
  44. data/spec/fixtures/storeTarget.html +11 -0
  45. data/spec/fixtures/storeTarget2.html +11 -0
  46. data/spec/lib/automatic/pipeline_spec.rb +27 -14
  47. data/spec/lib/automatic/recipe_spec.rb +35 -0
  48. data/spec/lib/automatic_spec.rb +21 -14
  49. data/spec/plugins/extract/link_spec.rb +38 -0
  50. data/spec/plugins/filter/ignore_spec.rb +59 -3
  51. data/spec/plugins/filter/image_link_spec.rb +51 -0
  52. data/spec/plugins/filter/{image_spec.rb → image_source_spec.rb} +29 -9
  53. data/spec/plugins/filter/reverse_spec.rb +0 -1
  54. data/spec/plugins/filter/tumblr_resize_spec.rb +7 -0
  55. data/spec/plugins/publish/console_spec.rb +9 -2
  56. data/spec/plugins/publish/dump_spec.rb +32 -0
  57. data/spec/plugins/publish/google_calendar_spec.rb +2 -1
  58. data/spec/plugins/publish/hatena_bookmark_spec.rb +2 -1
  59. data/spec/plugins/publish/mail_spec.rb +9 -1
  60. data/spec/plugins/publish/smtp_spec.rb +9 -1
  61. data/spec/plugins/store/full_text_spec.rb +15 -5
  62. data/spec/plugins/store/link_spec.rb +47 -0
  63. data/spec/plugins/store/permalink_spec.rb +9 -2
  64. data/spec/plugins/store/target_link_spec.rb +17 -3
  65. data/spec/plugins/store/target_spec.rb +41 -0
  66. data/spec/plugins/subscription/feed_spec.rb +14 -4
  67. data/spec/plugins/subscription/uri_spec.rb +43 -0
  68. data/spec/spec_helper.rb +31 -8
  69. data/spec/user_dir/plugins/store/mock.rb +4 -0
  70. data/test/integration/test_activerecord.yml +1 -1
  71. data/test/integration/test_fulltext.yml +1 -1
  72. data/test/integration/test_get_image.yml +26 -0
  73. data/test/integration/test_hatenabookmark.yml +1 -1
  74. data/test/integration/test_ignore.yml +1 -1
  75. data/test/integration/test_ignore2.yml +1 -1
  76. data/test/integration/test_image2local.yml +1 -1
  77. data/test/integration/test_reverse.yml +1 -1
  78. data/test/integration/test_tumblr2local.yml +1 -1
  79. metadata +45 -9
  80. data/spec/lib/pipeline_spec.rb +0 -67
  81. data/test/integration/test_mail.yml +0 -21
data/doc/PLUGINS CHANGED
@@ -7,6 +7,12 @@ SubscriptionFeed
7
7
  [Path]
8
8
  /plugins/subscription/feed.rb
9
9
 
10
+ [Input]
11
+ None
12
+
13
+ [Output]
14
+ Feed
15
+
10
16
  [Abstract]
11
17
  Subscribe to feed.
12
18
 
@@ -23,6 +29,12 @@ FilterReverse
23
29
  [Path]
24
30
  /plugins/filter/reverse.rb
25
31
 
32
+ [Input]
33
+ Feed
34
+
35
+ [Output]
36
+ Feed
37
+
26
38
  [Abstract]
27
39
  Sort feed by date asc.
28
40
 
@@ -35,6 +47,12 @@ FilterIgnore
35
47
  [Path]
36
48
  /plugins/filter/ignore.rb
37
49
 
50
+ [Input]
51
+ Feed
52
+
53
+ [Output]
54
+ Feed
55
+
38
56
  [Abstract]
39
57
  To exclude the NG word.
40
58
 
@@ -46,17 +64,23 @@ FilterIgnore
46
64
  - KEYWORD ...
47
65
 
48
66
 
49
- FilterImage
50
- ------------
67
+ FilterImageSource
68
+ -----------------
51
69
  [Path]
52
- /plugins/filter/image.rb
70
+ /plugins/filter/image_source.rb
71
+
72
+ [Input]
73
+ Feed
74
+
75
+ [Output]
76
+ Feed
53
77
 
54
78
  [Abstract]
55
- Rewrite the permalink to link of the image in the contents.
56
- If there is no link of image, the permalink will be nil.
79
+ Rewrite the permalink to source of the image in the contents.
80
+ If there is no source of image, the permalink will be nil.
57
81
 
58
82
  [Syntax]
59
- - module: FilterImage
83
+ - module: FilterImageSource
60
84
 
61
85
 
62
86
  FilterTumblrResize
@@ -64,6 +88,12 @@ FilterTumblrResize
64
88
  [Path]
65
89
  /plugins/filter/tumblr_resize.rb
66
90
 
91
+ [Input]
92
+ Feed
93
+
94
+ [Output]
95
+ Feed
96
+
67
97
  [Abstract]
68
98
  To rewrite the permalink to the maximum size of
69
99
  the Tumblr (High Res).
@@ -80,12 +110,18 @@ StorePermalink
80
110
  [Path]
81
111
  /plugins/store/permalink.rb
82
112
 
113
+ [Input]
114
+ Feed
115
+
116
+ [Output]
117
+ Feed
118
+
83
119
  [Abstract]
84
- To save a permanent link.
120
+ Save a permanent link.
85
121
  The duplicate permalink will be discarded.
86
122
 
87
123
  [Syntax]
88
- - module: StoreBookmark
124
+ - module: StorePermalink
89
125
  config:
90
126
  db: DB_NAME
91
127
 
@@ -95,8 +131,14 @@ StoreFullText
95
131
  [Path]
96
132
  /plugins/store/full_text.rb
97
133
 
134
+ [Input]
135
+ Feed
136
+
137
+ [Output]
138
+ Feed
139
+
98
140
  [Abstract]
99
- To save a full text of contents.
141
+ Save a full text of contents.
100
142
 
101
143
  Saved text can be viewed in the viewer below
102
144
  https://github.com/id774/blog_viewer
@@ -112,8 +154,14 @@ StoreTargetLink
112
154
  [Path]
113
155
  /plugins/store/target_link.rb
114
156
 
157
+ [Input]
158
+ Feed
159
+
160
+ [Output]
161
+ Feed
162
+
115
163
  [Abstract]
116
- To store target locally.
164
+ Store target locally.
117
165
  This emulate "Right click to save".
118
166
 
119
167
  [Syntax]
@@ -128,6 +176,12 @@ PublishConsole
128
176
  [Path]
129
177
  /plugins/publish/console.rb
130
178
 
179
+ [Input]
180
+ Feed
181
+
182
+ [Output]
183
+ Feed
184
+
131
185
  [Abstract]
132
186
  Output pipeline to the console.
133
187
 
@@ -140,6 +194,12 @@ PublishHatenaBookmark
140
194
  [Path]
141
195
  /plugins/publish/hatenabookmark.rb
142
196
 
197
+ [Input]
198
+ Feed
199
+
200
+ [Output]
201
+ Feed
202
+
143
203
  [Abstract]
144
204
  To Hatena Bookmark (Social Bookmark).
145
205
 
@@ -160,13 +220,19 @@ PublishGoogleCalendar
160
220
  [Path]
161
221
  /plugins/publish/google_calendar.rb
162
222
 
223
+ [Input]
224
+ Feed
225
+
226
+ [Output]
227
+ Feed
228
+
163
229
  [Abstract]
164
230
  To register an appointment to Google Calendar.
165
231
 
166
232
  [Description]
167
233
  Register item.title to Google Calendar.
168
234
 
169
- [Notation recipe]
235
+ [Syntax]
170
236
  - module: PublishGoogleCalendar
171
237
  config:
172
238
  username: GOOGLE_ACCOUNT
@@ -179,6 +245,12 @@ NotifyIkachan
179
245
  [Path]
180
246
  /plugins/notify/ikachan.rb
181
247
 
248
+ [Input]
249
+ Feed
250
+
251
+ [Output]
252
+ Feed
253
+
182
254
  [Abstract]
183
255
  To send a message to ikachan.
184
256
 
@@ -199,7 +271,13 @@ NotifyIkachan
199
271
  CustomFeedSVNLog
200
272
  ----------------
201
273
  [Path]
202
- /plugins/custom/feed_svn_log.rb
274
+ /plugins/custom_feed/svn_log.rb
275
+
276
+ [Input]
277
+ None
278
+
279
+ [Output]
280
+ Feed
203
281
 
204
282
  [Abstract]
205
283
  Get new revision info from SVN.
@@ -207,11 +285,110 @@ CustomFeedSVNLog
207
285
  [Description]
208
286
  To get the number that is specified by fetch_items.
209
287
 
210
- [Notation recipe]
211
- - Module: CustomFeedSVNLog
288
+ [Syntax]
212
289
  - module: CustomFeedSVNLog
213
290
  config:
214
291
  target: http://redmine.rubyforge.org/svn
215
292
  fetch_items: 2 # If not specified, 30
216
293
 
217
294
 
295
+ SubscriptionURI
296
+ ---------------
297
+ [Path]
298
+ /plugins/subscription/uri.rb
299
+
300
+ [Input]
301
+ None
302
+
303
+ [Output]
304
+ HTML
305
+
306
+ [Description]
307
+ Open http or ftp URL to file object.
308
+
309
+ [Syntax]
310
+ - module: CustomFeedURI
311
+ config:
312
+ url:
313
+ - URL
314
+ - URL ...
315
+
316
+
317
+ ExtractLink
318
+ -----------
319
+ [Path]
320
+ /plugins/extract/link.rb
321
+
322
+ [Input]
323
+ HTML
324
+
325
+ [Output]
326
+ An array of links.
327
+
328
+ [Description]
329
+ Extract a link in HTML.
330
+
331
+ [Syntax]
332
+ - module: FilterLink
333
+
334
+
335
+ FilterImageLink
336
+ ---------------
337
+ [Path]
338
+ /plugins/filter/image_link.rb
339
+
340
+ [Input]
341
+ An array of links.
342
+
343
+ [Output]
344
+ An array of links.
345
+
346
+ [Description]
347
+ Extract image's link from HTML.
348
+
349
+ [Syntax]
350
+ - module: FilterImageLink
351
+
352
+
353
+ StoreLink
354
+ ---------
355
+ [Path]
356
+ /plugins/store/link.rb
357
+
358
+ [Input]
359
+ An array of links.
360
+
361
+ [Output]
362
+ An array of links.
363
+
364
+ [Abstract]
365
+ Save a permanent link.
366
+ The duplicate permalink will be discarded.
367
+ This is a HTML version for StorePermalink.
368
+
369
+ [Syntax]
370
+ - module: StoreLink
371
+ config:
372
+ db: DB_NAME
373
+
374
+
375
+ StoreTarget
376
+ -----------
377
+ [Path]
378
+ /plugins/store/target.rb
379
+
380
+ [Input]
381
+ An array of links.
382
+
383
+ [Output]
384
+ An array of links.
385
+
386
+ [Description]
387
+ Store target locally by a link in HTML.
388
+ This emulate "Right click to save".
389
+
390
+ [Syntax]
391
+ - module: StoreTarget
392
+ config:
393
+ path: SAVE_TO_PATH
394
+ interval: INTERVAL_FOR_DOWNLOAD (in seconds.)
data/doc/PLUGINS.ja CHANGED
@@ -7,6 +7,12 @@ SubscriptionFeed
7
7
  [パス]
8
8
  /plugins/subscription/feed.rb
9
9
 
10
+ [入力]
11
+ 無し
12
+
13
+ [出力]
14
+ フィード
15
+
10
16
  [概要]
11
17
  フィードを購読する
12
18
 
@@ -23,11 +29,17 @@ FilterReverse
23
29
  [パス]
24
30
  /plugins/filter/reverse.rb
25
31
 
32
+ [入力]
33
+ フィード
34
+
35
+ [出力]
36
+ フィード
37
+
26
38
  [概要]
27
39
  日付の昇順にソートする
28
40
 
29
41
  [レシピ記法]
30
- - module: FilterImage
42
+ - module: FilterReverse
31
43
 
32
44
 
33
45
  FilterIgnore
@@ -35,6 +47,12 @@ FilterIgnore
35
47
  [パス]
36
48
  /plugins/filter/ignore.rb
37
49
 
50
+ [入力]
51
+ フィード
52
+
53
+ [出力]
54
+ フィード
55
+
38
56
  [概要]
39
57
  NG ワードを除外する
40
58
 
@@ -46,17 +64,23 @@ FilterIgnore
46
64
  - 無視キーワード ...
47
65
 
48
66
 
49
- FilterImage
50
- ------------
67
+ FilterImageSource
68
+ -----------------
51
69
  [パス]
52
- /plugins/filter/image.rb
70
+ /plugins/filter/image_source.rb
71
+
72
+ [入力]
73
+ フィード
74
+
75
+ [出力]
76
+ フィード
53
77
 
54
78
  [概要]
55
- パーマリンクを本文中の画像のリンクに書き換える
56
- 画像のリンクが無い場合は nil にする
79
+ パーマリンクを本文中の画像のソースリンクに書き換える
80
+ 画像のソースリンクが無い場合は nil にする
57
81
 
58
82
  [レシピ記法]
59
- - module: FilterImage
83
+ - module: FilterImageSource
60
84
 
61
85
 
62
86
  FilterTumblrResize
@@ -64,6 +88,12 @@ FilterTumblrResize
64
88
  [パス]
65
89
  /plugins/filter/tumblr_resize.rb
66
90
 
91
+ [入力]
92
+ フィード
93
+
94
+ [出力]
95
+ フィード
96
+
67
97
  [概要]
68
98
  パーマリンクを Tumblr の最大サイズ
69
99
  (High Res) に書き換える
@@ -80,14 +110,20 @@ StorePermalink
80
110
  [パス]
81
111
  /plugins/store/permalink.rb
82
112
 
113
+ [入力]
114
+ フィード
115
+
116
+ [出力]
117
+ フィード
118
+
83
119
  [概要]
84
120
  パーマリンクを保存する
85
121
  重複したパーマリンクは破棄する
86
122
 
87
123
  [レシピ記法]
88
- - module: StoreBookmark
124
+ - module: StorePermalink
89
125
  config:
90
- db: ブックマークを保存する SQLite3 DB 名
126
+ db: パーマリンクを保存する SQLite3 DB 名
91
127
 
92
128
 
93
129
  StoreFullText
@@ -95,6 +131,12 @@ StoreFullText
95
131
  [パス]
96
132
  /plugins/store/full_text.rb
97
133
 
134
+ [入力]
135
+ フィード
136
+
137
+ [出力]
138
+ フィード
139
+
98
140
  [概要]
99
141
  フィード全文を DB に保存する
100
142
 
@@ -112,6 +154,12 @@ StoreTargetLink
112
154
  [パス]
113
155
  /plugins/store/target_link.rb
114
156
 
157
+ [入力]
158
+ フィード
159
+
160
+ [出力]
161
+ フィード
162
+
115
163
  [概要]
116
164
  リンク先のコンテンツをローカルに保存する
117
165
 
@@ -127,6 +175,12 @@ PublishConsole
127
175
  [パス]
128
176
  /plugins/publish/console.rb
129
177
 
178
+ [入力]
179
+ フィード
180
+
181
+ [出力]
182
+ フィード
183
+
130
184
  [概要]
131
185
  パイプラインをコンソールに出力する
132
186
 
@@ -142,6 +196,12 @@ PublishHatenaBookmark
142
196
  [概要]
143
197
  はてなブックマークをする
144
198
 
199
+ [入力]
200
+ フィード
201
+
202
+ [出力]
203
+ フィード
204
+
145
205
  [説明]
146
206
  はてなブックマーク API への投稿用 XML を生成し
147
207
  送信する
@@ -162,6 +222,12 @@ PublishGoogleCalendar
162
222
  [概要]
163
223
  Google Calendar に予定を登録する
164
224
 
225
+ [入力]
226
+ フィード
227
+
228
+ [出力]
229
+ フィード
230
+
165
231
  [説明]
166
232
  item.title を Google カレンダーに登録する
167
233
 
@@ -181,6 +247,12 @@ NotifyIkachan
181
247
  [概要]
182
248
  ikachan へメッセージを送信する
183
249
 
250
+ [入力]
251
+ フィード
252
+
253
+ [出力]
254
+ フィード
255
+
184
256
  [説明]
185
257
  ikachan へ HTTP 経由で POST する
186
258
  ikachan とは: http://blog.yappo.jp/yappo/archives/000760.html
@@ -198,7 +270,13 @@ NotifyIkachan
198
270
  CustomFeedSVNLog
199
271
  ----------------
200
272
  [パス]
201
- /plugins/custom/feed_svn_log.rb
273
+ /plugins/custom_feed/svn_log.rb
274
+
275
+ [入力]
276
+ 無し
277
+
278
+ [出力]
279
+ フィード
202
280
 
203
281
  [概要]
204
282
  SVN から新しいリビジョン情報を取得する
@@ -214,3 +292,102 @@ CustomFeedSVNLog
214
292
  fetch_items: 2 # 指定されない場合は 30
215
293
 
216
294
 
295
+ SubscriptionURI
296
+ ---------------
297
+ [パス]
298
+ /plugins/subscription/uri.rb
299
+
300
+ [入力]
301
+ 無し
302
+
303
+ [出力]
304
+ HTML
305
+
306
+ [概要]
307
+ http/ftp の URL をファイルオブジェクトとして開く
308
+
309
+ [レシピ記法]
310
+ - module: CustomFeedURI
311
+ config:
312
+ url:
313
+ - URL
314
+ - URL ...
315
+
316
+
317
+ ExtractLink
318
+ -----------
319
+ [パス]
320
+ /plugins/extract/link.rb
321
+
322
+ [入力]
323
+ HTML
324
+
325
+ [出力]
326
+ An array of links.
327
+
328
+ [概要]
329
+ HTML の a リンクのみを抽出する
330
+
331
+ [レシピ記法]
332
+ - module: FilterLink
333
+
334
+
335
+ FilterImageLink
336
+ ---------------
337
+ [パス]
338
+ /plugins/filter/image_link.rb
339
+
340
+ [入力]
341
+ An array of links.
342
+
343
+ [出力]
344
+ An array of links.
345
+
346
+ [概要]
347
+ 画像ファイルのリンクのみを抽出する
348
+
349
+ [レシピ記法]
350
+ - module: FilterImageLink
351
+
352
+
353
+ StoreLink
354
+ ---------
355
+ [パス]
356
+ /plugins/store/link.rb
357
+
358
+ [入力]
359
+ An array of links.
360
+
361
+ [出力]
362
+ An array of links.
363
+
364
+ [概要]
365
+ パーマリンクを保存する
366
+ 重複したパーマリンクは破棄する
367
+ これは StorePermalink の HTML 版である
368
+
369
+ [レシピ記法]
370
+ - module: StoreLink
371
+ config:
372
+ db: パーマリンクを保存する SQLite3 DB 名
373
+
374
+
375
+ StoreTarget
376
+ -----------
377
+ [パス]
378
+ /plugins/store/target.rb
379
+
380
+ [入力]
381
+ An array of links.
382
+
383
+ [出力]
384
+ An array of links.
385
+
386
+ [概要]
387
+ HTML の a リンク先のコンテンツをローカルに保存する
388
+
389
+ [レシピ記法]
390
+ - module: StoreTarget
391
+ config:
392
+ path: 保存先のフォルダ
393
+ interval: 保存する間隔 (秒)