SSブログ

Genre Filterの考察っぽいもの Part2 [PC関連]

注:業務連絡… ですね。

先のエントリで頂いた,コメントで…

ジャンルデータを少し変更しようかと考えています。
・ジャンルを6個まで取得
・拡張ジャンルを取得

"おぉ,そんなことが出来るんだ!" って,事で,まねごとをしてみました。
まぁ,当然,にわか野郎がやる事,タダでは済まない… ですね。。。

2018/04/14 追記
なんか内容があんまりな感じなので,ちょっと加筆調整しました。


2018/04/15 13:25 追記
Tvmaid『中の人』様へ

遅ればせながら,差分のブツはこちら。 パスはいつものです。

ブツを解凍後,今までのソースに被せてください。
詳しくは,添付の"mod履歴.md"をご覧ください。
新しい genre*.def¥default以下に入っています。


で,まぁ,今回も色々と,ポンコツっぷりを発揮しました。

  • ジャンルのマッピングをどうしましょ
    コメントを頂いた通り,CS拡張ジャンルは,3種類(スポーツ/洋画/邦画)有って,映画は1つにまとめられるかなぁ〜と思ったのですが,確かに微妙な違いが…
  • int64でビットシフトに失敗
    data += 0xff << (i * 8);な時って,右辺も0xffLLって付けないとダメなのね…
  • プラグインのデバック方法がよくわかんない orz
    方法 : DLL プロジェクトからデバッグする を見て適当にやっつけた(笑

もう,説明するより,見てもらったほうが早いですね。
# 多分… そうなら良いな… どうか察してください(爆

まずは,TVTestのプラグイン側の,ジャンルを取得する部分に,細工を施します。
ここで,拡張ジャンルをマッピングし直します。

TvmaidPlugin.h
void GetEvents() { : // 7つ目の引数を'I64d'へ sharedOut->Write(L"%d\x2" L"%s\x2" L"%d\x2" L"%s\x2" L"%s\x2" L"%s\x2" L"%I64d\x2" L"%d\x1", : } int64 GetGenre(EpgEventInfo* event) { // 戻り値をuintからint64へ int64 data = 0; for (int i = 0; i < 6; i++) { if (i < event->ContentListLength) { EpgEventContentInfo* info = event->ContentList + i; uint level1 = info->ContentNibbleLevel1; uint level2 = info->ContentNibbleLevel2; if (level1 == 0xE && level2 == 0x0) { // BS デジタル放送用番組付属情報 // 0xE(拡張)に,ARIB-TR-B14 Vol.4 Sec.4 Appendix Bをマッピング level2 = info->UserNibble2; // 流動編成関連付属情報(0x0) level2 += info->UserNibble1 == 0x1 ? 0x8 : 0; // デジタル番組特性情報の時(0x1) } else if (level1 == 0xE && level2 == 0x1) { // 広帯域 CS デジタル放送拡張用情報 // 0xC/0xD(予備)に,ARIB-TR-B15 Part 2 Vol.4 Appendix Aをマッピング level1 = info->UserNibble1 == 0x0 ? 0xC : 0xD; // "拡張"のスポーツ,映画を"予備"へマッピング level2 = info->UserNibble2; // 洋画/邦画の差分を再マップ("青春/学園/アイドル"と"任侠/時代劇"を0xDD,0xDEへ) if (info->UserNibble1 == 0x2) { if (level2 == 0x6 || level2 == 0x7) level2 += 0x7; } } int64 genre = (level1 << 4) + level2; data += genre << (i * 8); } else data += 0xffLL << (i * 8); } return data; }

maid側もジャンルを6個,取得する様にします。

AppDefine.cs
public string GetText(long data) { var text = ""; for (var i = 0; i < 6; i++) // 4 -> 6 : :

WebUIの方も調整…

util.js
getFirstClass: function (genres) { // オリジナルに戻しました。 var id = (genres & 0xf0) >> 4 return this.getClass(id) }, getClass: function (id) { var arr = { 0xC: "sports", // genre-etc 0xD: "movie", // genre-etc : : }, getText: function (id) { var arr = { 0xC: "スポーツ(CS)", // 予備 0xD: "映画(CS)", // 予備 : : },

genre1.defの"予備"に拡張ジャンル名を付けておきます。
上記,util.jsと合わせておきます。

genre1.def
0xC=スポーツ(CS) 0xD=映画(CS)

genre2.defの"予備"に拡張ジャンルを押し込みます。
洋画と邦画の差分を,空いているコード(0xDD,0xDE)へ再マッピング。

genre2.def
0xC0=テニス 0xC1=バスケットボール 0xC2=ラグビー 0xC3=アメリカンフットボール 0xC4=ボクシング 0xC5=プロレス 0xCF=その他 0xD0=アクション 0xD1=SF/ファンタジー 0xD2=コメディー 0xD3=サスペンス/ミステリー 0xD4=恋愛/ロマンス 0xD5=ホラー/スリラー 0xD6=ウエスタン 0xD7=ドラマ/社会派ドラマ 0xD8=アニメーション 0xD9=ドキュメンタリー 0xDA=アドベンチャー/冒険 0xDB=ミュージカル/音楽映画 0xDC=ホームドラマ 0xDD=青春/学園/アイドル 0xDE=任侠/時代劇 0xDF=その他 0xE0=中止の可能性あり 0xE1=延長の可能性あり 0xE2=中断の可能性あり 0xE3=同一シリーズの別話数放送の可能性あり 0xE4=編成未定枠 0xE5=繰り上げの可能性あり 0xE8=中断ニュースあり 0xE9=当該イベントに関連する臨時サービスあり 0xEF=

これで,event-panelなどで

映画(CS)/アクション 映画/洋画

な,感じの表示になります。
同様に,ジャンルカラーも,うまく動作している様です。


タグ:Tvmaid
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。