frumber 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c60288a0ad2309f08596e33af8b9579a794d30e5
4
+ data.tar.gz: 1120537d7ec9e70b4c1675e6f461610ea79c759c
5
+ SHA512:
6
+ metadata.gz: ae23276f9e67bfc17bbfec80023a07d582738e261bd323b6f46aca00dc5769ddcdb3e84694467425b2236045f41ef6088ecf6cc7df97cdae7144dd27bba37f7f
7
+ data.tar.gz: f4ce072eb799321cea25e24e16815be261ab842f706dc09f30d93df2b4c0426ae6a29ef5264cb421054d471893997a18a80c9a7d1ea2bf3308931966378e4c67
@@ -0,0 +1,12 @@
1
+ require 'youtube_it'
2
+ require 'vimeo'
3
+ require 'soundcloud'
4
+ require 'nicovideo'
5
+
6
+ require 'frumber/host_checker'
7
+ require 'frumber/iframe_getter'
8
+ require 'frumber/thumbnail_getter'
9
+ require 'provider'
10
+
11
+ class Frumber
12
+ end
@@ -0,0 +1,9 @@
1
+ class Frumber
2
+ module HostChecker
3
+ private
4
+ VALID_DOMAIN_REGEX = /^(https?:\/{2})?(w{3}\.)?(?<domain>youtube|youtu|nicovideo|vimeo|soundcloud)\.(jp|com|be)+\//
5
+ def url_host url
6
+ url.downcase.match(VALID_DOMAIN_REGEX)[:domain]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ require 'oembed'
2
+
3
+ class Frumber
4
+ class IframeGetter
5
+ class << self
6
+ include Frumber::HostChecker
7
+
8
+ def get url, width = 800
9
+ case url_host(url)
10
+ when "youtube", "youtu"
11
+ OEmbed::Providers::Youtube.get(url, width: width).fields["html"]
12
+ when "vimeo"
13
+ OEmbed::Providers::Vimeo.get(url, width: width).fields["html"]
14
+ when "soundcloud"
15
+ Soundcloud.new(client_id: Provider::Soundcloud::CLIENT_ID).
16
+ get('/oembed', url: url).html
17
+ when "nicovideo"
18
+ "<iframe width=\"#{width}\" height=\"#{(width*0.75).to_i}\" src=\"http://ext.nicovideo.jp/thumb_watch/#{url.split("/").last}?thumb_mode=html\" frameborder=\"0\" allowfullscreen></iframe>"
19
+ else
20
+ nil
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ class Frumber
2
+ class ThumbnailGetter
3
+ class << self
4
+ include Frumber::HostChecker
5
+
6
+ def get url
7
+ begin
8
+ case url_host(url)
9
+ when "youtube", "youtu"
10
+ YouTubeIt::Client.new.video_by(url).thumbnails[3].url
11
+ when "vimeo"
12
+ Vimeo::Simple::Video.info(url.split("/").last).parsed_response.first["thumbnail_large"]
13
+ when "soundcloud"
14
+ Soundcloud.new(client_id: Provider::Soundcloud::CLIENT_ID).
15
+ get('/resolve', url: url).artwork_url.gsub("-large","-t500x500")
16
+ when "nicovideo"
17
+ Nicovideo::Thumbnail.new.get(url.split("/").last)["thumbnail_url"]
18
+ else
19
+ nil
20
+ end
21
+ rescue
22
+ nil
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ require 'provider/nicovideo'
2
+ require 'provider/soundcloud'
3
+ require 'provider/vimeo'
4
+ require 'provider/youtube'
5
+
6
+ class Provider
7
+ end
@@ -0,0 +1,4 @@
1
+ class Provider
2
+ class Nicovideo < ::Provider
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ class Provider
2
+ class Soundcloud < ::Provider
3
+ CLIENT_ID = "543138120a50af608edb047ce339eb6e"
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ class Provider
2
+ class Vimeo < ::Provider
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ class Provider
2
+ class YouTube < ::Provider
3
+ end
4
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frumber
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - ChiKim
8
+ - TungD
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ruby-oembed
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: youtube_it
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: vimeo
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: soundcloud
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: nicovideo
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: Framgia's iframe and thumbnail getter
85
+ email: nguyen.dang.huy@framgia.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - lib/frumber.rb
91
+ - lib/frumber/host_checker.rb
92
+ - lib/frumber/iframe_getter.rb
93
+ - lib/frumber/thumbnail_getter.rb
94
+ - lib/provider.rb
95
+ - lib/provider/nicovideo.rb
96
+ - lib/provider/soundcloud.rb
97
+ - lib/provider/vimeo.rb
98
+ - lib/provider/youtube.rb
99
+ homepage: http://github.com/chikim/frumber
100
+ licenses: []
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.0.3
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: Frumber
122
+ test_files: []
123
+ has_rdoc: