honeysearch 0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6bf9c29180cb84712ece27867a80fbf20d42c58b76b9c2ac7d1180affe6d97f7
4
+ data.tar.gz: 139725efd3905d854a24ae03a8e5fdc39f28033eb4149be054d7cb88403a18f9
5
+ SHA512:
6
+ metadata.gz: 293194618617c097aada636d582dcbebff61ea8591059037e6e6492fda3fe553590dc1d9f520766c7987185fc93bf8ebb15b1361e3b7a70eb9c7373807cb3825
7
+ data.tar.gz: bb9bf487e02999d9d1b671c501c05bb53b995077e3a75d56a9b034fca3d96ee0ae7caf6795898d2448cfc80c502f53b18532d237a9da06376a745f2f559a93e1
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in honeysearch.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "rspec", "~> 3.0"
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "honeysearch"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,27 @@
1
+ require_relative 'lib/honeysearch/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "honeysearch"
5
+ spec.version = Honeysearch::VERSION
6
+ spec.authors = ["David Siaw"]
7
+ spec.email = ["davidsiaw@gmail.com"]
8
+
9
+ spec.summary = %q{search karaoke}
10
+ spec.description = %q{search karaoke}
11
+ spec.homepage = "https://github.com/davidsiaw/honeysearch"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/davidsiaw/honeysearch"
19
+ spec.metadata["changelog_uri"] = "https://github.com/davidsiaw/honeysearch"
20
+
21
+ spec.files = Dir['{data,exe,lib,bin}/**/*'] +
22
+ %w[Gemfile honeysearch.gemspec]
23
+ spec.test_files = Dir['{spec,features}/**/*']
24
+ spec.bindir = 'exe'
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
+ spec.require_paths = ['lib']
27
+ end
@@ -0,0 +1,3 @@
1
+ module Honeysearch
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,124 @@
1
+ # encoding: utf-8
2
+ require "honeysearch/version"
3
+
4
+ require 'uri'
5
+ require 'net/http'
6
+
7
+ module Honeysearch
8
+ class Error < StandardError; end
9
+
10
+ SEARCH_URL='https://karaoke.mashup.jp/search_result.php'
11
+
12
+ class Search
13
+ attr_reader :page
14
+
15
+ def initialize(term, page=0)
16
+ @term = term
17
+ @page = page
18
+ end
19
+
20
+ def res
21
+ @res ||= begin
22
+ uri = URI("#{SEARCH_URL}?p=#{@page}")
23
+ Net::HTTP.post_form(
24
+ uri,
25
+ sel_rows1: 30,
26
+ topsearch_box: @term,
27
+ sel_rows2: 30,
28
+ s_title: '',
29
+ s_singer: '',
30
+ s_intro: '',
31
+ s_tieup: '',
32
+ search_genre: 0,
33
+ sel_search_genre: 0,
34
+ method: 0
35
+ )
36
+ end
37
+ end
38
+
39
+ def body
40
+ @body ||= res.body.force_encoding('UTF-8')
41
+ end
42
+
43
+ def result
44
+ body
45
+ end
46
+
47
+ def more?
48
+ body.include?('次の30曲')
49
+ end
50
+
51
+ def total_number
52
+ body.match(/検索結果\uff1a(?<number>[0-9]+)曲/)[:number].to_i
53
+ end
54
+ end
55
+
56
+ class SongData
57
+ def initialize(rawdata)
58
+ @rawdata = rawdata
59
+ end
60
+
61
+ def splitdata
62
+ @splitdata ||= begin
63
+ res = []
64
+ @rawdata.scan(%r{<li>(?<text>[^<]+)</li>}) do |x|
65
+ res << x.first
66
+ end
67
+ res
68
+ end
69
+ end
70
+
71
+ def artist
72
+ splitdata[0]
73
+ end
74
+
75
+ def title
76
+ splitdata[1]
77
+ end
78
+
79
+ def number
80
+ splitdata[2]
81
+ end
82
+
83
+ def lyrics
84
+ splitdata[3]
85
+ end
86
+
87
+ def tieup
88
+ splitdata[4]
89
+ end
90
+
91
+ def genre
92
+ splitdata[5]
93
+ end
94
+
95
+ def inspect
96
+ "#<SongData: #{number} (#{artist}, #{title})>"
97
+ end
98
+ end
99
+
100
+ class Parser
101
+ def initialize(result)
102
+ @result = result
103
+ end
104
+
105
+ def chopped_text
106
+ res = []
107
+ @result.split('<ul id="search_name" class="search_list">')[1..-1].each do |page|
108
+ doc = page.split('<div id="search_result" class="pc_none">').first
109
+ doc.split('<ul class="search_list">').each do |x|
110
+ res << x
111
+ end
112
+ end
113
+ res
114
+ end
115
+
116
+ def results
117
+ res = []
118
+ chopped_text[1..-1].each do |paragraph|
119
+ res << SongData.new(paragraph)
120
+ end
121
+ res
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,701 @@
1
+
2
+ RSpec.describe Honeysearch do
3
+ it "has a version number" do
4
+ expect(Honeysearch::VERSION).not_to be nil
5
+ end
6
+
7
+ let(:res1) { Honeysearch::Search.new('aqours') }
8
+ let(:res2) { Honeysearch::Search.new('aqours', 1) }
9
+ let(:res3) { Honeysearch::Search.new('ff14') }
10
+
11
+ it "downloads a result" do
12
+ res = res1.result
13
+ expect(Honeysearch::Parser.new(res).results.length).to eq 30
14
+ end
15
+
16
+ it "downloads a result page 2" do
17
+ res = res2.result
18
+ expect(Honeysearch::Parser.new(res).results.length).to eq 30
19
+ end
20
+
21
+ it "downloads a result and shows more" do
22
+ expect(res1.more?).to eq true
23
+ end
24
+
25
+ it "downloads a result and shows number" do
26
+ expect(res1.total_number).to eq 92
27
+ end
28
+
29
+ it "downloads a result and shows number 2" do
30
+ expect(res3.total_number).to eq 21
31
+ end
32
+
33
+ it "downloads a result and shows more" do
34
+ expect(res3.more?).to eq false
35
+ end
36
+
37
+ it 'parses a result' do
38
+ RESULT=<<~RESULT
39
+ <html>
40
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
41
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
42
+ <head>
43
+ <title>カラオケパセラ 検索・ランキング・新譜情報|MUEカラオケ</title>
44
+ <meta name="keywords" content="パセラ,カラオケ,ランキング,人気,新曲,新譜,検索,洋楽,韓国,中国,外国曲">
45
+ <meta name="description" content="カラオケパセラのオリジナルカラオケシステム「MUEカラシステム」は曲数世界最強! だからあなたの歌いたい曲がきっと見つかる!人気カラオケランキング、楽曲検索、新曲情報サイト。">
46
+ <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
47
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
48
+ <script src="js/bgswitcher.js"></script>
49
+ <link rel="stylesheet" type="text/css" href="css/pasela.css"/ media="screen and (min-width:769px)" >
50
+ <link rel="stylesheet" type="text/css" href="css/pasela_sp.css"/ media="screen and (max-width:768px)" >
51
+ <script type="text/javascript">
52
+ var now_page = 0;
53
+ </script>
54
+
55
+ <script type="text/javascript">
56
+ history.replaceState(null, document.getElementsByTagName('title')[0].innerHTML, null);
57
+ window.addEventListener('popstate', function() {
58
+ if($("#loading").length != 0){
59
+ $("#loading").remove();
60
+ }
61
+ }, false);
62
+
63
+ $(window).unload(function(){
64
+ if($("#loading").length != 0){
65
+ $("#loading").remove();
66
+ }
67
+ });
68
+
69
+ var i_commit = 0;
70
+
71
+ function getScrollBottom() {
72
+ var body = window.document.body;
73
+ var html = window.document.documentElement;
74
+ var scrollTop = body.scrollTop || html.scrollTop;
75
+ var mh = html.scrollHeight;
76
+ if (html.scrollHeight < html.clientHeight) {
77
+ mh = html.clientHeight;
78
+ }
79
+ var y = mh - scrollTop;
80
+ return y;
81
+ }
82
+
83
+ $(document).ready(function(){
84
+ //BGSWITCHER設定
85
+ $('#bgswitcher').bgSwitcher({
86
+ images: ['images/top_01.jpg','images/top_02.jpg','images/top_03.jpg','images/top_04.jpg','images/top_05.jpg'],
87
+ interval: 5000
88
+ });
89
+ });
90
+ $(window).ready(function(){
91
+ // humボタンのクリック
92
+ $('#hum').on('click',function(){
93
+ $('#navi').css({transform:'translate(0,110vw)'});
94
+ });
95
+ // navi_closeボタンのクリック
96
+ $('#navi_close').on('click',function(){
97
+ $('#navi').css({transform:'translate(0,-110vw)'});
98
+ });
99
+ //topbackボタンの初期非表示
100
+ var topback = $('#topback');
101
+ topback.hide();
102
+ //スクロールでtopbackボタンの表示
103
+ $(window).scroll(function(){
104
+
105
+ if (getScrollBottom() < 700){
106
+ topback.fadeIn();
107
+ }else{
108
+ topback.fadeOut();
109
+ }
110
+ });
111
+ // スクロールの速度を落とす
112
+ $('a[href^="#"]').click(function() {
113
+ // スクロールの速度を選択
114
+ var speed = 200;
115
+ // アンカーの値取得する
116
+ var href= $(this).attr("href");
117
+ // 移動先を取得する
118
+ var target = $(href == "#" || href == "" ? 'html' : href);
119
+ // 移動先を数値で取得する
120
+ var position = target.offset().top;
121
+ // スムーススクロールの設定
122
+ $('body,html').animate({scrollTop:position}, speed, 'swing');
123
+ return false;
124
+ });
125
+ });
126
+ //レスポンシブルの切り替えでリロード
127
+ var timer = 0;
128
+ var currentWidth = window.innerWidth;
129
+ $(window).resize(function(){
130
+ if (currentWidth == window.innerWidth) {
131
+ return;
132
+ }
133
+ if (timer > 0) {
134
+ clearTimeout(timer);
135
+ }
136
+ timer = setTimeout(function () {
137
+ location.reload();
138
+ }, 200);
139
+ });
140
+
141
+ function gotoPage(page) {
142
+ if($("#loading").length == 0){
143
+ var action = document.frm.action;
144
+ action = action + "?p=" + page;
145
+ document.frm.action = action;
146
+ dispLoading();
147
+ setTimeout(function() {document.frm.submit();}, 500);
148
+ }
149
+ }
150
+
151
+ function dispLoading(){
152
+ if($("#loading").length == 0){
153
+ $("body").append("<div id='loading'><div class='loadingMsg'>ページ切り替え中</div></div>");
154
+ }
155
+ }
156
+
157
+ function onSelectRows() {
158
+ if($("#loading").length == 0){
159
+ var action = document.frm.action;
160
+ action = action + "?p=" + now_page;
161
+ var sel_rows = document.getElementById("id_sel_rows").value;
162
+ document.frm.sel_rows.value = sel_rows;
163
+ document.frm.action = action;
164
+ dispLoading();
165
+ setTimeout(function() {document.frm.submit();}, 500);
166
+ }
167
+ }
168
+
169
+ </script>
170
+
171
+ <style>
172
+ @media screen and (max-width: 768px) {
173
+ .search_list li a{
174
+ margin: 0;
175
+ display: block;
176
+ text-decoration: none;
177
+ color: #000;
178
+ }
179
+ }
180
+
181
+ #loading {
182
+ display: table;
183
+ width: 100%;
184
+ height: 100%;
185
+ position: fixed;
186
+ top: 0;
187
+ left: 0;
188
+ background-color: #fff;
189
+ opacity: 0.8;
190
+ z-index: 2000;
191
+ }
192
+
193
+ #loading .loadingMsg {
194
+ display: table-cell;
195
+ text-align: center;
196
+ vertical-align: middle;
197
+ padding-top: 140px;
198
+ background: url("images/loading.gif") center center no-repeat;
199
+ }
200
+
201
+ .select_box {
202
+ font-size: 16px;
203
+ margin-bottom: 16px;
204
+ }
205
+
206
+ @media screen and (max-width: 768px) {
207
+ .select_box {
208
+ width: 80% !important;
209
+ margin-left: 5%;
210
+ margin-bottom: 5%;
211
+ padding: 2vw;
212
+ font-size: 1.4em !important;
213
+ }
214
+ }
215
+
216
+ </style>
217
+
218
+ </head>
219
+ <body>
220
+ <div id="waku">
221
+ <div id="header">
222
+ <a href="index.php"><img src="images/logo_small_red.png"></a>
223
+ <img src="images/powerdby_black.png">
224
+ <form name="frm_ser" method="post" action="search_result.php">
225
+ <!--
226
+ <input type="text" name="headersearch_box" id="headersearch_box" class="sp_none" value="" />
227
+ <input type="button" name="headersearch_btn" id="headersearch_btn" class="sp_none" value="検索" onclick="javascript:document.frm_ser.submit();" />
228
+ -->
229
+ </form> </div><!-- /header -->
230
+ <div id="navi">
231
+ <ul>
232
+ <li><a href="index.php">ホーム</a></li>
233
+ <li><a href="search.php">カラオケサーチ</a></li>
234
+ <li><a href="ranking.php">カラオケランキング</a></li>
235
+ <li><a href="newsong.php">新譜リスト</a></li>
236
+ </ul>
237
+ <div id="navi_close" class="pc_none">×</div>
238
+ </div><!-- /navi -->
239
+ <div id="search">
240
+ <div class="top_h1">KARAOKE</div>
241
+ <div class="top_h2">SEARCH</div>
242
+ <div class="search_result_h"><select id="id_sel_rows" name="sel_rows" class="select_box" onChange="javascript:onSelectRows();"><option value="10">10行表示</option><option value="30" selected>30行表示</option><option value="50">50行表示</option><option value="100">100行表示</option></select><br/>
243
+ 検索結果:92曲 (1~30曲を表示中)</div>
244
+ <div class="searchtop_btn sp_none"><a href="search.php?rows=30&sk=aqours,,,,,0,">検索TOPへ</a></div>
245
+ <div class="sp_none">
246
+ <ul id="search_name" class="search_list">
247
+ <li>歌手名</li>
248
+ <li>曲名</li>
249
+ <li>曲番号</li>
250
+ <li>歌い出し</li>
251
+ <li>タイアップ</li>
252
+ <li>ジャンル</li>
253
+ </ul>
254
+ <ul class="search_list">
255
+ <li>Aqours</li>
256
+ <li>i-n-g, I TRY!!</li>
257
+ <li>4570B6</li>
258
+ <li>まるで夢のようなって</li>
259
+ <li>ラブライブ!サンシャイン!!The School Idol Movie Over the...<番組名></li>
260
+ <li>アニメ</li>
261
+ </ul>
262
+ <ul class="search_list">
263
+ <li>Aqours</li>
264
+ <li>青空Jumping Heart</li>
265
+ <li>3210B2</li>
266
+ <li>見たことない夢の軌道 追いかけ</li>
267
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
268
+ <li>アニメ</li>
269
+ </ul>
270
+ <ul class="search_list">
271
+ <li>Aqours</li>
272
+ <li>青空Jumping Heart</li>
273
+ <li>3745B24</li>
274
+ <li>見たことない夢の軌道 追いかけ</li>
275
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
276
+ <li>アニメ</li>
277
+ </ul>
278
+ <ul class="search_list">
279
+ <li>Aqours</li>
280
+ <li>青空Jumping Heart【DAMライブ】</li>
281
+ <li>3962B37</li>
282
+ <li>見たことない夢の軌道 追いかけ</li>
283
+ <li>Animelo Summer Live<番組名></li>
284
+ <li>アニメ</li>
285
+ </ul>
286
+ <ul class="search_list">
287
+ <li>Aqours</li>
288
+ <li>青空Jumping Heart [歌ってみた利用OK]【歌ってみた利用OK】</li>
289
+ <li>4415B27</li>
290
+ <li>見たことない夢の軌道 追いかけ</li>
291
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
292
+ <li>アニメ</li>
293
+ </ul>
294
+ <ul class="search_list">
295
+ <li>Aqours</li>
296
+ <li>Aqours Pirates Desire</li>
297
+ <li>4419A5</li>
298
+ <li>暗い… 夜の海には魔が宿るのさ</li>
299
+ <li>ラブライブ!サンシャイン!!<番組名></li>
300
+ <li>アニメ</li>
301
+ </ul>
302
+ <ul class="search_list">
303
+ <li>Aqours</li>
304
+ <li>Aqours☆HEROES</li>
305
+ <li>3541B47</li>
306
+ <li>Yaa-Yaa!! やあやあやあ 準備は</li>
307
+ <li>ラブライブ!サンシャイン!!<番組名></li>
308
+ <li>アニメ</li>
309
+ </ul>
310
+ <ul class="search_list">
311
+ <li>Aqours</li>
312
+ <li>Aqoursメドレー</li>
313
+ <li>3870B29</li>
314
+ <li>JOY</li>
315
+ <li></li>
316
+ <li>ポップス</li>
317
+ </ul>
318
+ <ul class="search_list">
319
+ <li>Aqours</li>
320
+ <li>Wake up, Challenger!!</li>
321
+ <li>4288B6</li>
322
+ <li>なんともなんない! じゃなくて</li>
323
+ <li>ラブライブ! スクールアイドルフェスティバル ALL STARS<番組名></li>
324
+ <li>アニメ</li>
325
+ </ul>
326
+ <ul class="search_list">
327
+ <li>Aqours</li>
328
+ <li>WATER BLUE NEW WORLD</li>
329
+ <li>3945B42</li>
330
+ <li>イマはイマで昨日と違うよ 明日</li>
331
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
332
+ <li>アニメ</li>
333
+ </ul>
334
+ <ul class="search_list">
335
+ <li>Aqours</li>
336
+ <li>WATER BLUE NEW WORLD</li>
337
+ <li>4100B23</li>
338
+ <li>イマはイマで昨日と違うよ 明日</li>
339
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
340
+ <li>アニメ</li>
341
+ </ul>
342
+ <ul class="search_list">
343
+ <li>Aqours</li>
344
+ <li>想いよひとつになれ</li>
345
+ <li>3726A31</li>
346
+ <li>想いよひとつになれ 想いが</li>
347
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
348
+ <li>アニメ</li>
349
+ </ul>
350
+ <ul class="search_list">
351
+ <li>Aqours</li>
352
+ <li>想いよひとつになれ</li>
353
+ <li>3966A5</li>
354
+ <li>想いよひとつになれ 想いが</li>
355
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
356
+ <li>アニメ</li>
357
+ </ul>
358
+ <ul class="search_list">
359
+ <li>Aqours</li>
360
+ <li>KA-GA-YA-KI-RA-RI-RA feat.初音ミク【VOCALOID】</li>
361
+ <li>4682A2</li>
362
+ <li>ねえ、聴いて? 声と音でセカイを</li>
363
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
364
+ <li>アニメ</li>
365
+ </ul>
366
+ <ul class="search_list">
367
+ <li>Aqours</li>
368
+ <li>キセキヒカル</li>
369
+ <li>4439B29</li>
370
+ <li></li>
371
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
372
+ <li>アニメ</li>
373
+ </ul>
374
+ <ul class="search_list">
375
+ <li>Aqours</li>
376
+ <li>君のこころは輝いてるかい?</li>
377
+ <li>3523B33</li>
378
+ <li>今・・・ みらい、変えてみたく</li>
379
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
380
+ <li>アニメ</li>
381
+ </ul>
382
+ <ul class="search_list">
383
+ <li>Aqours</li>
384
+ <li>君のこころは輝いてるかい?</li>
385
+ <li>3711B16</li>
386
+ <li>今・・・ みらい、変えてみたく</li>
387
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
388
+ <li>アニメ</li>
389
+ </ul>
390
+ <ul class="search_list">
391
+ <li>Aqours</li>
392
+ <li>君の瞳を巡る冒険</li>
393
+ <li>3908B40</li>
394
+ <li>謎は謎はいつも 目の前で違う</li>
395
+ <li>ラブライブ!サンシャイン!!(第2期)<番組名></li>
396
+ <li>アニメ</li>
397
+ </ul>
398
+ <ul class="search_list">
399
+ <li>Aqours</li>
400
+ <li>決めたよHand in Hand</li>
401
+ <li>3673A6</li>
402
+ <li>Hand in Hand,wow wo!・・・ なにを</li>
403
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
404
+ <li>アニメ</li>
405
+ </ul>
406
+ <ul class="search_list">
407
+ <li>Aqours</li>
408
+ <li>KU-RU-KU-RU Cruller!</li>
409
+ <li>4551A2</li>
410
+ <li>Happy dance happy dance KU-RU</li>
411
+ <li>モンスターストライク×ラブライブ!サンシャイン!!<番組名></li>
412
+ <li>アニメ</li>
413
+ </ul>
414
+ <ul class="search_list">
415
+ <li>Aqours</li>
416
+ <li>恋になりたいAQUARIUM</li>
417
+ <li>3626B18</li>
418
+ <li>空色カーテン Open! 海色ゲート</li>
419
+ <li>ラブライブ!サンシャイン!!<番組名></li>
420
+ <li>アニメ</li>
421
+ </ul>
422
+ <ul class="search_list">
423
+ <li>Aqours</li>
424
+ <li>恋になりたいAQUARIUM</li>
425
+ <li>3711B17</li>
426
+ <li>空色カーテン Open! 海色ゲート</li>
427
+ <li>ラブライブ!サンシャイン!!<番組名></li>
428
+ <li>アニメ</li>
429
+ </ul>
430
+ <ul class="search_list">
431
+ <li>Aqours</li>
432
+ <li>心の羽よ君へ飛んでけ!</li>
433
+ <li>4496A17</li>
434
+ <li>ああ、変わってゆく 真っ青だった</li>
435
+ <li>ラブライブ!サンシャイン!!<番組名></li>
436
+ <li>アニメ</li>
437
+ </ul>
438
+ <ul class="search_list">
439
+ <li>Aqours</li>
440
+ <li>KOKORO Magic 'A to Z'</li>
441
+ <li>4288B7</li>
442
+ <li>なんでもないような毎日(でも?)</li>
443
+ <li>ラブライブ! スクールアイドルフェスティバル ALL STARS<番組名></li>
444
+ <li>アニメ</li>
445
+ </ul>
446
+ <ul class="search_list">
447
+ <li>Aqours</li>
448
+ <li>Thank you,FRIENDS!!</li>
449
+ <li>4049A42</li>
450
+ <li>そう、いまだから そういま僕ら</li>
451
+ <li>ラブライブ!サンシャイン!!<番組名></li>
452
+ <li>アニメ</li>
453
+ </ul>
454
+ <ul class="search_list">
455
+ <li>Aqours</li>
456
+ <li>サンシャインぴっかぴか音頭</li>
457
+ <li>3685A44</li>
458
+ <li>あっちから こっちから</li>
459
+ <li>ラブライブ!サンシャイン!!(TV版)<番組名></li>
460
+ <li>アニメ</li>
461
+ </ul>
462
+ <ul class="search_list">
463
+ <li>Aqours</li>
464
+ <li>JIMO-AI Dash!</li>
465
+ <li>4427B24</li>
466
+ <li>My love,my place! ココだよキミ</li>
467
+ <li>ラブライブ!サンシャイン!!<番組名></li>
468
+ <li>アニメ</li>
469
+ </ul>
470
+ <ul class="search_list">
471
+ <li>Aqours</li>
472
+ <li>Jump up HIGH!!</li>
473
+ <li>4223A1</li>
474
+ <li>Jump up! 空高く舞う鳥へ</li>
475
+ <li>ラブライブ!サンシャイン!!<番組名></li>
476
+ <li>アニメ</li>
477
+ </ul>
478
+ <ul class="search_list">
479
+ <li>Aqours</li>
480
+ <li>少女以上の恋がしたい</li>
481
+ <li>3793B1</li>
482
+ <li>知りたい 触れたい 今までどおり</li>
483
+ <li>ラブライブ! スクールアイドルフェスティバル<番組名></li>
484
+ <li>アニメ</li>
485
+ </ul>
486
+ <ul class="search_list">
487
+ <li>Aqours</li>
488
+ <li>ジングルベルがとまらない</li>
489
+ <li>3733B17</li>
490
+ <li>えがおが見たくて 今年も迷うの</li>
491
+ <li>ラブライブ! スクールアイドルフェスティバル<番組名></li>
492
+ <li>アニメ</li>
493
+ </ul>
494
+ </div>
495
+
496
+ <div id="search_result" class="pc_none">
497
+ <ul class="search_list">
498
+ <li><a href="database.php?id=4570B6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
499
+ <li><a href="database.php?id=4570B6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">i-n-g, I TRY!!</a></li>
500
+ <li>4570B6</li>
501
+ </ul>
502
+ <ul class="search_list">
503
+ <li><a href="database.php?id=3210B2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
504
+ <li><a href="database.php?id=3210B2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">青空Jumping Heart</a></li>
505
+ <li>3210B2</li>
506
+ </ul>
507
+ <ul class="search_list">
508
+ <li><a href="database.php?id=3745B24&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
509
+ <li><a href="database.php?id=3745B24&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">青空Jumping Heart</a></li>
510
+ <li>3745B24</li>
511
+ </ul>
512
+ <ul class="search_list">
513
+ <li><a href="database.php?id=3962B37&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
514
+ <li><a href="database.php?id=3962B37&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">青空Jumping Heart【DAMライブ】</a></li>
515
+ <li>3962B37</li>
516
+ </ul>
517
+ <ul class="search_list">
518
+ <li><a href="database.php?id=4415B27&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
519
+ <li><a href="database.php?id=4415B27&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">青空Jumping Heart [歌ってみた利用OK]【歌ってみた利用OK】</a></li>
520
+ <li>4415B27</li>
521
+ </ul>
522
+ <ul class="search_list">
523
+ <li><a href="database.php?id=4419A5&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
524
+ <li><a href="database.php?id=4419A5&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours Pirates Desire</a></li>
525
+ <li>4419A5</li>
526
+ </ul>
527
+ <ul class="search_list">
528
+ <li><a href="database.php?id=3541B47&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
529
+ <li><a href="database.php?id=3541B47&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours☆HEROES</a></li>
530
+ <li>3541B47</li>
531
+ </ul>
532
+ <ul class="search_list">
533
+ <li><a href="database.php?id=3870B29&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
534
+ <li><a href="database.php?id=3870B29&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqoursメドレー</a></li>
535
+ <li>3870B29</li>
536
+ </ul>
537
+ <ul class="search_list">
538
+ <li><a href="database.php?id=4288B6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
539
+ <li><a href="database.php?id=4288B6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Wake up, Challenger!!</a></li>
540
+ <li>4288B6</li>
541
+ </ul>
542
+ <ul class="search_list">
543
+ <li><a href="database.php?id=3945B42&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
544
+ <li><a href="database.php?id=3945B42&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">WATER BLUE NEW WORLD</a></li>
545
+ <li>3945B42</li>
546
+ </ul>
547
+ <ul class="search_list">
548
+ <li><a href="database.php?id=4100B23&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
549
+ <li><a href="database.php?id=4100B23&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">WATER BLUE NEW WORLD</a></li>
550
+ <li>4100B23</li>
551
+ </ul>
552
+ <ul class="search_list">
553
+ <li><a href="database.php?id=3726A31&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
554
+ <li><a href="database.php?id=3726A31&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">想いよひとつになれ</a></li>
555
+ <li>3726A31</li>
556
+ </ul>
557
+ <ul class="search_list">
558
+ <li><a href="database.php?id=3966A5&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
559
+ <li><a href="database.php?id=3966A5&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">想いよひとつになれ</a></li>
560
+ <li>3966A5</li>
561
+ </ul>
562
+ <ul class="search_list">
563
+ <li><a href="database.php?id=4682A2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
564
+ <li><a href="database.php?id=4682A2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">KA-GA-YA-KI-RA-RI-RA feat.初音ミク【VOCALOID】</a></li>
565
+ <li>4682A2</li>
566
+ </ul>
567
+ <ul class="search_list">
568
+ <li><a href="database.php?id=4439B29&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
569
+ <li><a href="database.php?id=4439B29&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">キセキヒカル</a></li>
570
+ <li>4439B29</li>
571
+ </ul>
572
+ <ul class="search_list">
573
+ <li><a href="database.php?id=3523B33&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
574
+ <li><a href="database.php?id=3523B33&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">君のこころは輝いてるかい?</a></li>
575
+ <li>3523B33</li>
576
+ </ul>
577
+ <ul class="search_list">
578
+ <li><a href="database.php?id=3711B16&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
579
+ <li><a href="database.php?id=3711B16&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">君のこころは輝いてるかい?</a></li>
580
+ <li>3711B16</li>
581
+ </ul>
582
+ <ul class="search_list">
583
+ <li><a href="database.php?id=3908B40&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
584
+ <li><a href="database.php?id=3908B40&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">君の瞳を巡る冒険</a></li>
585
+ <li>3908B40</li>
586
+ </ul>
587
+ <ul class="search_list">
588
+ <li><a href="database.php?id=3673A6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
589
+ <li><a href="database.php?id=3673A6&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">決めたよHand in Hand</a></li>
590
+ <li>3673A6</li>
591
+ </ul>
592
+ <ul class="search_list">
593
+ <li><a href="database.php?id=4551A2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
594
+ <li><a href="database.php?id=4551A2&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">KU-RU-KU-RU Cruller!</a></li>
595
+ <li>4551A2</li>
596
+ </ul>
597
+ <ul class="search_list">
598
+ <li><a href="database.php?id=3626B18&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
599
+ <li><a href="database.php?id=3626B18&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">恋になりたいAQUARIUM</a></li>
600
+ <li>3626B18</li>
601
+ </ul>
602
+ <ul class="search_list">
603
+ <li><a href="database.php?id=3711B17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
604
+ <li><a href="database.php?id=3711B17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">恋になりたいAQUARIUM</a></li>
605
+ <li>3711B17</li>
606
+ </ul>
607
+ <ul class="search_list">
608
+ <li><a href="database.php?id=4496A17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
609
+ <li><a href="database.php?id=4496A17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">心の羽よ君へ飛んでけ!</a></li>
610
+ <li>4496A17</li>
611
+ </ul>
612
+ <ul class="search_list">
613
+ <li><a href="database.php?id=4288B7&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
614
+ <li><a href="database.php?id=4288B7&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">KOKORO Magic 'A to Z'</a></li>
615
+ <li>4288B7</li>
616
+ </ul>
617
+ <ul class="search_list">
618
+ <li><a href="database.php?id=4049A42&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
619
+ <li><a href="database.php?id=4049A42&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Thank you,FRIENDS!!</a></li>
620
+ <li>4049A42</li>
621
+ </ul>
622
+ <ul class="search_list">
623
+ <li><a href="database.php?id=3685A44&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
624
+ <li><a href="database.php?id=3685A44&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">サンシャインぴっかぴか音頭</a></li>
625
+ <li>3685A44</li>
626
+ </ul>
627
+ <ul class="search_list">
628
+ <li><a href="database.php?id=4427B24&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
629
+ <li><a href="database.php?id=4427B24&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">JIMO-AI Dash!</a></li>
630
+ <li>4427B24</li>
631
+ </ul>
632
+ <ul class="search_list">
633
+ <li><a href="database.php?id=4223A1&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
634
+ <li><a href="database.php?id=4223A1&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Jump up HIGH!!</a></li>
635
+ <li>4223A1</li>
636
+ </ul>
637
+ <ul class="search_list">
638
+ <li><a href="database.php?id=3793B1&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
639
+ <li><a href="database.php?id=3793B1&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">少女以上の恋がしたい</a></li>
640
+ <li>3793B1</li>
641
+ </ul>
642
+ <ul class="search_list">
643
+ <li><a href="database.php?id=3733B17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">Aqours</a></li>
644
+ <li><a href="database.php?id=3733B17&rp=search_result&sk=aqours,,,,,0,&p=0&sel_rows=30">ジングルベルがとまらない</a></li>
645
+ <li>3733B17</li>
646
+ </ul>
647
+ </div>
648
+ <form name=frm method="post" action="search_result.php">
649
+ <div id="prevnext_box">
650
+ <span class="prevnext"></span>
651
+ <span><a href="search.php?rows=30&sk=aqours,,,,,0,">検索TOPへ</a></span>
652
+ <span class="prevnext"><a href="javascript:gotoPage(1);">次の30曲</a></span>
653
+ </div>
654
+ <input type="hidden" name="sel_rows" value="30"> <input type="hidden" name="s_title" value="">
655
+ <input type="hidden" name="s_singer" value="">
656
+ <input type="hidden" name="s_singer_id" value="">
657
+ <input type="hidden" name="s_intro" value="">
658
+ <input type="hidden" name="s_tieup" value="">
659
+ <input type="hidden" name="sel_search_genre" value="0">
660
+ <input type="hidden" name="topsearch_box" value="aqours">
661
+ </form>
662
+ </div><!-- /search -->
663
+ <div id="foot_navi" class="sp_none">
664
+ <a class="foot_navi_list" href="index.php">ホーム</a>|
665
+ <a class="foot_navi_list" href="search.php">カラオケサーチ</a>|
666
+ <a class="foot_navi_list" href="ranking.php">カラオケランキング</a>|
667
+ <a class="foot_navi_list" href="newsong.php">新譜リスト</a>
668
+ </div><!-- /foot_navi -->
669
+ <ul id="sp_foot_navi" class="pc_none">
670
+ <li class="sp_foot_navi_list"><a href="index.php"><img src="images/spbtn_home.png"><span>ホーム</span></a></li>
671
+ <li class="sp_foot_navi_list"><a href="search.php"><img src="images/spbtn_search.png"><span>カラオケサーチ</span></a></li>
672
+ <li class="sp_foot_navi_list"><a href="ranking.php"><img src="images/spbtn_ranking.png"><span>カラオケランキング</span></a></li>
673
+ <li class="sp_foot_navi_list"><a href="newsong.php"><img src="images/spbtn_new.png"><span>新譜リスト</span></a></li>
674
+ </ul><!-- /sp_foot_navi -->
675
+ <div id="footer" class="center">
676
+ <div class="site"><a href="http://pasela.co.jp" target="_blank">カラオケパセラ オフィシャルサイト</a></div>
677
+ <div class="copy">Copyright 2018 Pasela Resorts. Powered by MUE Karaoke System.</div>
678
+ </div><!-- /footer -->
679
+
680
+
681
+ <!-- Global site tag (gtag.js) - Google Analytics -->
682
+ <script async src="https://www.googletagmanager.com/gtag/js?id=UA-129536340-1"></script>
683
+ <script>
684
+ window.dataLayer = window.dataLayer || [];
685
+ function gtag(){dataLayer.push(arguments);}
686
+ gtag('js', new Date());
687
+
688
+ gtag('config', 'UA-129536340-1');
689
+ </script>
690
+ <div id="topback">
691
+ <a href="#waku"><img src="images/topback.png"></a>
692
+ </div>
693
+ </div><!-- /waku -->
694
+ <div id="hum" class="pc_none"><img src="images/menu.png"></div>
695
+ </body>
696
+ </html>
697
+ RESULT
698
+
699
+ expect(Honeysearch::Parser.new(RESULT).results.length).to eq 30
700
+ end
701
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ require "bundler/setup"
3
+ require "honeysearch"
4
+
5
+ RSpec.configure do |config|
6
+ # Enable flags like --only-failures and --next-failure
7
+ config.example_status_persistence_file_path = ".rspec_status"
8
+
9
+ # Disable RSpec exposing methods globally on `Module` and `main`
10
+ config.disable_monkey_patching!
11
+
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: honeysearch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David Siaw
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-09-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: search karaoke
14
+ email:
15
+ - davidsiaw@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Gemfile
21
+ - bin/console
22
+ - bin/setup
23
+ - honeysearch.gemspec
24
+ - lib/honeysearch.rb
25
+ - lib/honeysearch/version.rb
26
+ - spec/honeysearch_spec.rb
27
+ - spec/spec_helper.rb
28
+ homepage: https://github.com/davidsiaw/honeysearch
29
+ licenses:
30
+ - MIT
31
+ metadata:
32
+ allowed_push_host: https://rubygems.org
33
+ homepage_uri: https://github.com/davidsiaw/honeysearch
34
+ source_code_uri: https://github.com/davidsiaw/honeysearch
35
+ changelog_uri: https://github.com/davidsiaw/honeysearch
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 2.3.0
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubygems_version: 3.1.4
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: search karaoke
55
+ test_files:
56
+ - spec/honeysearch_spec.rb
57
+ - spec/spec_helper.rb