フロント>資料


タイムタグ情報の仕様
ソフトウェアからのデータベースとの連携
データベースについて


 

タイムタグ情報の仕様


歌詞を文字数に置き換えることで、タイムタグと数字だけのタイムタグ情報にしています。

例)
[00:00:10]あ[00:00:30]い[00:00:50]うえ[00:01:00]

[00:00:10]1[00:00:30]1[00:00:50]2[00:01:00]


置き換えるのは歌詞の文字数であり、バイト数ではありません。
タイムタグが連続している場所を文字数0とはしません。

例)
[00:00:10][00:00:30]aい[00:00:50]う[00:01:00]えおかki
くけko[00:02:00]さ[00:02:50]si[00:03:00]

[00:00:10][00:00:30]2[00:00:50]1[00:01:00]5
4[00:02:00]1[00:02:50]2[00:03:00]

@タグも保存しないので、タイムタグと数字のみのテキストファイルとなります。

 

ソフトウェアからのデータ ベースとの連携


ソフトウェアから連携して、データベースへのタイムタグ情報の適用・登録・変更・検索を行なう方法を紹介します。
ここでの紹介は、ソフトウェア製作者向けへの情報となっております。


データベースとの通信の仕方

タイムタグ付き歌詞を手に入れるまでの流れ
データベースとの通信パラメータ一覧
 
データベースを検索する。
登録キーから各データを取得する。
タイムタグ情報を登録する。
データを更新する。
歌詞にタイムタグ情報を適用する。


 


デー タベースとの通信の仕方

データベースCGI に文字列をPOSTできればどんな方法でも良いはずです。
筆者は、HSPでのやり方しか知らないのでHSPでの方法になっています。
適宜読み替えて参考にしてください。


送信プログラム

ソケットを使用して、CGI と通信を行ないます。
送信プログラム例は次のようになります。


HSP プログラム/ プログラム参考元1プログラム参考元2

送信する文字列中の 曲名,アーティスト,歌詞サイト,アルバム,歌詞 はURLエンコードされている必要があります。
URLエンコードのプログラム例は以下のようになります。


HSP プログラム/ プログラム参考元

 


タイムタグ付き歌詞を手に入れるまでの流れ


データベースに欲しいタイムタグ情報があるか検索

どの歌詞サイトの歌詞で作られているかを調べ、その歌詞サイトから歌詞を 取得

タイムタグ情報を取得

タイムタグ付き歌詞に変換


データベースCGI に文字列を送信して情報を取得します。
「曲名=Perfume,アーティスト=Perfume で検索」をすると大体こんな感じになります。

http://timetag.main.jp/herodb/herodb.cgi?table=timetag&MODE=Search&SEARCH=Perfume<>Perfume<><>&ORDER=hit+title+artist+website


データを大量に扱いたいけどいちいち通信していたら負荷がかかるし面倒臭いという場合は、登録データを見られるようにしておくので直接扱ってください。
どこにどんなデータが格納されているかはコチラを見て判断してください。

http://timetag.main.jp/herodb/timetag/rec.dat


データベースとの通信パ ラメータ一覧

データベースCGI と通信するときの送信パラメータと受信結果の一覧です。

各モードと項目について詳しくは以降の解説を見てください。


 

MODE 送 信項目 ORDER 返信内容
Search SEARCH
ORDER
hit
key
title
artist
website

lyricspage

album
time

wikipage
tagging
comment

n*

success
Rank*:
[ORDER内容]

no data

Get KEY
ORDER
title
artist
website
lyricspage
album
time
wikipage
tagging
comment
timetag

success
[ORDER内容]

no data

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

no data
wrong time

Apply KEY
TIMETAG
  success
TIMETAG=[タイムタグ付き歌詞]

no data

太文字は必須ではない項目。
ピンク色の字は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&#x30B5;&#x30FC;&#x30D0;&#x30FC;</a> <a href="http://oroti.info/~chat/" target="_blank">C</a><br>
<a href="http://oroti.net/~exj/" target="_blank">webmoney&#x8CB7;&#x53D6;&#x63DB;&#x91D1;</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&#x30B5;&#x30FC;&#x30D0;&#x30FC;</a> <a href="http://oroti.info/~chat/" target="_blank">C</a><br>
<a href=http://oroti.net/~exj/ target="_blank">webmoney&#x8CB7;&#x53D6;&#x63DB;&#x91D1;</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&#x30B5;&#x30FC;&#x30D0;&#x30FC;</a> <a href="http://oroti.info/~chat/" target="_blank">C</a><br>
<a href="http://oroti.net/~exj/" target="_blank">webmoney&#x8CB7;&#x53D6;&#x63DB;&#x91D1;</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&#x30B5;&#x30FC;&#x30D0;&#x30FC;</a> <a href="http://oroti.info/~chat/" target="_blank">C</a><br>
<a href="http://oroti.net/~exj/" target="_blank">webmoney&#x8CB7;&#x53D6;&#x63DB;&#x91D1;</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&#x30B5;&#x30FC;&#x30D0;&#x30FC;</a> <a href="http://oroti.info/~chat/" target="_blank">C</a><br>
<a href="http://oroti.net/~exj/" target="_blank">webmoney&#x8CB7;&#x53D6;&#x63DB;&#x91D1;</a>
</font>
</div><br />

無料レンタルサーバで運用していたときは末尾に広告タグが入っていました。

成功すると、先頭に「success」と書かれ、TIMETAG項目にタ イムタグ付き歌詞が入ります。
メッセージの終端は「[EOM]」までとなっています。

該当するデータがなかった場合は、 「success」ではなく「no data」というメッセージのみが返ってきます。

 

データベースについて


このデータベースは『歌詞サイトの歌詞にタイムタグを付けて誰でも簡単にタイムタグ付き歌詞を手に入れら れるようなものを作りたい』というのを、私のできる範囲で実現させたものです。 

データベースは詳しくありませんし、無料レンタルサーバで動いてます。

誰かちゃんとしたデータベースが作れるという人がいたらぜひ作ってもらいたいです。

「データベースってのはもっとこう・・・こういうものだろ!」とかデータベースに詳しくて、「くそっ!こ うなったら俺が作って管理もしてやるよ!」ってなやる気と気概にあふれる方がいたら作っていただいて管理もお任せしたいです。

できればpukiwikiのphp(プラグイン)でデータベースが機能して欲しい。(自前じゃなくMySQLとか使って。)


参考としてここのCGIのプログラムを置いておきま す。

タイムタグ情報データベースは、ヒロさんの作った「HeRO DB データベース」CGIを改造して使用しています。
HeRO DB データベースのプログラムは

○再配布はOKです。

当 サイトで配布する CGI を原本のまま、あるいは、改造したものを、非営利目的でフリーソフトとして再配布されることは自由です。 その際にご連絡を頂ければ嬉しいです。

とのことなので、タイムタグ情報データベースCGI を冷凍したZIPファイルの中に、使用したバージョン1.26の元のプログラムも入れておきます。
テキスト比較ソフトRekisa を使うなどして変更箇所を見つけてください。

――― プログラムの変更箇所は、なんでそうなってるのかのコメントがほとんど書いてないし、今見るとなんでそうやってるのか自分でもよくわからないというような 箇所が少なからずあります。あまり参考になりそうにありませんけれど多少の足しになれば、と。。。

■ ダウンロード ■ タイムタグ情報データベースver.1.5 本体 (99.2KB)