murlsh 1.0.0 → 1.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/.htaccess +5 -0
- data/COPYING +27 -0
- data/README.textile +2 -2
- data/Rakefile +133 -66
- data/VERSION +1 -1
- data/config.ru +9 -8
- data/config.yaml +3 -2
- data/lib/murlsh/auth.rb +6 -8
- data/lib/murlsh/config_server.rb +4 -6
- data/lib/murlsh/dispatch.rb +5 -7
- data/lib/murlsh/doc.rb +1 -1
- data/lib/murlsh/etag_add_encoding.rb +1 -3
- data/lib/murlsh/failproof.rb +0 -1
- data/lib/murlsh/far_future_expires.rb +2 -4
- data/lib/murlsh/head_from_get.rb +2 -2
- data/lib/murlsh/image_list.rb +32 -0
- data/lib/murlsh/img_store.rb +47 -9
- data/lib/murlsh/markup.rb +53 -20
- data/lib/murlsh/must_revalidate.rb +2 -4
- data/lib/murlsh/plugin.rb +1 -1
- data/lib/murlsh/sqlite3_adapter.rb +2 -4
- data/lib/murlsh/time_ago.rb +6 -8
- data/lib/murlsh/uri.rb +1 -3
- data/lib/murlsh/uri_ask.rb +23 -25
- data/lib/murlsh/url.rb +4 -6
- data/lib/murlsh/url_body.rb +19 -21
- data/lib/murlsh/url_server.rb +8 -10
- data/lib/murlsh/yaml_ordered_hash.rb +2 -4
- data/lib/murlsh.rb +21 -4
- data/murlsh.gemspec +95 -90
- data/plugins/add_post_50_update_feed.rb +22 -10
- data/plugins/add_post_50_update_podcast.rb +3 -5
- data/plugins/add_post_50_update_rss.rb +4 -6
- data/plugins/add_post_60_notify_hubs.rb +3 -5
- data/plugins/add_pre_40_convert_mobile.rb +4 -10
- data/plugins/add_pre_50_lookup_content_type_title.rb +4 -6
- data/plugins/add_pre_60_flickr.rb +3 -14
- data/plugins/add_pre_60_github_title.rb +4 -6
- data/plugins/add_pre_60_google_code_title.rb +4 -6
- data/plugins/add_pre_60_imgur.rb +4 -16
- data/plugins/add_pre_60_s3_image.rb +7 -6
- data/plugins/add_pre_60_twitter.rb +3 -14
- data/plugins/add_pre_60_vimeo.rb +7 -6
- data/plugins/add_pre_60_youtube.rb +8 -7
- data/plugins/add_pre_65_html_thumb.rb +41 -0
- data/plugins/add_pre_65_img_thumb.rb +39 -0
- data/plugins/html_parse_50_hpricot.rb +2 -4
- data/plugins/url_display_add_45_audio.rb +28 -0
- data/plugins/url_display_add_50_hostrec.rb +15 -18
- data/plugins/url_display_add_55_content_type.rb +6 -8
- data/plugins/url_display_add_60_via.rb +12 -19
- data/plugins/url_display_add_65_time.rb +4 -6
- data/public/css/screen.css +2 -3
- data/public/img/thumb/.gitignore +3 -0
- data/public/js/jquery-1.4.4.min.js +167 -0
- data/public/js/js.js +6 -5
- data/public/js/{twitter-text-1.0.3.js → twitter-text-1.0.4.js} +3 -1
- data/spec/auth_spec.rb +4 -6
- data/spec/dispatch_spec.rb +3 -5
- data/spec/doc_spec.rb +2 -4
- data/spec/img_store_spec.rb +46 -20
- data/spec/markup_spec.rb +22 -24
- data/spec/uri_ask_spec.rb +5 -7
- data/spec/uri_spec.rb +2 -4
- data/spec/url_spec.rb +5 -9
- data/spec/yaml_ordered_hash_spec.rb +1 -3
- metadata +85 -53
- data/.gitignore +0 -6
- data/plugins/add_pre_60_imageshack.rb +0 -31
- data/plugins/url_display_add_45_mp3.rb +0 -30
- data/public/img/thumb/README +0 -0
- data/public/js/jquery-1.4.3.min.js +0 -166
- data/public/swf/player_mp3_mini.swf +0 -0
data/murlsh.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{murlsh}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matthew M. Boedicker"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-21}
|
13
13
|
s.default_executable = %q{murlsh}
|
14
14
|
s.description = %q{url sharing site framework with easy adding, title lookup, atom feed, thumbnails and embedding}
|
15
15
|
s.email = %q{matthewm@boedicker.org}
|
@@ -18,93 +18,92 @@ Gem::Specification.new do |s|
|
|
18
18
|
"README.textile"
|
19
19
|
]
|
20
20
|
s.files = [
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
21
|
+
".htaccess",
|
22
|
+
"COPYING",
|
23
|
+
"README.textile",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"bin/murlsh",
|
27
|
+
"config.ru",
|
28
|
+
"config.yaml",
|
29
|
+
"lib/murlsh.rb",
|
30
|
+
"lib/murlsh/auth.rb",
|
31
|
+
"lib/murlsh/config_server.rb",
|
32
|
+
"lib/murlsh/dispatch.rb",
|
33
|
+
"lib/murlsh/doc.rb",
|
34
|
+
"lib/murlsh/etag_add_encoding.rb",
|
35
|
+
"lib/murlsh/failproof.rb",
|
36
|
+
"lib/murlsh/far_future_expires.rb",
|
37
|
+
"lib/murlsh/head_from_get.rb",
|
38
|
+
"lib/murlsh/image_list.rb",
|
39
|
+
"lib/murlsh/img_store.rb",
|
40
|
+
"lib/murlsh/markup.rb",
|
41
|
+
"lib/murlsh/must_revalidate.rb",
|
42
|
+
"lib/murlsh/openlock.rb",
|
43
|
+
"lib/murlsh/plugin.rb",
|
44
|
+
"lib/murlsh/sqlite3_adapter.rb",
|
45
|
+
"lib/murlsh/time_ago.rb",
|
46
|
+
"lib/murlsh/uri.rb",
|
47
|
+
"lib/murlsh/uri_ask.rb",
|
48
|
+
"lib/murlsh/url.rb",
|
49
|
+
"lib/murlsh/url_body.rb",
|
50
|
+
"lib/murlsh/url_server.rb",
|
51
|
+
"lib/murlsh/yaml_ordered_hash.rb",
|
52
|
+
"murlsh.gemspec",
|
53
|
+
"plugins/add_post_50_update_feed.rb",
|
54
|
+
"plugins/add_post_50_update_podcast.rb",
|
55
|
+
"plugins/add_post_50_update_rss.rb",
|
56
|
+
"plugins/add_post_60_notify_hubs.rb",
|
57
|
+
"plugins/add_pre_40_convert_mobile.rb",
|
58
|
+
"plugins/add_pre_50_lookup_content_type_title.rb",
|
59
|
+
"plugins/add_pre_60_flickr.rb",
|
60
|
+
"plugins/add_pre_60_github_title.rb",
|
61
|
+
"plugins/add_pre_60_google_code_title.rb",
|
62
|
+
"plugins/add_pre_60_imgur.rb",
|
63
|
+
"plugins/add_pre_60_s3_image.rb",
|
64
|
+
"plugins/add_pre_60_twitter.rb",
|
65
|
+
"plugins/add_pre_60_vimeo.rb",
|
66
|
+
"plugins/add_pre_60_youtube.rb",
|
67
|
+
"plugins/add_pre_65_html_thumb.rb",
|
68
|
+
"plugins/add_pre_65_img_thumb.rb",
|
69
|
+
"plugins/html_parse_50_hpricot.rb",
|
70
|
+
"plugins/url_display_add_45_audio.rb",
|
71
|
+
"plugins/url_display_add_50_hostrec.rb",
|
72
|
+
"plugins/url_display_add_55_content_type.rb",
|
73
|
+
"plugins/url_display_add_60_via.rb",
|
74
|
+
"plugins/url_display_add_65_time.rb",
|
75
|
+
"public/css/jquery.jgrowl.css",
|
76
|
+
"public/css/screen.css",
|
77
|
+
"public/img/thumb/.gitignore",
|
78
|
+
"public/js/comments.json",
|
79
|
+
"public/js/jquery-1.4.4.min.js",
|
80
|
+
"public/js/jquery.jgrowl_compressed.js",
|
81
|
+
"public/js/js.js",
|
82
|
+
"public/js/twitter-text-1.0.4.js",
|
83
|
+
"spec/auth_spec.rb",
|
84
|
+
"spec/dispatch_spec.rb",
|
85
|
+
"spec/doc_spec.rb",
|
86
|
+
"spec/img_store_spec.rb",
|
87
|
+
"spec/markup_spec.rb",
|
88
|
+
"spec/uri_ask_spec.rb",
|
89
|
+
"spec/uri_spec.rb",
|
90
|
+
"spec/url_spec.rb",
|
91
|
+
"spec/yaml_ordered_hash_spec.rb"
|
92
92
|
]
|
93
93
|
s.homepage = %q{http://github.com/mmb/murlsh}
|
94
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
95
94
|
s.require_paths = ["lib"]
|
96
95
|
s.rubygems_version = %q{1.3.7}
|
97
96
|
s.summary = %q{url sharing site framework}
|
98
97
|
s.test_files = [
|
99
98
|
"spec/auth_spec.rb",
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
99
|
+
"spec/dispatch_spec.rb",
|
100
|
+
"spec/doc_spec.rb",
|
101
|
+
"spec/img_store_spec.rb",
|
102
|
+
"spec/markup_spec.rb",
|
103
|
+
"spec/uri_ask_spec.rb",
|
104
|
+
"spec/uri_spec.rb",
|
105
|
+
"spec/url_spec.rb",
|
106
|
+
"spec/yaml_ordered_hash_spec.rb"
|
108
107
|
]
|
109
108
|
|
110
109
|
if s.respond_to? :specification_version then
|
@@ -116,38 +115,42 @@ Gem::Specification.new do |s|
|
|
116
115
|
s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 2.1.2"])
|
117
116
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
118
117
|
s.add_runtime_dependency(%q<flickraw>, [">= 0.8.3"])
|
119
|
-
s.add_runtime_dependency(%q<flog>, [">= 2.5.0"])
|
120
118
|
s.add_runtime_dependency(%q<hpricot>, [">= 0.8.1"])
|
121
119
|
s.add_runtime_dependency(%q<htmlentities>, [">= 4.2.0"])
|
122
120
|
s.add_runtime_dependency(%q<json>, [">= 1.2.3"])
|
121
|
+
s.add_runtime_dependency(%q<plumnailer>, [">= 0.1.0"])
|
123
122
|
s.add_runtime_dependency(%q<push-notify>, [">= 0.1.0"])
|
124
123
|
s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
|
125
124
|
s.add_runtime_dependency(%q<rack-cache>, [">= 0.5.2"])
|
126
125
|
s.add_runtime_dependency(%q<rack-rewrite>, [">= 1.0.2"])
|
127
126
|
s.add_runtime_dependency(%q<rack-throttle>, [">= 0.3.0"])
|
127
|
+
s.add_runtime_dependency(%q<rmagick>, [">= 1.15.14"])
|
128
128
|
s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 1.2.1"])
|
129
|
-
s.add_runtime_dependency(%q<tinyatom>, [">= 0.
|
129
|
+
s.add_runtime_dependency(%q<tinyatom>, [">= 0.3.3"])
|
130
130
|
s.add_runtime_dependency(%q<twitter>, [">= 0.9.12"])
|
131
131
|
s.add_runtime_dependency(%q<vimeo>, [">= 1.2.2"])
|
132
|
-
s.
|
132
|
+
s.add_development_dependency(%q<flog>, [">= 2.5.0"])
|
133
|
+
s.add_development_dependency(%q<rspec>, ["~> 1.3"])
|
133
134
|
else
|
134
135
|
s.add_dependency(%q<activerecord>, [">= 2.3.4"])
|
135
136
|
s.add_dependency(%q<bcrypt-ruby>, [">= 2.1.2"])
|
136
137
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
137
138
|
s.add_dependency(%q<flickraw>, [">= 0.8.3"])
|
138
|
-
s.add_dependency(%q<flog>, [">= 2.5.0"])
|
139
139
|
s.add_dependency(%q<hpricot>, [">= 0.8.1"])
|
140
140
|
s.add_dependency(%q<htmlentities>, [">= 4.2.0"])
|
141
141
|
s.add_dependency(%q<json>, [">= 1.2.3"])
|
142
|
+
s.add_dependency(%q<plumnailer>, [">= 0.1.0"])
|
142
143
|
s.add_dependency(%q<push-notify>, [">= 0.1.0"])
|
143
144
|
s.add_dependency(%q<rack>, [">= 1.0.0"])
|
144
145
|
s.add_dependency(%q<rack-cache>, [">= 0.5.2"])
|
145
146
|
s.add_dependency(%q<rack-rewrite>, [">= 1.0.2"])
|
146
147
|
s.add_dependency(%q<rack-throttle>, [">= 0.3.0"])
|
148
|
+
s.add_dependency(%q<rmagick>, [">= 1.15.14"])
|
147
149
|
s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.1"])
|
148
|
-
s.add_dependency(%q<tinyatom>, [">= 0.
|
150
|
+
s.add_dependency(%q<tinyatom>, [">= 0.3.3"])
|
149
151
|
s.add_dependency(%q<twitter>, [">= 0.9.12"])
|
150
152
|
s.add_dependency(%q<vimeo>, [">= 1.2.2"])
|
153
|
+
s.add_dependency(%q<flog>, [">= 2.5.0"])
|
151
154
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
152
155
|
end
|
153
156
|
else
|
@@ -155,19 +158,21 @@ Gem::Specification.new do |s|
|
|
155
158
|
s.add_dependency(%q<bcrypt-ruby>, [">= 2.1.2"])
|
156
159
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
157
160
|
s.add_dependency(%q<flickraw>, [">= 0.8.3"])
|
158
|
-
s.add_dependency(%q<flog>, [">= 2.5.0"])
|
159
161
|
s.add_dependency(%q<hpricot>, [">= 0.8.1"])
|
160
162
|
s.add_dependency(%q<htmlentities>, [">= 4.2.0"])
|
161
163
|
s.add_dependency(%q<json>, [">= 1.2.3"])
|
164
|
+
s.add_dependency(%q<plumnailer>, [">= 0.1.0"])
|
162
165
|
s.add_dependency(%q<push-notify>, [">= 0.1.0"])
|
163
166
|
s.add_dependency(%q<rack>, [">= 1.0.0"])
|
164
167
|
s.add_dependency(%q<rack-cache>, [">= 0.5.2"])
|
165
168
|
s.add_dependency(%q<rack-rewrite>, [">= 1.0.2"])
|
166
169
|
s.add_dependency(%q<rack-throttle>, [">= 0.3.0"])
|
170
|
+
s.add_dependency(%q<rmagick>, [">= 1.15.14"])
|
167
171
|
s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.1"])
|
168
|
-
s.add_dependency(%q<tinyatom>, [">= 0.
|
172
|
+
s.add_dependency(%q<tinyatom>, [">= 0.3.3"])
|
169
173
|
s.add_dependency(%q<twitter>, [">= 0.9.12"])
|
170
174
|
s.add_dependency(%q<vimeo>, [">= 1.2.2"])
|
175
|
+
s.add_dependency(%q<flog>, [">= 2.5.0"])
|
171
176
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
172
177
|
end
|
173
178
|
end
|
@@ -1,19 +1,17 @@
|
|
1
|
-
|
2
|
-
uri
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
tinyatom
|
3
|
+
require 'tinyatom'
|
5
4
|
|
6
|
-
murlsh
|
7
|
-
}.each { |m| require m }
|
5
|
+
require 'murlsh'
|
8
6
|
|
9
7
|
module Murlsh
|
10
8
|
|
11
|
-
#
|
9
|
+
# Regenerate atom feed after a new url has been added.
|
12
10
|
class AddPost50UpdateFeed < Plugin
|
13
11
|
|
14
12
|
@hook = 'add_post'
|
15
13
|
|
16
|
-
#
|
14
|
+
# Content types to add an enclosure for.
|
17
15
|
EnclosureContentTypes = %w{
|
18
16
|
application/pdf
|
19
17
|
audio/mpeg
|
@@ -44,7 +42,21 @@ module Murlsh
|
|
44
42
|
:enclosure_title => mu.title
|
45
43
|
)
|
46
44
|
if mu.content_length
|
47
|
-
options.merge!
|
45
|
+
options.merge! :enclosure_length => mu.content_length
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
if mu.thumbnail_url
|
50
|
+
begin
|
51
|
+
# Add root url to relative urls.
|
52
|
+
tu = URI(mu.thumbnail_url)
|
53
|
+
abs_url = if tu.is_a?(URI::HTTP)
|
54
|
+
tu
|
55
|
+
else
|
56
|
+
URI.join config['root_url'], tu
|
57
|
+
end
|
58
|
+
options.merge! :media_thumbnail_url => abs_url
|
59
|
+
rescue URI::InvalidURIError
|
48
60
|
end
|
49
61
|
end
|
50
62
|
|
@@ -58,11 +70,11 @@ module Murlsh
|
|
58
70
|
end
|
59
71
|
end
|
60
72
|
|
61
|
-
feed.add_entry
|
73
|
+
feed.add_entry mu.id, mu.title_stripped, mu.time, mu.url, options
|
62
74
|
end
|
63
75
|
|
64
76
|
Murlsh::openlock(config.fetch('feed_file'), 'w') do |f|
|
65
|
-
feed.make
|
77
|
+
feed.make :target => f
|
66
78
|
end
|
67
79
|
|
68
80
|
end
|
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
uri
|
1
|
+
require 'rss/maker'
|
2
|
+
require 'uri'
|
4
3
|
|
5
|
-
murlsh
|
6
|
-
}.each { |m| require m }
|
4
|
+
require 'murlsh'
|
7
5
|
|
8
6
|
module Murlsh
|
9
7
|
|
@@ -12,7 +10,7 @@ module Murlsh
|
|
12
10
|
|
13
11
|
@hook = 'add_post'
|
14
12
|
|
15
|
-
#
|
13
|
+
# Content types to add an enclosure for.
|
16
14
|
EnclosureContentTypes = %w{
|
17
15
|
application/pdf
|
18
16
|
audio/mpeg
|
@@ -1,12 +1,10 @@
|
|
1
|
-
|
2
|
-
uri
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
6
4
|
|
7
5
|
module Murlsh
|
8
6
|
|
9
|
-
#
|
7
|
+
# Notify PubSubHubbub hubs that feed has been updated.
|
10
8
|
class AddPost60NotifyHubs < Plugin
|
11
9
|
|
12
10
|
@hook = 'add_post'
|
@@ -1,10 +1,7 @@
|
|
1
|
-
|
2
|
-
murlsh
|
3
|
-
}.each { |m| require m }
|
1
|
+
require 'murlsh'
|
4
2
|
|
5
3
|
module Murlsh
|
6
4
|
|
7
|
-
|
8
5
|
# Convert urls specifically for use on mobile devices into their non-mobile
|
9
6
|
# equivalents.
|
10
7
|
class AddPre40ConvertMobile < Plugin
|
@@ -16,12 +13,9 @@ module Murlsh
|
|
16
13
|
|
17
14
|
def self.run(url, config)
|
18
15
|
url.url = case
|
19
|
-
when match = TwitterRe.match(url.url)
|
20
|
-
|
21
|
-
|
22
|
-
"#{match[1]}#{match[2]}"
|
23
|
-
else
|
24
|
-
url.url
|
16
|
+
when match = TwitterRe.match(url.url); "#{match[1]}#{match[2]}"
|
17
|
+
when match = WikipediaRe.match(url.url); "#{match[1]}#{match[2]}"
|
18
|
+
else; url.url
|
25
19
|
end
|
26
20
|
end
|
27
21
|
|
@@ -1,12 +1,10 @@
|
|
1
|
-
|
2
|
-
uri
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
6
4
|
|
7
5
|
module Murlsh
|
8
6
|
|
9
|
-
#
|
7
|
+
# Try to fetch the content length, content type and title of a url.
|
10
8
|
class AddPre50LookupContentTypeTitle < Plugin
|
11
9
|
|
12
10
|
@hook = 'add_pre'
|
@@ -14,7 +12,7 @@ module Murlsh
|
|
14
12
|
def self.run(url, config)
|
15
13
|
ask = URI(url.url).extend(Murlsh::UriAsk)
|
16
14
|
headers = {}
|
17
|
-
headers['User-Agent'] = config['user_agent']
|
15
|
+
headers['User-Agent'] = config['user_agent'] if config['user_agent']
|
18
16
|
|
19
17
|
content_length = ask.content_length(:headers => headers)
|
20
18
|
if content_length and not content_length.empty?
|
@@ -1,21 +1,15 @@
|
|
1
|
-
|
2
|
-
cgi
|
1
|
+
require 'flickraw'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
murlsh
|
7
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
8
4
|
|
9
5
|
module Murlsh
|
10
6
|
|
11
|
-
# Set the title
|
7
|
+
# Set the title of Flickr photos.
|
12
8
|
class AddPre60Flickr < Plugin
|
13
9
|
|
14
10
|
@hook = 'add_pre'
|
15
11
|
|
16
12
|
FlickrRe = %r{^http://(?:www\.)?flickr\.com/photos/[@\w\-]+?/([\d]+)}i
|
17
|
-
StorageDir = File.join(File.dirname(__FILE__), '..', 'public', 'img',
|
18
|
-
'thumb')
|
19
13
|
|
20
14
|
def self.run(url, config)
|
21
15
|
if config['flickr_api_key'] and not config['flickr_api_key'].empty?
|
@@ -24,11 +18,6 @@ module Murlsh
|
|
24
18
|
info = flickr.photos.getInfo(:photo_id => photo_id)
|
25
19
|
|
26
20
|
url.title = "#{info.title} by #{info.owner.username}"
|
27
|
-
|
28
|
-
thumb_storage = Murlsh::ImgStore.new(StorageDir,
|
29
|
-
:user_agent => config['user_agent'])
|
30
|
-
stored_filename = thumb_storage.store(FlickRaw.url_s(info))
|
31
|
-
url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
|
32
21
|
end
|
33
22
|
end
|
34
23
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
uri
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
6
4
|
|
7
5
|
module Murlsh
|
8
6
|
|
@@ -12,12 +10,12 @@ module Murlsh
|
|
12
10
|
|
13
11
|
@hook = 'add_pre'
|
14
12
|
|
15
|
-
GithubRe = %r{^
|
13
|
+
GithubRe = %r{^https?://github\.com/\w+/[\w.-]+$}i
|
16
14
|
|
17
15
|
def self.run(url, config)
|
18
16
|
if url.url[GithubRe]
|
19
17
|
ask = URI(url.url).extend(Murlsh::UriAsk)
|
20
|
-
url.title << " - #{ask.description}"
|
18
|
+
url.title << " - #{ask.description}" unless ask.description.empty?
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
@@ -1,13 +1,11 @@
|
|
1
|
-
|
2
|
-
uri
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
6
4
|
|
7
5
|
module Murlsh
|
8
6
|
|
9
7
|
# Google Code project page titles are not very descriptive so add summary
|
10
|
-
# from page
|
8
|
+
# from page.
|
11
9
|
class AddPre60GoogleCodeTitle < Plugin
|
12
10
|
|
13
11
|
@hook = 'add_pre'
|
@@ -19,7 +17,7 @@ module Murlsh
|
|
19
17
|
ask = URI(url.url).extend(Murlsh::UriAsk)
|
20
18
|
ask.doc.xpath_search("//a[@id='project_summary_link']") do |node|
|
21
19
|
summary = node ? node.inner_html : nil
|
22
|
-
url.title << " - #{ask.decode(summary)}"
|
20
|
+
url.title << " - #{ask.decode(summary)}" unless not summary or
|
23
21
|
summary.empty?
|
24
22
|
end
|
25
23
|
end
|
data/plugins/add_pre_60_imgur.rb
CHANGED
@@ -1,29 +1,17 @@
|
|
1
|
-
|
2
|
-
cgi
|
3
|
-
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
1
|
+
require 'murlsh'
|
6
2
|
|
7
3
|
module Murlsh
|
8
4
|
|
9
|
-
#
|
5
|
+
# Set the title of imgur images.
|
10
6
|
class AddPre60Imgur < Plugin
|
11
7
|
|
12
8
|
@hook = 'add_pre'
|
13
9
|
|
14
|
-
ImgurRe = %r{^
|
15
|
-
StorageDir = File.join(File.dirname(__FILE__), '..', 'public', 'img',
|
16
|
-
'thumb')
|
10
|
+
ImgurRe = %r{^http://(?:i\.)?imgur\.com/([a-z\d]+)(\.(?:jpe?g|gif|png))$}i
|
17
11
|
|
18
12
|
def self.run(url, config)
|
19
13
|
if match = ImgurRe.match(url.url)
|
20
|
-
url.title = "imgur/#{match[
|
21
|
-
|
22
|
-
thumb_storage = Murlsh::ImgStore.new(StorageDir,
|
23
|
-
:user_agent => config['user_agent'])
|
24
|
-
stored_filename = thumb_storage.store(
|
25
|
-
"#{match[1]}#{match[2]}s#{match[3]}")
|
26
|
-
url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
|
14
|
+
url.title = "imgur/#{match[1]}s#{match[2]}"
|
27
15
|
end
|
28
16
|
end
|
29
17
|
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
cgi
|
1
|
+
require 'cgi'
|
3
2
|
|
4
|
-
murlsh
|
5
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
6
4
|
|
7
5
|
module Murlsh
|
8
6
|
|
@@ -21,8 +19,11 @@ module Murlsh
|
|
21
19
|
|
22
20
|
thumb_storage = Murlsh::ImgStore.new(StorageDir,
|
23
21
|
:user_agent => config['user_agent'])
|
24
|
-
stored_filename = thumb_storage.
|
25
|
-
"#{match[1]}#{match[2]}.th.#{extension}")
|
22
|
+
stored_filename = thumb_storage.store_url(
|
23
|
+
"#{match[1]}#{match[2]}.th.#{extension}") do |i|
|
24
|
+
max_side = config.fetch('thumbnail_max_side', 90)
|
25
|
+
i.extend(Murlsh::ImageList).resize_down!(max_side)
|
26
|
+
end
|
26
27
|
|
27
28
|
url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
|
28
29
|
url.title = match[2]
|
@@ -1,32 +1,21 @@
|
|
1
|
-
|
2
|
-
cgi
|
1
|
+
require 'twitter'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
murlsh
|
7
|
-
}.each { |m| require m }
|
3
|
+
require 'murlsh'
|
8
4
|
|
9
5
|
module Murlsh
|
10
6
|
|
11
|
-
# Set title
|
7
|
+
# Set title of twitter status urls to entire tweet.
|
12
8
|
class AddPre60Twitter < Plugin
|
13
9
|
|
14
10
|
@hook = 'add_pre'
|
15
11
|
|
16
12
|
TwitterRe = %r{^https?://twitter\.com/\w+/status(?:es)?/(\d+)$}i
|
17
|
-
StorageDir = File.join(File.dirname(__FILE__), '..', 'public', 'img',
|
18
|
-
'thumb')
|
19
13
|
|
20
14
|
def self.run(url, config)
|
21
15
|
if tweet_id = url.url[TwitterRe, 1]
|
22
16
|
tweet = Twitter.status(tweet_id)
|
23
17
|
|
24
18
|
url.title = "@#{tweet.user.screen_name}: #{tweet.text}"
|
25
|
-
|
26
|
-
thumb_storage = Murlsh::ImgStore.new(StorageDir,
|
27
|
-
:user_agent => config['user_agent'])
|
28
|
-
stored_filename = thumb_storage.store(tweet.user.profile_image_url)
|
29
|
-
url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
|
30
19
|
end
|
31
20
|
end
|
32
21
|
|
data/plugins/add_pre_60_vimeo.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
|
2
|
-
cgi
|
1
|
+
require 'cgi'
|
3
2
|
|
4
|
-
vimeo
|
3
|
+
require 'vimeo'
|
5
4
|
|
6
|
-
murlsh
|
7
|
-
}.each { |m| require m }
|
5
|
+
require 'murlsh'
|
8
6
|
|
9
7
|
module Murlsh
|
10
8
|
|
@@ -25,7 +23,10 @@ module Murlsh
|
|
25
23
|
|
26
24
|
thumb_storage = Murlsh::ImgStore.new(StorageDir,
|
27
25
|
:user_agent => config['user_agent'])
|
28
|
-
stored_filename = thumb_storage.
|
26
|
+
stored_filename = thumb_storage.store_url(info['thumbnail_small']) do |i|
|
27
|
+
max_side = config.fetch('thumbnail_max_side', 90)
|
28
|
+
i.extend(Murlsh::ImageList).resize_down!(max_side)
|
29
|
+
end
|
29
30
|
url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
|
30
31
|
end
|
31
32
|
end
|