« RasPiでDLNAサーバー(iTunesから移行) | トップページ | miniDLNAのDB形式とジャンル階層の不備 »

miniDLNA改:Artistの取り扱い

# 2020/05/25
この記事で用いたminidlna-1.1.5は安定度に問題があり、実運用には至りませんでした。
その後、miniDLNA1.2.1を用い、
◇RaspiにminiDLNAをソースから入れる
◇miniDLNAでジャンルにalbum層追加
の手続きにより運用可能となりました。


備忘録

RaspberryPi3に導入したminiDLNAですが、Artistタグが無視され AlbumArtistが採用される仕様は非常に困るので、修正しました。

◆RasPiでDLNAサーバー(iTunesから移行)の続きです。

 ソース修正

本来はフォルダ出力の部分で選択するべきですが、今回はソース修正の 手始めとして、最も簡単そうなタグ情報取り込み部で、ALBUM ARTIST の代わりにARTISTを採用するという強引な手法を取りました。

変更したソースは
*minidlna/tagutils/tagutil-aac.c
のみです。

次の修正を行いました。

== スイッチ用マクロ追加 ==
line 1:
#define HI

== 置き換え処理追加 ==
112-134:あたり
   if(!memcmp(current_atom, "\xA9" "nam", 4))
      psong->title = strdup((char*)¤t_data[16]);
   else if(!memcmp(current_atom, "\xA9" "ART", 4) ||
           !memcmp(current_atom, "\xA9" "art", 4))
      psong->contributor[ROLE_ARTIST] = strdup((char*)¤t_data[16]);
      psong->title = strdup((char*)¤t_data[16]);
   else if(!memcmp(current_atom, "\xA9" "ART", 4) ||
           !memcmp(current_atom, "\xA9" "art", 4))
#ifndef HI
      psong->contributor[ROLE_ARTIST] = strdup((char*)¤t_data[16]);
#else
      {
         psong->contributor[ROLE_ARTIST] = strdup((char*)¤t_data[16]);
         psong->contributor[ROLE_ALBUMARTIST] = strdup((char*)¤t_data[16]);
      }
#endif
   else if(!memcmp(current_atom, "\xA9" "alb", 4))
      psong->album = strdup((char*)¤t_data[16]);
   else if(!memcmp(current_atom, "\xA9" "cmt", 4))
      psong->comment = strdup((char*)¤t_data[16]);
   else if(!memcmp(current_atom, "aART", 4) ||
           !memcmp(current_atom, "aart", 4))
#ifndef HI
      psong->contributor[ROLE_ALBUMARTIST] = strdup((char*)¤t_data[16]);
#else
      ;
#endif
   else if(!memcmp(current_atom, "\xA9" "dir", 4))
      psong->contributor[ROLE_CONDUCTOR] = strdup((char*)¤t_data[16]);
#define HIをコメントアウトすると元のコードが動きます。

HIが#defineされていると、
・ ARTISTタグの内容をALBUM_ARTIST情報として採用し、
・ ALBUM_ATRISTタグは無視します。

 ビルド、インストール

当初のmake/make installと異なる点はありません。

make
sudo make install
設定ファイルなどはそのままです。

 再起動

曲構成DBを再構成させる必要があります。
幾つか試したのですが、どれも動かず、最終手段としてDBファイルの消去を行いました。

次の手順を踏みました。

sudo service minidlna stop
sudo rm -r /var/cache/minidlna
sudo rm /var/log/minidlna.log
sudo service minidlna start
/var/cache/minidlnaはデフォルトのDBフォルダです。
設定で別の所に置いてあるならそのフォルダを消去します。
/var/log/minidlna.logはデフォルトのlogファイルです。特に消す必要はありません。

DNLAクライアント(YAMAHA-579)からアクセスしてみると無事アーティスト(アルバムアーティストでなく)が出てきました。

 本当は

◆RasPiでDLNAサーバー(iTunesから移行)で述べた ジャンルのフォルダ構造の問題などを考えると、フォルダ表示部か DB作成部の修正が必要です。

とはいえ、。。。今後のココロだ~!

 「何とか改」雑談

「何とか改」で有名なものと言えば、「紫電改」でしょう。 何といっても名作「紫電改のタカ」がありますしね。

とはいえ「ゼロ戦」とは格が違いますね。
隔週刊で第二次大戦の飛行機を出しているシリーズがあるのですが 初刊の紫電改はなかなか本屋から消えないのに「ゼロ戦」は 直ぐに売れていました。
そうだよなあ。。

ところで「紫電改」は有名だけど「紫電」はどんなんだったんだろう?
ゼロ戦なら22型,32型,飛んで52型となるんだけど「紫電」なぜ「紫電改」に なったのでしょうね。もはや「紫電」とは呼べない。だけど別名にするほどでもないという改修が入ったんですかね。

「紫電改」って妙にズングリムックリしていて大きい気がしていたのですが、同スケールでゼロ戦と並べるとやっぱり大きいですね。

|

« RasPiでDLNAサーバー(iTunesから移行) | トップページ | miniDLNAのDB形式とジャンル階層の不備 »

トラックバック


この記事へのトラックバック一覧です: miniDLNA改:Artistの取り扱い:

« RasPiでDLNAサーバー(iTunesから移行) | トップページ | miniDLNAのDB形式とジャンル階層の不備 »