JOYSOUNDと仲良くなりたい -002-

これまでで、アーティストには固有のIDであるartistIdが、楽曲にはgakkyokuIdが存在することが分かった。

そこで、だ。アーティストの一覧が、いや、とりあえずartistIdの一覧が欲しい

これは心の底から湧きあがる自然な欲求なので抑える術は存在しない。

考えた方法は2つ。


方法1:
0から順番に調べる。

実験1:
http://joysound.com/ex/search/artist.htm?artistId=x
xに順番に数を当てはめ、アクセスする。アーティストが見つかるかどうかを調べ、記録する。

結果1:
欠番があることが分かった。ただし、この方法だと一体どこまで調べればいいか分からない!orz


方法2:
歌手一覧のページから歌手のページを全巡回する。
方法1の数万倍イイ! 失敗するアクセスがなく、かつすべての歌手を確実に網羅できる。

実験2:
http://joysound.com/ex/search/index.htm
歌手名インデックスより、それぞれの頭文字で始まるすべての歌手のページにアクセスする。

結果2:
インデックスはたくさんあって大変。諦めた。いや、実はこの実験の過程でもっといい方法を見つけたのだ。
→ 方法3


頭文字ごとにアーティストの件数を調査していたところ、次のようなことを発見した。

「あ」の検索結果のページのURLは、
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=101
である。

「い」の検索結果のページのURLは、
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=102
である。

この調子で50音を辿るかと思いきや、

「や」の検索結果のページのURLは、
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=136
なのに対し、

「ゆ」の検索結果のページのURLは、
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=138
であることが分かった。

実験をするものとして、これは
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=137
へのアクセスを試さざるを得ない。

アクセスすると、そこには

「」の検索結果:36827件(1-20件目表示)

との表示が!!実はこの件数は、「あ」から「っ」までのすべての頭文字ごとの件数の合計とぴったり一致する。このことから、137へアクセスすればアーティストの一覧が簡単に拝見できるということが分かった。

ただし、アーティストの表示は20ずつである。したがって、人の操作でいう「次の20件」を押さなければならない。……押してみた。

http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=137&sortKey=15&offset=20

このoffset値は、表示ページの先頭のアーティストが、全体の検索結果の何番目になるかを指定するものである。したがって、[ここで指定した数]番目からの20件が、表示されることとなる。


方法3:
http://joysound.com/ex/search/artistsearchindex.htm?searchType=02&searchWordType=2&charIndexKbn=01&charIndex1=137&sortKey=15&offset=x
xに数を当てはめてアクセスし、表示されたアーティストのIDを調べる。

実験3:
xに当てはめる数は、0から36827-1である。アーティストの件数が分かっているので安心だ。今回はxを1ずつ増やし、表示されたページの先頭のアーティストのartistIdのみを調べることとする。artistIdはoffset値と一緒に記録する。

結果3:
次の記事で。乞うご期待!

JOYSOUNDと仲良くなりたい -001-

楽曲とアーティストを管理しているIDについてちょっと探ってみた。


まず、アーティスト。

  1. アーティストには、固有のIDが割り振られている(artistId)。
  2. artistIdは連番か区分コード。欠番がある。
  3. アーティスト名はdispSingerNameという項目の値である。
  4. 各artistIdにはsingerCdという項目があり、ほとんどのartistIdにある(nullも存在する)。
  5. アーティスト検索はartistId, singerCdのどちらからでもできる。
  6. 「りれき」ページからはsingerCdでのリンクされている。

例えば、以下のような感じに検索がされる。

上記の2つのURLは、同じアーティストをそれぞれ別の項目から検索したものだ。どちらでも同じページが表示される。

「りれき」ページからはsingerCdでリンクされていると書いたが、なぜ主キーっぽいartistIdを使っていないのか。また、singerCdって何なのか。正直、よくわからない。ただ、artistIdは存在するけどsingerCdはnull値であるようなアーティストをいくつか調べると、どれもカラオケ店で歌えるような楽曲は登録されていない(着メロなどしか登録されていない)ということが分かった。 そのために、カラオケ店で歌った「りれき」からはsingerCdを使ってリンクされているものと思われる。

個人的には「_」とか入っていないartistIdのほうが使い勝手がよさそうだと思ったので、JOY系の管理には今後artistIdを使っていこうと思う。

欠番があるのは、連番コードで削除があったからか、そもそも区分コードだからか、これも知りたいと思う。


次に、楽曲。

  1. 楽曲には固有のgakkyokuIdがある。
  2. gakkyokuIdは連番か、区分コード。欠番がある。
  3. 「楽曲タイトル」はmusicName、「楽曲タイトル/アーティスト」はsongNameという項目。
  4. 各gakkyokuIdにはselSongNoという項目がある(null値の存在は未確認)。
  5. 楽曲検索はgakkyokuIdとselSongNoのどちらからでもできる。
  6. 「りれき」ページからはselSongNoでリンクされている。

例えば、以下のような感じに検索がされる。

例によって、上記の2つのURLは同じ楽曲のページをそれぞれ別項目から表示したものだ。

こちらもgakkyokuIdが主キーだと考えられるが、gakkyokuIdは存在しても対応するselSongNoがnullと言うことがあるのかどうかは、まだ確認していない。

「りれき」ページからのリンクで使われているのはselSongNoだが、これはアーティストのsingerCdなどと違って自然数らしいので、gakkyokuIdを調べるのが大変であればselSongNoを使っても問題ないんじゃないかと思われる。