[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
先ごろからかなりしつこく機能追加をつづけている所有音源データベースのコードをのちのち見かえして迷子にならないためのメモ、およびそこから見えてくる「やらなきゃね」リスト。はっきり言っておれ以外の人には何ら有用性のないものなので、読む価値なしです。
まず、1作品についての参加アーティストが1人もしくは1組ではない場合、あるいは、別の名でふつうは通っている人が変名で作品をリリースしている場合の処理。つまり、たとえば、FarbenはJan Jelinekの変名ということで、FarbenをサーチしたときはJan Jelinekの名も併記し、かつその名をクリックすると今度はJan Jelinek名義で登録されている音盤が表示されるようにしたいし、また、DACMはPITAとツジコノリコのコンビ名ということを明示し、それらの名のおのおのをクリックすると、それらの名でリリースされている音盤が表示されるようにしたい。
これは、実装するにそれほどむづかしいことではなく、ようは、ある書式を定めたのち、それらを正規表現によって分割すればよい。具体的には、「A1 (A2/A3)」というような書式で、A1という名義はA2とA3というアーティストによるコンビ名である、ということを表すとする。すると課題は、まずこれを「A1」と「A2/A3」の2つに分けたのち、後者のカッコ内を「/」でスプリットすればよい、ということになる。具体的には、
1)「A1 (A2/A3)」を「A1」と「A2/A3」に分ける
''eregi("(.*)((.*))"), $artist, $split)''($artist="A1 (A2/A3)"とすると、配列変数$splitの[1]と[2]に「A1」と「A2/A3」がそれぞれ格納される。このままだと$splite[1]には半角スペース付きのA1が格納されているので、それをtrimするなり何なりするのを忘れずに)
2) 「A2/A3」を「A2」と「A3」に分ける''$split=explode("/", $artist)''($artist="A2/A3"とすると、配列変数$splitの[0]と[1]にそれぞれ「A2」と「A3」がそれぞれ格納される)
ということになる。いまeregiとexplodeの2段がまえでスプリットしているが、やりようによってはeregi一本でいけるかもしれない(ただ、ここでのように、ワンキーでの分割の場合、explodeのほうが高速、ということをどこかで読んだ覚えがある)。ただ、この方途、というか、この考えに沿ってべたで書き下ろしたコードは、かなりな「スパゲティ」度合いを示しており、それの可読性を高めることが今後の課題。
つぎに、たとえばWinterkälteのように、名義にアクセント記号を含む場合の処理。これは最初、生データベースにアクセント記号付きの文字は埋め込めないと思いこんでいたので実体参照で、つまり右のWinterkälteの場合だと「winterkälte」というように表記していたのだが、データベースの文字コードをEUC(-JP)にしている場合、アクセント記号付きの文字もそのまま埋め込めることに気づいた。となると問題は、1) こうしたアーティスト名をDiscogsに受けわたすときの処理、具体的には、文字コードをEUC(-JP)からUTF-8に変えることと、2) 生データをアクセント記号付きで作っている場合、検索語にアクセント抜きのものを指定すると想定された検索結果が返ってこない、具体的には、たとえば、前述のWinterkälteを検索しようと「winterkalte」と検索語指定してもWinterkälteで登録されているデータは引っかからないのでそれをどうにかする、という2点になる。
前者の文字コード変換はmb_convert_encoding($target, "UTF-8", "EUC-JP")で一発解決なのでどうでもいいとして、問題だったのは後者で、色々と考えたすえけっきょく、検索専用の文字列をデータに併記することにした。具体的にはWinterkälteの場合、「winterkälte{winterkalte}」というふうに「{}」内に検索専用のアクセント記号なしの文字列も埋め込んでおき、表示するときはeregi_replace("{.*}", "", $target, $result)で「{...}」の部分を除去する、という塩梅。
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
音
雑
虫
技術
『スペクタクルの社会』を読む
ドゥルーズ講義録
電波
趣味の数学
趣味のゲーデル
『プリンキピア・マテマティカ』を読む
自己紹介もどき
ブログペット俳句
芸術一般
言語ヲタ
お客様
GRE CS
留学
Boing Boing
映画
ちょっといい話
かなりダメな話
魂の叫び
哲学と数学
論文
引用
「いい」とも「ダメ」とも言いがたい話
悲喜こもごも
証明論
ポエム
書物への呪詛
言わずもがななことではあるけれどときに忘れてしまうこと
何か無駄なことをしよう
日々
趣味の勉強
夢
ブログの記事
翻訳
勉強
不眠
文房具
ライフハック
育児
thayashi#ucalgary.ca
(#を@に置換してください)
このブログで紹介したことのある本をランダム表示。
このブログで紹介したことのある音をランダム表示。