« ◆何故無い!?999円専用財布 | トップページ | ◇MacにminimServer導入 »

◇miniDLNAでジャンルにalbum層追加

  genre/artist/title
 ⇒
  genre/artist/album/title

 ジャンル下のフォルダ構成の変更の手法

前の記事 ◇RaspiにminiDLNAをソースから入れる ではジャンル下とアーティスト・リストしたのmusicAtristレコードを交換しました。

これを、交換ではなくアーティスト・リストしたの構成をジャンル下に複製する方法とします。

 前回の手法

 今回の手法

今回はジャンル下のmusicAtristの下のmusicTrackレコードを一旦全て削除します。

アーティスト・リスト下のmusicAtristのmusicAlbum/misicTrackを複製し、ジャンル下のmusicAtristに繋ぎます。

 実際のコード

置き換えはDB作成途中ではなく完成後に行うようにしました。
scanner.cにあるstart_scanner()メソッドの最後に追加しました。

ビルドし起動しなおします。

$ sudo service minidlna stop
$ make
$ sudo make install
$ sudo rm -r /var/cache/minidlna
$ sudo rm /var/log/minidlna.log
$ sudo service minidlna start

無事ジャンルの下のアーティストの下にアルバムが置かれるようになりました。

 注意点

sqlite3のAPIを使うに当たって名称部の文字のエスケープが必要となります。

'SQLの文字列内では2個並べ''とします
% 文字列フォーマット内では2個並べ%%とします
sqlite-APIでは最終SQL文字列ではなく、format文(%sだとか%dが可能)を与えることに注意が必要です。
format文を作るformat文では%%%%と2段のエスケープが必要です。
SQLのlikeのパターンで使う場合はさらにSQLのエスケープも必要となりますが、今回はlikeでは普通の文字としての%使いませんのでSQL用エスケープ処理は入っていません。

 ソース変更部ダウンロード

念のため、ソース1.2.1の変更部を用意しました。

minidlna121_patches_02.zip

修正済みソースと、オリジナルソース、オリジナルからのdiff(パッチ)が入っています。

修正済みソース

scanner.c : ジャンル階層修正

オリジナルソース(org)と修正分(patch)

scanner.c.org : ジャンル階層修正
scanner.c.patch02 : ジャンル階層修正

次の様にすれば.orgと.patchから変換後ソースを得る事が出来ます。

$ cp scanner.c.org scanner.c
$ patch scanner.c scanner.c.patch_02

 残された問題点。


多くはありませんがアートワークの欠落が起きています。

原因は分かっていません。


ログ、/var/log/minidlna.logに次のメッセージがでます。

[・・・] sql.c:117: warn: sql_get_int_field: step failed: SQL logic error or missing database
SELECT count(*) from OBJECTS where PARENT_ID = '1';

原因は分かっていません。

|

« ◆何故無い!?999円専用財布 | トップページ | ◇MacにminimServer導入 »