bremen 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/LICENSE.txt +2 -2
- data/README.md +4 -2
- data/bremen.gemspec +19 -17
- data/lib/bremen/nicovideo.rb +7 -7
- data/lib/bremen/version.rb +1 -1
- data/spec/fixtures/nicovideo_multi.html +34 -37
- data/spec/spec_helper.rb +2 -0
- metadata +47 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9e74839d7d457ec1ed46c65c82444f33f62c75d9
|
|
4
|
+
data.tar.gz: fbdafe69f7f70a0b3a1480abcf61f3dca2dd8899
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3aefb2b8221d5ec9c834c4c6ec95a064a33b40d3ada1a7a9351123049388c49c20057a4c787c3d33a3a54d430a8ebd20eeee9d60a3fb676fec275fe06947b3d0
|
|
7
|
+
data.tar.gz: b9d650b0c844d9057460b164cb1d31ccafed870251b804fcb170693926b8b72b1c8c4cacb3a900e9fbae289b5967b83115c61e1c890b557248d2c7aa5f82ac89
|
data/.travis.yml
CHANGED
data/LICENSE.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2012
|
|
1
|
+
Copyright (c) 2012 deeeki
|
|
2
2
|
|
|
3
3
|
MIT License
|
|
4
4
|
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Bremen [](https://travis-ci.org/deeeki/bremen) [](https://coveralls.io/r/deeeki/bremen) [](https://codeclimate.com/github/deeeki/bremen) [](http://badge.fury.io/rb/bremen)
|
|
2
2
|
|
|
3
3
|
**Bremen** provides common search interface for some music websites. it supports YouTube, SoundCloud, MixCloud and Nicovideo
|
|
4
4
|
|
|
@@ -20,7 +20,9 @@ Or install it yourself as:
|
|
|
20
20
|
|
|
21
21
|
As far as SoundCloud concerned, you need to set your app's client id before using.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
```ruby
|
|
24
|
+
Bremen::Soundcloud.client_id = 'your_client_id'
|
|
25
|
+
```
|
|
24
26
|
|
|
25
27
|
Alternately, you can set 'SOUNDCLOUD_CLIENT_ID' environment variable.
|
|
26
28
|
|
data/bremen.gemspec
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# coding: utf-8
|
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'bremen/version'
|
|
5
5
|
|
|
6
|
-
Gem::Specification.new do |
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "bremen"
|
|
8
|
+
spec.version = Bremen::VERSION
|
|
9
|
+
spec.authors = ["deeeki"]
|
|
10
|
+
spec.email = ["deeeki@gmail.com"]
|
|
11
|
+
spec.summary = %q{integrated searcher of audio tracks on music sites}
|
|
12
|
+
spec.description = %q{Bremen provides common search interface for some music websites. it supports YouTube, SoundCloud, MixCloud and Nicovideo}
|
|
13
|
+
spec.homepage = "https://github.com/deeeki/bremen"
|
|
14
|
+
spec.license = "MIT"
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
|
22
|
+
spec.add_development_dependency 'rake', '~> 10'
|
|
23
|
+
spec.add_development_dependency 'coveralls', '~> 0'
|
|
24
|
+
spec.add_development_dependency 'guard-minitest', '~> 2'
|
|
25
|
+
spec.add_development_dependency 'terminal-notifier-guard', '~> 1'
|
|
24
26
|
end
|
data/lib/bremen/nicovideo.rb
CHANGED
|
@@ -55,18 +55,18 @@ module Bremen
|
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def convert_multiply response
|
|
58
|
-
return [] if response.scan(%r{<div class="
|
|
58
|
+
return [] if response.scan(%r{<div class="videoList01">}).flatten.first
|
|
59
59
|
|
|
60
|
-
response.scan(%r{<
|
|
61
|
-
uid = html.scan(%r{<
|
|
62
|
-
min, sec = html.scan(%r{<
|
|
63
|
-
created_at = Time.parse(html.scan(%r{<
|
|
60
|
+
response.scan(%r{<li class="item" [^>]+ data-enable-uad="1">\n(.*?)\n </li>}m).flatten.map do |html|
|
|
61
|
+
uid = html.scan(%r{<div class="itemThumb" [^>]+ data-id="(.+)">}).flatten.first
|
|
62
|
+
min, sec = html.scan(%r{<span class="videoLength">([\d:]+)</span></div>}).flatten.first.to_s.split(':')
|
|
63
|
+
created_at = Time.parse(html.scan(%r{<span class="time">(.+:\d\d)</span>}).flatten.first.to_s.gsub(/\xE5\xB9\xB4|\xE6\x9C\x88|\xE6\x97\xA5/n, '')).utc
|
|
64
64
|
new({
|
|
65
65
|
uid: uid,
|
|
66
66
|
url: "#{BASE_URL}watch/#{uid}",
|
|
67
|
-
title: CGI.unescape(html.scan(%r{<
|
|
67
|
+
title: CGI.unescape(html.scan(%r{<p class="itemTitle">\n\s+<a [^>]+>(.+)</a>}).flatten.first.to_s),
|
|
68
68
|
length: min.to_i * 60 + sec.to_i,
|
|
69
|
-
thumbnail_url: html.scan(%r{<img
|
|
69
|
+
thumbnail_url: html.scan(%r{<img [^>]+data-original="([^"]+)"[^>]*data-thumbnail [^>]+/?>}).flatten.first,
|
|
70
70
|
created_at: created_at,
|
|
71
71
|
updated_at: created_at,
|
|
72
72
|
})
|
data/lib/bremen/version.rb
CHANGED
|
@@ -1,44 +1,41 @@
|
|
|
1
1
|
<html>
|
|
2
2
|
<body>
|
|
3
|
-
<div class="
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
</td>
|
|
19
|
-
<td class="font10" align="right"><div style="width:92px; overflow:hidden; padding-left:4px;"><nobr>Views: <strong class="vinfo_view">111</strong><br></nobr>
|
|
20
|
-
<nobr>Comments: <strong class="vinfo_res">1</strong><br></nobr>
|
|
21
|
-
<nobr>My Lists: <a href="mylistcomment/video/sm11111111" style="color:#393F3F;"><strong class="vinfo_mylist">9</strong></a><br></nobr>
|
|
22
|
-
<nobr>Ads: <a href="http://uad.nicovideo.jp/ads/?vid=sm11111111" style="color:#393F3F;"><strong id="item1_uad_point_number" class="vinfo_uadp">0</strong></a><br></nobr>
|
|
23
|
-
</div></td>
|
|
24
|
-
</tr>
|
|
25
|
-
</table>
|
|
26
|
-
</div>
|
|
27
|
-
</td>
|
|
28
|
-
<td style="background:url('http://res.nimg.jp/img/common/thumb/split_line.png') no-repeat bottom left; padding-bottom:6px;">
|
|
29
|
-
<div style="width:412px; overflow:hidden;">
|
|
30
|
-
<p class="font12 thumb_num">
|
|
3
|
+
<div class="contentBody video uad videoList01">
|
|
4
|
+
<ul class="list">
|
|
5
|
+
|
|
6
|
+
<li class="item" data-video-item data-id="sm11111111" data-enable-uad="1">
|
|
7
|
+
<div class="videoList01Wrap">
|
|
8
|
+
<p class="itemTime"><span class="time">14/06/15 00:00</span><span class="separate">投稿</span></p>
|
|
9
|
+
<div class="uadWrap">
|
|
10
|
+
<div class="itemThumbBox"><div class="itemThumb" data-video-thumbnail data-id="sm11111111"><a href="/watch/sm11111111?ref=search_key_video" class="itemThumbWrap" data-link
|
|
11
|
+
><img src="http://res.nimg.jp/images/noimage.png" title="" alt="" class="noImage"><img class="jsLazyImage thumb" src="images/1x1.gif" data-original="http://tn-skr2.smilevideo.jp/smile?i=11111111.M" alt="Title" data-thumbnail style="
|
|
12
|
+
|
|
13
|
+
"></a></div><span class="videoLength">1:01</span></div>
|
|
14
|
+
|
|
15
|
+
<div class="balloon recent active" data-uad-comment style="display:none"></div>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
31
18
|
|
|
19
|
+
<div class="itemContent">
|
|
20
|
+
<p class="itemTitle">
|
|
21
|
+
<a title="Title" href="/watch/sm11111111?ref=search_key_video">Title</a>
|
|
22
|
+
</p>
|
|
23
|
+
<div class="wrap">
|
|
24
|
+
<p title="This is a description." class="itemDescription">This is a description.</p>
|
|
25
|
+
<p class="itemComment">Comment</p>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="itemData">
|
|
28
|
+
<ul class="list">
|
|
29
|
+
<li class="count view">再生<span class="value">111</span></li>
|
|
30
|
+
<li class="count comment">コメ<span class="value">1</span></li>
|
|
31
|
+
<li class="count mylist">マイ<span class="value"><a href="/mylistcomment/video/sm11111111">1</a></span></li>
|
|
32
|
+
<li class="count ads">宣伝<span class="value"><a href="http://uad.nicovideo.jp/ads/?vid=sm11111111" data-uad-point>0</a></span></li>
|
|
33
|
+
</ul>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
</
|
|
35
|
-
<p class="font16" style="margin:2px 0;"><nobr><a href="watch/sm11111111" class="watch" title="Title">Title</a></nobr></p>
|
|
36
|
-
<p class="vinfo_description" title="This is a description.">This is a description.</p>
|
|
37
|
+
</li>
|
|
38
|
+
</ul>
|
|
37
39
|
</div>
|
|
38
|
-
</td>
|
|
39
|
-
</tr>
|
|
40
|
-
</table>
|
|
41
|
-
<!---->
|
|
42
|
-
</div></div>
|
|
43
40
|
</body>
|
|
44
41
|
</html>
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,80 +1,95 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bremen
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- deeeki
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-06-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '1.6'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '1.6'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '10'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '10'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: coveralls
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: guard-minitest
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '2'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
69
|
-
|
|
68
|
+
version: '2'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: terminal-notifier-guard
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '1'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '1'
|
|
83
|
+
description: Bremen provides common search interface for some music websites. it supports
|
|
84
|
+
YouTube, SoundCloud, MixCloud and Nicovideo
|
|
70
85
|
email:
|
|
71
|
-
-
|
|
86
|
+
- deeeki@gmail.com
|
|
72
87
|
executables: []
|
|
73
88
|
extensions: []
|
|
74
89
|
extra_rdoc_files: []
|
|
75
90
|
files:
|
|
76
|
-
- .gitignore
|
|
77
|
-
- .travis.yml
|
|
91
|
+
- ".gitignore"
|
|
92
|
+
- ".travis.yml"
|
|
78
93
|
- Gemfile
|
|
79
94
|
- Guardfile
|
|
80
95
|
- LICENSE.txt
|
|
@@ -105,8 +120,9 @@ files:
|
|
|
105
120
|
- spec/fixtures/youtube_multi.json
|
|
106
121
|
- spec/fixtures/youtube_single.json
|
|
107
122
|
- spec/spec_helper.rb
|
|
108
|
-
homepage: https://github.com/
|
|
109
|
-
licenses:
|
|
123
|
+
homepage: https://github.com/deeeki/bremen
|
|
124
|
+
licenses:
|
|
125
|
+
- MIT
|
|
110
126
|
metadata: {}
|
|
111
127
|
post_install_message:
|
|
112
128
|
rdoc_options: []
|
|
@@ -114,21 +130,20 @@ require_paths:
|
|
|
114
130
|
- lib
|
|
115
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
132
|
requirements:
|
|
117
|
-
- -
|
|
133
|
+
- - ">="
|
|
118
134
|
- !ruby/object:Gem::Version
|
|
119
135
|
version: '0'
|
|
120
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
137
|
requirements:
|
|
122
|
-
- -
|
|
138
|
+
- - ">="
|
|
123
139
|
- !ruby/object:Gem::Version
|
|
124
140
|
version: '0'
|
|
125
141
|
requirements: []
|
|
126
142
|
rubyforge_project:
|
|
127
|
-
rubygems_version: 2.0
|
|
143
|
+
rubygems_version: 2.3.0
|
|
128
144
|
signing_key:
|
|
129
145
|
specification_version: 4
|
|
130
|
-
summary:
|
|
131
|
-
YouTube, SoundCloud, MixCloud and Nicovideo
|
|
146
|
+
summary: integrated searcher of audio tracks on music sites
|
|
132
147
|
test_files:
|
|
133
148
|
- spec/bremen/base_spec.rb
|
|
134
149
|
- spec/bremen/mixcloud_spec.rb
|