muri 1.1.5 → 1.1.6
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/CHANGELOG +4 -0
- data/README.textile +3 -3
- data/Rakefile +9 -3
- data/VERSION.yml +1 -1
- data/lib/muri/filters/facebook.rb +16 -13
- data/lib/muri/filters/youtube.rb +5 -1
- data/muri.gemspec +21 -21
- data/{test/facebook_test.rb → spec/facebook_spec.rb} +27 -0
- data/{test/youtube_test.rb → spec/youtube_spec.rb} +11 -1
- metadata +23 -30
- /data/{test/error_test.rb → spec/error_spec.rb} +0 -0
- /data/{test/flickr_test.rb → spec/flickr_spec.rb} +0 -0
- /data/{test/imageshack_test.rb → spec/imageshack_spec.rb} +0 -0
- /data/{test/photobucket_test.rb → spec/photobucket_spec.rb} +0 -0
- /data/{test/picasa_test.rb → spec/picasa_spec.rb} +0 -0
- /data/{test/twitpic_test.rb → spec/twitpic_spec.rb} +0 -0
- /data/{test/vimeo_test.rb → spec/vimeo_spec.rb} +0 -0
data/CHANGELOG
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
Muri Changelog
|
2
2
|
===================================
|
3
3
|
|
4
|
+
Version 1.1.6 (Git)
|
5
|
+
* Reenabled Facebook album parsing ability
|
6
|
+
* Enabled short URL's for youtube (ex/ http://youtu.be/ZL1Jta1j42c)
|
7
|
+
|
4
8
|
Version 1.1.5
|
5
9
|
* Minor update, changed facebook "media_api_id" to only return a string representation, not a hash
|
6
10
|
- Facebook provides "media_api_ids" which is a hash including pid, uid, and fql_id (the regular "media_api_id")
|
data/README.textile
CHANGED
@@ -7,14 +7,14 @@ MURI Currently supports:
|
|
7
7
|
** "API documentation":http://code.google.com/apis/youtube/2.0/developers_guide_protocol_audience.html
|
8
8
|
* Vimeo (single videos and albums)
|
9
9
|
** "API documentation":http://vimeo.com/api/docs/simple-api
|
10
|
-
* Flickr (single
|
10
|
+
* Flickr (single media items and sets)
|
11
11
|
** "API documentation":http://www.flickr.com/services/api/ or "API Doc 2":http://developer.yahoo.com/flickr/
|
12
12
|
* Imageshack
|
13
|
-
* Photobucket
|
13
|
+
* Photobucket (media items and albums)
|
14
14
|
** "API documentation":http://photobucket.com/developer/documentation
|
15
15
|
* Twitpic
|
16
16
|
** "API documentation":http://twitpic.com/api.do
|
17
|
-
* Facebook (photos and albums)
|
17
|
+
* Facebook (photos, videos and albums)
|
18
18
|
** "API documentation":http://wiki.developers.facebook.com/index.php/API
|
19
19
|
* Picasa (photos)
|
20
20
|
** "API documentation":http://code.google.com/apis/picasaweb/docs/2.0/developers_guide.html
|
data/Rakefile
CHANGED
@@ -14,8 +14,14 @@ rescue LoadError
|
|
14
14
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
15
15
|
end
|
16
16
|
require 'rake'
|
17
|
-
require '
|
17
|
+
require 'rspec/core/rake_task'
|
18
18
|
|
19
|
-
|
20
|
-
t.
|
19
|
+
RSpec::Core::RakeTask.new('tests') do |t|
|
20
|
+
t.rcov_opts = FileList['test/*.rb']
|
21
21
|
end
|
22
|
+
|
23
|
+
# require 'spec/rake/spectask'
|
24
|
+
#
|
25
|
+
# Spec::Rake::SpecTask.new('tests') do |t|
|
26
|
+
# t.spec_files = FileList['test/*.rb']
|
27
|
+
# end
|
data/VERSION.yml
CHANGED
@@ -5,11 +5,11 @@ class Muri
|
|
5
5
|
private
|
6
6
|
FACEBOOK_PHOTO = "photo"
|
7
7
|
FACEBOOK_VIDEO = "video"
|
8
|
+
FACEBOOK_ALBUM = "album"
|
8
9
|
|
9
|
-
#FACEBOOK_ALBUM = "album"
|
10
10
|
REGEX_FACEBOOK_PHOTO = /\/photo\.php/i
|
11
11
|
REGEX_FACEBOOK_VIDEO = /\/video\/video\.php/i
|
12
|
-
|
12
|
+
REGEX_FACEBOOK_ALBUM = /\/album\.php/i
|
13
13
|
|
14
14
|
def self.included(base)
|
15
15
|
base.class_eval do
|
@@ -50,17 +50,20 @@ class Muri
|
|
50
50
|
self.media_api_ids = { :pid => pid, :uid => media_creator, :fql_id => fql_id }
|
51
51
|
|
52
52
|
self.media_website = "#{url_common}/photo.php?pid=#{self.media_id}&id=#{media_creator}"
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
53
|
+
elsif (url_string =~ REGEX_FACEBOOK_ALBUM &&
|
54
|
+
(aid = url_string.gsub(/\A.*?aid=(\d+)(&.*|\Z)/i, '\1')) &&
|
55
|
+
(uid = url_string.gsub(/\A.*?[^a]id=(\d+)(&.*|\Z)/i, '\1')))
|
56
|
+
|
57
|
+
self.media_api_type = FACEBOOK_ALBUM
|
58
|
+
self.media_id = aid
|
59
|
+
media_creator = uid
|
60
|
+
|
61
|
+
fql_id = ((media_creator.to_i << 32) + self.media_id.to_i).to_s
|
62
|
+
|
63
|
+
self.media_api_id = fql_id
|
64
|
+
|
65
|
+
self.media_api_ids = { :aid => aid, :uid => media_creator, :fql_id => fql_id }
|
66
|
+
self.media_website = "#{url_common}/album.php?aid=#{self.media_id}&id=#{media_creator}"
|
64
67
|
else
|
65
68
|
raise UnsupportedURI
|
66
69
|
end
|
data/lib/muri/filters/youtube.rb
CHANGED
@@ -10,6 +10,7 @@ class Muri
|
|
10
10
|
REGEX_YOUTUBE_VIDEO_DIRECT = /\/v\/([a-z0-9\-\_]+)/i
|
11
11
|
REGEX_YOUTUBE_PLAYLIST_WATCH = /^\/view\_play\_list\/?$/i
|
12
12
|
REGEX_YOUTUBE_PLAYLIST_DIRECT = /^\/p\/([a-z0-9\-\_]+)/i
|
13
|
+
REGEX_YOUTUBE_SHORTURL = /^\/([a-z0-9]+)$/i
|
13
14
|
|
14
15
|
def self.included(base)
|
15
16
|
base.class_eval do
|
@@ -18,7 +19,7 @@ class Muri
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def self.parsable?(uri)
|
21
|
-
uri.host =~ /^(www\.)?
|
22
|
+
uri.host =~ /^(www\.)?youtu(be\.com|\.be)$/i
|
22
23
|
end
|
23
24
|
|
24
25
|
def youtube_parse
|
@@ -39,6 +40,9 @@ class Muri
|
|
39
40
|
elsif (self.uri.path =~ REGEX_YOUTUBE_PLAYLIST_WATCH) && params['p']
|
40
41
|
self.media_id = params['p']
|
41
42
|
self.media_api_type = YOUTUBE_PLAYLIST
|
43
|
+
elsif (self.uri.path =~ REGEX_YOUTUBE_SHORTURL)
|
44
|
+
self.media_id = $1
|
45
|
+
self.media_api_type = YOUTUBE_VIDEO
|
42
46
|
else
|
43
47
|
raise UnsupportedURI
|
44
48
|
end
|
data/muri.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muri}
|
8
|
-
s.version = "1.1.
|
8
|
+
s.version = "1.1.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["William Schneider"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-04-19}
|
13
13
|
s.description = %q{Automatically get media information from the URL.}
|
14
14
|
s.email = %q{bananastalktome@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,31 +33,31 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/muri/filters/vimeo.rb",
|
34
34
|
"lib/muri/filters/youtube.rb",
|
35
35
|
"muri.gemspec",
|
36
|
-
"
|
37
|
-
"
|
38
|
-
"
|
39
|
-
"
|
40
|
-
"
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
"
|
36
|
+
"spec/error_spec.rb",
|
37
|
+
"spec/facebook_spec.rb",
|
38
|
+
"spec/flickr_spec.rb",
|
39
|
+
"spec/imageshack_spec.rb",
|
40
|
+
"spec/photobucket_spec.rb",
|
41
|
+
"spec/picasa_spec.rb",
|
42
|
+
"spec/twitpic_spec.rb",
|
43
|
+
"spec/vimeo_spec.rb",
|
44
|
+
"spec/youtube_spec.rb"
|
45
45
|
]
|
46
46
|
s.homepage = %q{http://github.com/bananastalktome/muri/}
|
47
47
|
s.rdoc_options = ["--charset=UTF-8"]
|
48
48
|
s.require_paths = ["lib"]
|
49
|
-
s.rubygems_version = %q{1.3.
|
49
|
+
s.rubygems_version = %q{1.3.5}
|
50
50
|
s.summary = %q{Media URI Parser}
|
51
51
|
s.test_files = [
|
52
|
-
"
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
56
|
-
"
|
57
|
-
"
|
58
|
-
"
|
59
|
-
"
|
60
|
-
"
|
52
|
+
"spec/vimeo_spec.rb",
|
53
|
+
"spec/flickr_spec.rb",
|
54
|
+
"spec/twitpic_spec.rb",
|
55
|
+
"spec/picasa_spec.rb",
|
56
|
+
"spec/photobucket_spec.rb",
|
57
|
+
"spec/facebook_spec.rb",
|
58
|
+
"spec/youtube_spec.rb",
|
59
|
+
"spec/error_spec.rb",
|
60
|
+
"spec/imageshack_spec.rb"
|
61
61
|
]
|
62
62
|
|
63
63
|
if s.respond_to? :specification_version then
|
@@ -17,6 +17,25 @@ shared_examples_for "Facebook parse" do
|
|
17
17
|
@a.valid?.should == true
|
18
18
|
end
|
19
19
|
end
|
20
|
+
shared_examples_for "Facebook parse album" do
|
21
|
+
it_should_behave_like "Facebook parse"
|
22
|
+
it "should have media api type = FACEBOOK_VIDEO" do
|
23
|
+
@a.media_api_type.should == Muri::FACEBOOK_ALBUM
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be facebook video" do
|
27
|
+
@a.facebook_album?.should == true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should not be facebook photo" do
|
31
|
+
@a.facebook_photo?.should == false
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should not be flickr media" do
|
35
|
+
@a.flickr_media?.should == false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
20
39
|
shared_examples_for "Facebook parse video" do
|
21
40
|
it_should_behave_like "Facebook parse"
|
22
41
|
it "should have media api type = FACEBOOK_VIDEO" do
|
@@ -70,6 +89,12 @@ end
|
|
70
89
|
:media_id => '545993063513',
|
71
90
|
:media_website => "http://www.facebook.com/video/video.php?v=545993063513",
|
72
91
|
:media_api_id => '545993063513'
|
92
|
+
},
|
93
|
+
'http://www.facebook.com/home.php?#!/album.php?id=15201063&aid=2149275' =>
|
94
|
+
{ :type => :album,
|
95
|
+
:media_id => '2149275',
|
96
|
+
:media_website => 'http://www.facebook.com/album.php?aid=2149275&id=15201063',
|
97
|
+
:media_api_id => '65288068451584923'
|
73
98
|
}
|
74
99
|
}.each do |url, values|
|
75
100
|
describe "Facebook parse #{url}" do
|
@@ -80,6 +105,8 @@ end
|
|
80
105
|
it_should_behave_like "Facebook parse photo"
|
81
106
|
elsif values[:type] == :video
|
82
107
|
it_should_behave_like "Facebook parse video"
|
108
|
+
elsif values[:type] == :album
|
109
|
+
it_should_behave_like "Facebook parse album"
|
83
110
|
end
|
84
111
|
|
85
112
|
if values[:media_id]
|
@@ -79,7 +79,17 @@ end
|
|
79
79
|
{ :type => :video,
|
80
80
|
:media_id => 'IPFnWoYy_8w',
|
81
81
|
:media_api_id => 'IPFnWoYy_8w'
|
82
|
-
}
|
82
|
+
},
|
83
|
+
"http://youtu.be/ZL1Jta1j42c" =>
|
84
|
+
{ :type => :video,
|
85
|
+
:media_id => "ZL1Jta1j42c",
|
86
|
+
:media_api_id => "ZL1Jta1j42c"
|
87
|
+
},
|
88
|
+
"http://youtu.be/ZL1Jta1j42c?hd=1" =>
|
89
|
+
{ :type => :video,
|
90
|
+
:media_id => "ZL1Jta1j42c",
|
91
|
+
:media_api_id => "ZL1Jta1j42c"
|
92
|
+
}
|
83
93
|
}.each do |url, values|
|
84
94
|
describe "Youtube parse #{values[:type]} #{url}" do
|
85
95
|
before(:all) do
|
metadata
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 1
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
version: 1.1.5
|
4
|
+
version: 1.1.6
|
10
5
|
platform: ruby
|
11
6
|
authors:
|
12
7
|
- William Schneider
|
@@ -14,7 +9,7 @@ autorequire:
|
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
11
|
|
17
|
-
date:
|
12
|
+
date: 2011-04-19 00:00:00 -04:00
|
18
13
|
default_executable:
|
19
14
|
dependencies: []
|
20
15
|
|
@@ -44,15 +39,15 @@ files:
|
|
44
39
|
- lib/muri/filters/vimeo.rb
|
45
40
|
- lib/muri/filters/youtube.rb
|
46
41
|
- muri.gemspec
|
47
|
-
-
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
51
|
-
-
|
52
|
-
-
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
42
|
+
- spec/error_spec.rb
|
43
|
+
- spec/facebook_spec.rb
|
44
|
+
- spec/flickr_spec.rb
|
45
|
+
- spec/imageshack_spec.rb
|
46
|
+
- spec/photobucket_spec.rb
|
47
|
+
- spec/picasa_spec.rb
|
48
|
+
- spec/twitpic_spec.rb
|
49
|
+
- spec/vimeo_spec.rb
|
50
|
+
- spec/youtube_spec.rb
|
56
51
|
has_rdoc: true
|
57
52
|
homepage: http://github.com/bananastalktome/muri/
|
58
53
|
licenses: []
|
@@ -66,30 +61,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
61
|
requirements:
|
67
62
|
- - ">="
|
68
63
|
- !ruby/object:Gem::Version
|
69
|
-
segments:
|
70
|
-
- 0
|
71
64
|
version: "0"
|
65
|
+
version:
|
72
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
67
|
requirements:
|
74
68
|
- - ">="
|
75
69
|
- !ruby/object:Gem::Version
|
76
|
-
segments:
|
77
|
-
- 0
|
78
70
|
version: "0"
|
71
|
+
version:
|
79
72
|
requirements: []
|
80
73
|
|
81
74
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.3.
|
75
|
+
rubygems_version: 1.3.5
|
83
76
|
signing_key:
|
84
77
|
specification_version: 3
|
85
78
|
summary: Media URI Parser
|
86
79
|
test_files:
|
87
|
-
-
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
80
|
+
- spec/vimeo_spec.rb
|
81
|
+
- spec/flickr_spec.rb
|
82
|
+
- spec/twitpic_spec.rb
|
83
|
+
- spec/picasa_spec.rb
|
84
|
+
- spec/photobucket_spec.rb
|
85
|
+
- spec/facebook_spec.rb
|
86
|
+
- spec/youtube_spec.rb
|
87
|
+
- spec/error_spec.rb
|
88
|
+
- spec/imageshack_spec.rb
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|