ソフトウェアからのデータ
ベースとの連携
|
ソフトウェアから連携して、データベースへのタイムタグ情報の適用・登録・変更・検索を行なう方法を紹介します。
ここでの紹介は、ソフトウェア製作者向けへの情報となっております。
|
データベースCGI
に文字列をPOSTできればどんな方法でも良いはずです。
筆者は、HSPでのやり方しか知らないのでHSPでの方法になっています。
適宜読み替えて参考にしてください。
|
送信プログラム
ソケットを使用して、CGI と通信を行ないます。
送信プログラム例は次のようになります。
HSP プログラム/ プログラム参考元1,プログラム参考元2
送信する文字列中の 曲名,アーティスト,歌詞サイト,アルバム,歌詞
はURLエンコードされている必要があります。
URLエンコードのプログラム例は以下のようになります。
HSP プログラム/ プログラム参考元
|
|
データベースに欲しいタイムタグ情報があるか検索
- ↓
どの歌詞サイトの歌詞で作られているかを調べ、その歌詞サイトから歌詞を
取得
↓
タイムタグ情報を取得
- ↓
タイムタグ付き歌詞に変換
|
|
データベースCGI
と通信するときの送信パラメータと受信結果の一覧です。
各モードと項目について詳しくは以降の解説を見てください。
|
MODE |
送
信項目 |
ORDER |
返信内容 |
Search |
SEARCH
ORDER |
hit
key
title
artist
website
lyricspage
album
time
wikipage
tagging
comment
n* |
success
Rank*:
[ORDER内容]
|
Get |
KEY
ORDER |
title
artist
website
lyricspage
album
time
wikipage
tagging
comment
timetag |
success
[ORDER内容]
|
Put |
TITLE
ARTIST
WEBSITE
ALBUM
TIME
WIKIPAGE
TAGGING
COMMENT
TIMETAG
|
|
success
KEY=[登録キー]
no input |
no timetag |
wrong time |
already
KEY=[登録キー] |
|
Update |
KEY
TITLE
ARTIST
WEBSITE
ALBUM
TIME
WIKIPAGE
COMMENT
TIMETAG
|
|
success
|
Apply |
KEY
TIMETAG |
|
success
TIMETAG=[タイムタグ付き歌詞]
|
太文字は必須ではない項目。
ピンク色の字はURLエンコードをする必要があります。
赤枠の中身は、エラーが起きたとき返されるメッセージ。 |
* には数値が入ります。
|
|
データベースCGI
に曲名,アーティスト名,(歌詞サイト),アルバム名 , 再生時間 を送信、データベースを検索して、登録してあるデータを取得することができます。
|
● 曲名,アーティスト,歌詞サイト,アルバム ,再生時間 で検索する
|
MODE=Search&SEARCH=曲名<>アーティスト<>歌詞サイト<>アルバム<>再生時間(ミリ秒)&ORDER=データ要求 |
曲名,アーティスト,歌詞サイト,アルバム はそれぞれURLエンコードされている必要があります。
URLエンコードについては『データベースとの通信の仕方』の項目を見てください。 |
を送信すると検索結
果を返します。
曲名,アーティスト,歌詞サイト,アルバム ,再生時間(ミリ秒) はそれぞれ省略することができます。
ORDER のパラメータで何のデータを要求するかを決めます。
ORDER は以下のものを組み合わせて要求します。
ORDER パラメータ
|
要求 |
内容 |
返信データ |
備考 |
hit |
ヒット率 |
HIT= |
検索のヒット率。点のつけ方はテキトーです。
最大100点。 |
key |
登録キー |
KEY= |
データベースの登録キー。
データを指定して情報を取得するために使う。 |
title |
曲名 |
TITLE= |
|
artist |
アーティスト |
ARTIST= |
|
website |
歌詞サイト |
WEBSITE= |
|
lyricspage |
歌詞ページURL |
LYRICSPAGE= |
必須項目ではないので空の場合があります。 |
album |
アルバム |
ALBUM= |
必須項目ではないので空の場合があります。 |
time |
再生時間 |
TIME= |
必須項目ではないので空の場合があります。 |
wikipage |
WikiページURL |
WIKIPAGE= |
必須項目ではないので空の場合があります。 |
tagging |
投稿者名 |
TAGGING= |
必須項目ではないので空の場合があります。 |
comment |
コメント |
COMMENT= |
必須項目ではないので空の場合があります。
コメントは一行です。
|
n* |
返信件数指定 |
|
* には数値が入ります。
検索結果の件数を指定できます。
指定しない場合デフォルトで10件結果を返します。 |
組み合わせるものを「+」で繋ぎます。
ヒットした順位によって「Rank*:」で区切られ、要求したデータが羅列されて返ってきます。
羅列される順番は、表の上から順になります。
【 例 】
曲名,アーティスト を送信して、どの歌詞サイトの歌詞で作られたかを調べる。
|
MODE=Search&SEARCH=冒険でしょでしょ?<>平野 綾<><><>&ORDER=hit+key+title+artist+website+n5
|
ピンク色の部分はURL
エンコードされているものとします。
|
上記の文字列をデータベースCGIに送信すると、以下のような文字列が
返ってきます。
|
HTTP/1.1 200 OK
Date: Sun, 10 May 2009 11:29:11 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 1369
Connection: close
Content-Type: text/plain
success
Rank1:
HIT=76
KEY=07040303450100
TITLE=冒険でしょでしょ?
ARTIST=平野綾
WEBSITE=歌詞GET!!
Rank2:
HIT=41
KEY=07040303554400
TITLE=風読みリボン
ARTIST=平野綾
WEBSITE=歌詞GET!!
Rank3:
HIT=38
KEY=07040500443700
TITLE=SOSならだいじょーぶ
ARTIST=涼宮ハルヒ(C.V.平野綾)
WEBSITE=歌詞GET!!
Rank4:
HIT=38
KEY=08051822233500
TITLE=Baby cruising Love
ARTIST=Perfume
WEBSITE=うたまっぷ
Rank5:
HIT=36
KEY=08032114135900
TITLE=野に咲く花のように
ARTIST=ダ・カーポ
WEBSITE=歌ネット
[EOM]<br /><div style="margin:auto; text-align:center;
width:100%;">
<font size="1">
<a href="http://w1.oroti.net/~rent/rspace/"
target="_blank">OROTIサーバー</a>
<a href="http://oroti.info/~chat/"
target="_blank">C</a><br>
<a href="http://oroti.net/~exj/"
target="_blank">webmoney買取換金</a>
</font>
</div><br />
|
無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。 |
成功すると、先頭に「success」と書かれ、メッセージの終端は「[EOM]」までとなっています。
上記の結果の場合、欲しいデータは「歌詞GET!!」の歌詞で作られてい
ることがわかりました。
これで「歌詞GET!!」から歌詞を用意できれば、タイムタグ付き歌詞ができることになります。
登録キーはタイムタグ情報を取得するために使います。
詳しくは「登録キーから各データを取得する。」項目で解説します。
|
|
データベースを検索して得られた登録キーを使って各データを取得します。
|
● 登録キーをデータベースに送信して各データを取得
|
MODE=Get&KEY=登録キー&ORDER=データ要求 |
を送信すると要求されたデータを返します。
ORDER のパラメータで何のデータを要求するかを決めます。
ORDER は以下のものを組み合わせて要求します。
ORDER パラメータ
|
要求 |
内容 |
返信データ |
備考 |
title |
曲名 |
TITLE= |
|
artist |
アーティスト |
ARTIST= |
|
website |
歌詞サイト |
WEBSITE= |
|
lyricspage |
歌詞ページURL |
LYRICSPAGE= |
必須項目ではないので空の場合があります。 |
album |
アルバム |
ALBUM= |
必須項目ではないので空の場合があります。 |
time |
再生時間 |
TIME= |
必須項目ではないので空の場合があります。 |
wikipage |
WikiページURL |
WIKIPAGE= |
必須項目ではないので空の場合があります。 |
tagging |
投稿者名 |
TAGGING= |
必須項目ではないので空の場合があります。 |
comment |
コメント |
COMMENT= |
必須項目ではないので空の場合があります。
コメントは一行です。
|
timetag |
タイムタグ情報 |
TIMETAG= |
タイムタグと文字数が数値になったタイムタグ情報が格納さ
れます。
複数行になるので注意してください。 |
組み合わせるものを「+」で繋ぎます。
要求したデータが羅列されて返ってきます。
羅列される順番は、表の上から順になります。
【 例 】
登録キーを送信して、タイムタグ情報を取得。
|
MODE=Get&KEY=07040303450100&ORDER=timtetag |
上記の文字列をデータベースCGIに送信すると、以下のような文字列が
返ってきます。
|
HTTP/1.1 200 OK
Date: Mon, 11 May 2009 20:22:00 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 6099
Connection: close
Content-Type: text/plain
success
TIMETAG=[00:04:16]1[00:04:58]1[00:04:97]1[00:05:37]1[00:05:58]1[00:05:78]1[00:05:98]1[00:06:96]1[00:07:18]1[00:07:57]6[00:09:50] [00:19:21]1[00:19:60]1[00:19:80]1[00:20:00]1[00:20:19]2[00:21:01]1[00:21:39]1[00:21:59]1[00:21:78]1[00:21:98]1[00:22:79]1[00:22:99]1[00:23:37]1[00:24:18]1[00:24:60]1[00:25:17]
(省略)
[04:04:77]2[04:05:19]8[04:06:03]8[04:09:30]
[EOM]<br /><div style="margin:auto; text-align:center;
width:100%;">
<font size="1">
<a href="http://w1.oroti.net/~rent/rspace/"
target="_blank">OROTIサーバー</a>
<a href="http://oroti.info/~chat/"
target="_blank">C</a><br>
<a href=http://oroti.net/~exj/
target="_blank">webmoney買取換金</a>
</font>
</div><br />
|
無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。 |
成功すると、先頭に「success」と書かれ、メッセージの終端は「[EOM]」までとなっています。
Search でタイトル,アーティスト から
歌詞サイト,登録キーを取得。
歌詞サイトから歌詞を取得。
Get でタイムタグ情報を取得。
ローカル側でタイムタグ付き歌詞に変換、という流れでタイムタグ付き歌詞を入手できます。
該当するデータがなかった場合は、
「success」ではなく「no data」というメッセージのみが返ってきます。
|
|
|
データベースCGI
に曲名,アーティスト名,歌詞サイト,タイムタグ付き歌詞,(アルバム,再生時間,Wikiページ,投稿者
名)を送信して、情報を登録します。
|
1.タイムタグ情報を用意する
歌詞サイトから歌詞を調達し、一度タイムタグ付き歌詞を作成します。
タイムタグ付き歌詞は、歌詞サイトから調達した歌詞をいっさい変えずに作るようにしてください。
このタイムタグ付き歌詞を送信すると、文字数とタイムタグだけのタイムタ
グ情報に変換されてデータベースに記録されます。
(ローカル側でタイムタグ情報に変換してから送ることもできます。送信されたデータが数値とタイムタグのみであった場合、データベース側は変換処理を行い
ません。)
|
2.データを送信して登録する
データベースCGIに以下の文字列を送信します。
|
MODE=Put&TITLE=曲名&ARTIST=アーティスト&WEBSITE=歌詞サイト&TIMETAG=タイムタグ付き歌
詞&ALBUM=アルバム&TIME=再生時間(ミリ秒)&WIKIPAGE=Wikiページ&TAGGING=投稿者名&COMMENT=コメント |
曲名,アーティスト,歌詞サイト,タイムタグ付き歌詞,アルバム
はそれぞれURLエンコードされている必要があります。
URLエンコードについては『データベースとの通信の仕方』の項目を見てください。 |
「曲名」「アーティスト」は調達した歌詞サイトに表記されている通りにしてください。
「歌詞サイト」は「初音ミクWiki/http://www5.atwiki.jp/hmiku/pages/82.html」
のように歌詞サイト名の後にスラッシュ歌詞ページURLとすることで、使用した歌詞のURLを登録することが出来ます。
歌詞ページ登録は必須ではありません。歌詞サイト名だけを登録しても構いません。
「アルバム」「再生時間」は必須ではありません。
「アルバム」は多少違っていてもかまいません。
「再生時間」はミリ秒ですが、そこまで細かく正確である必要はありません。このデータベースでは、検索の際
0.1秒単位で前後10秒を見てどのくらい近いかを調べています。
「Wikiページ」はコメントを書き込んだりコミュニケーションをとったりする場と
してタイムタグ情報データベースが連携しているWikiのページURLを登録します。
一応、データ投稿時にもWikiページの登録が出来るようになってますが、Wikiページ作成時にタイムタグ情報ファイルのURLが必要なので、
データ投稿
[Put] → Wikiページ作成 → データ更新(Wikiページ登録) [Update]
という流れで投稿を完了させてください。
|
3.送信結果を確認する
送信後、返信内容を確認してください。成功すると「success」に続
けて「KEY=」で登録キーが返ります。
(投稿されたタイムタグ情報ファイルのURLは
http://timetag.main.jp/herodb/timetag/bin/bin[登録キー].txt となります。)
HTTP/1.1 200 OK
Date: Mon, 11 May 2009 22:58:00 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 376
Connection: close
Content-Type: text/plain
success
KEY=08061521311100
[EOM]<br /><div style="margin:auto; text-align:center;
width:100%;">
<font size="1">
<a href="http://w1.oroti.net/~rent/rspace/"
target="_blank">OROTIサーバー</a>
<a href="http://oroti.info/~chat/"
target="_blank">C</a><br>
<a href="http://oroti.net/~exj/"
target="_blank">webmoney買取換金</a>
</font>
</div><br />
|
無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。 |
登録に失敗した場合は以下のようになります。
no input |
未入力項目がある。 |
no timetag |
タイムタグが1つも含まれていない。 |
wrong time |
再生時間 に数値でないものが含まれる。 |
already |
すでに同じタイトル,アーティスト,歌詞サイ
ト,アルバムで登録してある。
この場合、続けて登録キー「KEY=XXX」が入ります。 |
|
|
|
データベースCGI
に登録キーと更新したい項目を送信して、データを更新します。
『データベースにタイムタグ情報を登録する。』を実行した上で「already」が出た場合に行なってください。
データ投稿の際の「Wikiページ」の登録もこちらを利用してください。
詳しくは「タイムタグ情報を登録する。」の項をご覧ください。
|
1.登録キーを取得する
タイムタグ情報登録で、既にタイムタグ情報があった場合
「already」と共に登録キー「KEY= XXX」が取得できます。
|
2.データを送信して更新する
データベースCGIに以下の文字列を送信します。
|
MODE=Update&KEY=登録キー&TITLE=曲名&ARTIST=アーティスト&WEBSITE=歌詞サイト&TIMETAG=タイムタグ付き歌詞&ALBUM=アルバム&TIME=再生時間(ミリ秒)&WIKIPAGE=Wikiページ&COMMENT=コメント |
曲名,アーティスト,歌詞サイト,タイムタグ付き歌詞,アルバム
はそれぞれURLエンコードされている必要があります。
URLエンコードについては『データベースとの通信の仕方』の項目を見てください。 |
TITLE,ARTIST,WEBSITE,TIMETAG,ALBUM,TIME,WIKIPAGE,COMMENTの変更しない部分は項目ごと省略してください。
|
3.送信結果を確認する
送信後、返信内容を確認してください。成功すると「success」が返
ります。
HTTP/1.1 200 OK
Date: Mon, 11 May 2009 22:58:00 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 376
Connection: close
Content-Type: text/plain
success
[EOM]<br /><div style="margin:auto; text-align:center;
width:100%;">
<font size="1">
<a href="http://w1.oroti.net/~rent/rspace/"
target="_blank">OROTIサーバー</a>
<a href="http://oroti.info/~chat/"
target="_blank">C</a><br>
<a href="http://oroti.net/~exj/"
target="_blank">webmoney買取換金</a>
</font>
</div><br />
|
無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。 |
送られた登録キーに該当するデータがなかった場合は、
「success」ではなく「no data」というメッセージが返ってきます。
TIME を送信した場合、数値以外の文字が含まれると「wrong time」というメッセージが返ります。
|
|
|
データベースCGI
に登録キーと歌詞を送信すると、タイムタグ付き歌詞を返します。
歌詞の受け渡しをすると送受信のデータ量が大きくなるので、なるべくなら
タイムタグ情報を取得してローカル側でタイムタグ付き歌詞に変換してください。
|
1.歌詞を用意する
まず、タイムタグ情報データベースを検索して、どの歌詞サイトの歌詞で作
られてるかを調べます。
該当する歌詞サイトから歌詞を用意してください。
|
2.データベースCGIに登録キー,歌詞を送信する
データベースの検索の際に登録キーを取得しておきます。
|
MODE=Apply&KEY=登録キー&TIMETAG=歌詞 |
歌詞 はURLエンコードされている必要があります。
URLエンコードについては『データベースとの通信の仕方』の項目を見てください。 |
3.受信した内容からタイムタグ付き歌詞を取り出す
送信後、返信内容は以下のようになります。
HTTP/1.1 200
OK
Date: Wed, 13 May 2009 16:56:18 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 6681
Connection: close
Content-Type: text/plain
success
TIMETAG=[00:04:16]答[00:04:58]え[00:04:97]は[00:05:37]い[00:05:58]つ[00:05:
78]も[00:05:98]私[00:06:96]の[00:07:18]胸[00:07:57]に. . .[00:09:50]
[00:19:21]な[00:19:60]ん[00:19:80]で[00:20:00]だ[00:20:19]ろ
[00:21:01]あ[00:21:39]な[00:21:59]た[00:21:78]を[00:21:98]選[00:22:79]ん[00:
22:99]だ[00:23:37]私[00:24:18]で[00:24:60]す[00:25:17]
(省略)
[04:04:77]I [04:05:19]believe [04:06:03]you. . .[04:09:30]
[EOM]<br /><div style="margin:auto; text-align:center;
width:100%;">
<font size="1">
<a href="http://w1.oroti.net/~rent/rspace/"
target="_blank">OROTIサーバー</a>
<a href="http://oroti.info/~chat/"
target="_blank">C</a><br>
<a href="http://oroti.net/~exj/"
target="_blank">webmoney買取換金</a>
</font>
</div><br />
|
無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。 |
成功すると、先頭に「success」と書かれ、TIMETAG項目にタ
イムタグ付き歌詞が入ります。
メッセージの終端は「[EOM]」までとなっています。
該当するデータがなかった場合は、
「success」ではなく「no data」というメッセージのみが返ってきます。
|
|
|