﻿<objects version="0.5">

<container name="root" type="RootContainer">
  <fields in="t_object">
    <field name="@id" kind="fixed">0</field>
    <field name="@parentID" kind="fixed">-1</field>
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:noLocalContents" kind="fixed">1</field>
    <field name="dc:title" kind="fixed">Root</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">iif(exists(select [@id] from t_object where [classID] = 301), 'Video/Live TV', 'Video')</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video_search_by_genre">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Sort by Category</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video_genre">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">iif(isnull([upnp:genre]), 'Unknown', [upnp:genre])</field>
    <field name="param" kind="param">[upnp:genre]</field>
    <field name="upnp:class" kind="fixed">object.container.genre</field>
  </fields>
  <from>t_object</from>
  <conds><cond>[classID] = 300</cond></conds>
  <group>[upnp:genre]</group>
  <order nulls="'鶴鶴'">[upnp:genre]</order>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_genre_item">
  <params>
    <param name="genre" field="upnp:genre" type="text"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_search_by_date" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Sort by Registration Date</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video_recent">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Recently Registered Videos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
  <conds>
    <cond>exists (select @id from t_object where [dc:date] between datediff('d', 7, now()) and now() and [classID] = 300)
    </cond>
  </conds>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_recent_item">
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond>[dc:date] between datediff('d', 7, now()) and now()</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_search_by_year_and_month">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Sort by Year or Month</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
  <conds>
    <cond>exists (select @id from t_object where [dc:date] is not null and [classID] = 300)</cond>
  </conds>
</container>

<container name="video_year" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:date" kind="internal">first([dc:date])</field>
    <field name="dc:title">year([dc:date])</field>
    <field name="param" kind="param">year([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond>[dc:date] is not null</cond>
    <cond>[classID] = 300</cond>
  </conds>
  <group>year([dc:date])</group>
  <order>first([dc:date]) DESC</order>
</container>

<container name="video_year_and_month">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:date" kind="internal">first([dc:date])</field>
    <field name="dc:title">switch(month([dc:date]) = 1, 'January', month([dc:date]) = 2, 'February', month([dc:date]) = 3, 'March', month([dc:date]) = 4, 'April', month([dc:date]) = 5, 'May', month([dc:date]) = 6, 'June', month([dc:date]) = 7, 'July', month([dc:date]) = 8, 'August', month([dc:date]) = 9, 'September', month([dc:date]) = 10, 'October', month([dc:date]) = 11, 'November', month([dc:date]) = 12, 'December')</field>
    <field name="param" kind="param">month([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], 1, 1) and [dc:date] &lt; dateadd('yyyy', 1, dateserial([year], 1, 1))</cond>
    <cond>[classID] = 300</cond>
  </conds>
  <group>month([dc:date])</group>
  <order>first([dc:date]) DESC</order>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_year_and_month_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], [month], 1) and [dc:date] &lt; dateadd('m', 1, dateserial([year], [month], 1))</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_year_all">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">All Videos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_year_all_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], 1, 1) and [dc:date] &lt; dateadd('yyyy', 1, dateserial([year], 1, 1))</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_search_by_weekday">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Sort by Day of the Week</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
  <conds>
    <cond>exists (select @id from t_object where [dc:date] is not null and [classID] = 300)</cond>
  </conds>
</container>

<container name="video_weekday">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:date">max([dc:date])</field>
    <field name="dc:title">switch(weekday([dc:date]) = 1, 'Sunday', weekday([dc:date]) = 2, 'Monday', weekday([dc:date]) = 3, 'Tuesday', weekday([dc:date]) = 4, 'Wednesday', weekday([dc:date]) = 5, 'Thursday', weekday([dc:date]) = 6, 'Friday', weekday([dc:date]) = 7, 'Saturday')</field>
    <field name="param" kind="param">weekday([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond>[dc:date] is not null</cond>
    <cond>[classID] = 300</cond>
  </conds>
  <group>weekday([dc:date])</group>
  <order>weekday([dc:date])</order>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_weekday_item">
  <params>
    <param name="weekday" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="weekday">weekday([dc:date]) = [weekday]</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_search_by_channel">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">Sort by Channel</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video_channel">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">iif(isnull([upnp:channelName]), 'Unknown', [upnp:channelName])</field>
    <field name="param" kind="param">[upnp:channelName]</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds><cond>[classID] = 300</cond></conds>
  <group>[upnp:channelName]</group>
  <order nulls="'鶴鶴'">[upnp:channelName]</order>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_channel_item">
  <params>
    <param name="channel" field="upnp:channelName" type="text"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="channel">[upnp:channelName] = [channel]</cond>
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="video_search_by_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">iif(exists(select [id] from t_keyword where [av:mediaClass] like '%V%'), 'Sort by Keyword', 'Sort by Keyword (Not Set)')</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="video_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">[keyword]</field>
    <field name="id" kind="internal" />
    <field name="param" kind="param" param_type="integer">[id]</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <conds>
    <cond>[av:mediaClass] like '%V%'</cond>
  </conds>
  <from>t_keyword</from>
  <order>[id]</order>
  <child_order>[dc:date] DESC</child_order>
</container>

<item name="video_keyword_item">
  <params>
    <param name="keyword" field="id" type="integer"/>
  </params>
  
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond keyword="keyword" />
    <cond>[classID] = 300</cond>
    <cond>not([@id] in (select t_object.[@id] from t_object inner join t_topic on t_object.[@id] = t_topic.[object@id]) or [@id] in (select t_object.[@id] from t_object inner join t_digest on t_object.[@id] = t_digest.[object@id]))</cond>
  </conds>
  <order>[dc:date] DESC</order>
  <keyword_fields>
    <field name="arib:longDescription" />
    <field name="av:keyword" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </keyword_fields>
</item>

<container name="video_all_video">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title" kind="fixed">All Videos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<item name="video_all_item" entity_id="300">
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond>[classID] = 300</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="live_tv">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">'Live TV'</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
  <conds>
    <cond>exists (select @id from t_object where [classID] = 301)</cond>
  </conds>
</container>

<container name="live_tv_server">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">V</field>
    <field name="dc:title">first([t_server.av:orgServerName])</field>
    <field name="param" kind="param" param_type="integer">[t_object.serverID]</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds><cond>[classID] = 301</cond></conds>
  <group>t_object.[serverID]</group>
</container>

<item name="live_tv_server_item">
  <params>
    <param name="server" field="t_object.serverID" type="integer"/>
  </params>
  
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="arib:audioComponentType" />
    <field name="arib:audioComponentType@qualityIndicator" />
    <field name="arib:caProgramInfo" />
    <field name="arib:caProgramInfo@available" />
    <field name="arib:caProgramInfo@price" />
    <field name="arib:captionInfo" />
    <field name="arib:copyControlInfo" />
    <field name="arib:dataProgramInfo" />
    <field name="arib:dataProgramInfo@sync" />
    <field name="arib:longDescription" />
    <field name="arib:multiESInfo" />
    <field name="arib:multiViewInfo" />
    <field name="arib:objectType" />
    <field name="arib:videoComponentType" />
    <field name="av:allowedOperation" />
    <field name="av:broadcastSystem" />
    <field name="av:contentIndexURI" />
    <field name="av:contentIndexURI@av:protocolInfo" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:eventingURI" />
    <field name="av:expirationDateTime" />
    <field name="av:filmrollURI" />
    <field name="av:filmrollURI@av:codec" />
    <field name="av:filmrollURI@av:colorDepth" />
    <field name="av:filmrollURI@av:protocolInfo" />
    <field name="av:filmrollURI@av:resolution" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:recordEndDateTime" />
    <field name="av:recordQualityLevel" />
    <field name="av:recordStartDateTime" />
    <field name="av:recordStatus" />
    <field name="av:recordingMethod" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title">[upnp:channelName]</field>
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:channelName" />
    <field name="upnp:channelNr" />
    <field name="upnp:channelNr" kind="internal" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:icon@arib:resolution" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:scheduledEndTime" />
    <field name="upnp:scheduledStartTime" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:pidAudio" />
    <field name="res@av:pidPCR" />
    <field name="res@av:pidPMT" />
    <field name="res@av:pidVideo" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:recordQualityLevel" />
    <field name="res@av:transformed" />
    <field name="res@av:videoBitrate" />
    <field name="res@av:videoFrameRate" />
    <field name="res@av:videoGOP" />
    <field name="res@av:videoProfile" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@colorDepth" />
    <field name="res@dlna:ifoFileURI" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="server">[server] = t_server.[serverID]</cond>
    <cond>[classID] = 301</cond>
  </conds>
  <order>[upnp:channelNr]</order>
</item>

<container name="music" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">Music</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_search_by_artist">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">Sort by Artist</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_artist" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:artist]), 'Unknown', [upnp:artist])</field>
    <field name="param" kind="param">[upnp:artist]</field>
    <field name="upnp:artist" />
    <field name="upnp:class" kind="fixed">object.container.person.musicArtist</field>
  </fields>
  <from>t_object</from>
  <conds><cond>[classID] = 100</cond></conds>
  <group>[upnp:artist]</group>
  <order nulls="'鶴鶴'">[upnp:artist]</order>
</container>

<container name="music_artist_album">
  <params>
    <param name="artist" field="upnp:artist" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:album]), 'Unknown', [upnp:album])</field>
    <field name="param" kind="param">[upnp:album]</field>
    <field name="upnp:album" />
    <field name="upnp:artist">first([upnp:artist])</field>
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <group>[upnp:album]</group>
  <order nulls="'鶴鶴'">[upnp:album]</order>
</container>

<item name="music_artist_album_item">
  <params>
    <param name="artist" field="upnp:artist" />
    <param name="album" field="upnp:album" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond param="album">[upnp:album] = [album]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_artist_all">
  <params>
    <param name="artist" field="upnp:artist" type="text" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Songs</field>
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
  </fields>
  <from>t_single</from>
</container>

<item name="music_artist_all_item">
  <params>
    <param name="artist" field="upnp:artist" type="text" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_search_by_genre">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">Sort by Category</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_genre" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:genre]), 'Unknown', [upnp:genre])</field>
    <field name="param" kind="param">[upnp:genre]</field>
    <field name="upnp:class" kind="fixed">object.container.genre.musicGenre</field>
    <field name="upnp:genre" kind="internal" />
  </fields>
  <from>t_object</from>
  <conds><cond>[classID] = 100</cond></conds>
  <group>[upnp:genre]</group>
  <order nulls="'鶴鶴'">[upnp:genre]</order>
</container>

<container name="music_genre_all_artist" type="union">
  <params>
    <param name="genre" field="upnp:genre" />
  </params>
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Artists</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_genre_all_artist_album">
  <params>
    <param name="genre" field="upnp:genre" />
  </params>
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:album]), 'Unknown', [upnp:album])</field>
    <field name="param" kind="param">[upnp:album]</field>
    <field name="upnp:album" />
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
    <field name="upnp:genre">first([upnp:genre])</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <group>[upnp:album]</group>
  <order nulls="'鶴鶴'">[upnp:album]</order>
</container>

<item name="music_genre_all_artist_album_item">
  <params>
    <param name="genre" field="upnp:genre" />
    <param name="album" field="upnp:album" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond param="album">[upnp:album] = [album]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_genre_all">
  <params>
    <param name="genre" field="upnp:genre" type="text" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Songs</field>
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
    <field name="upnp:genre">[genre]</field>
  </fields>
  <from>t_single</from>
</container>

<item name="music_genre_all_item">
  <params>
    <param name="genre" field="upnp:genre" type="text" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_genre_artist" type="union">
  <params>
    <param name="genre" field="upnp:genre" />
  </params>
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:artist]), 'Unknown', [upnp:artist])</field>
    <field name="param" kind="param">[upnp:artist]</field>
    <field name="upnp:class" kind="fixed">object.container.genre.musicArtist</field>
    <field name="upnp:genre" kind="internal">first([upnp:genre])</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <group>[upnp:artist]</group>
  <order nulls="'鶴鶴'">[upnp:artist]</order>
</container>

<container name="music_genre_artist_album">
  <params>
    <param name="genre" field="upnp:genre" />
    <param name="artist" field="upnp:artist" />
  </params>
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:album]), 'Unknown', [upnp:album])</field>
    <field name="param" kind="param">[upnp:album]</field>
    <field name="upnp:album" />
    <field name="upnp:artist">first([upnp:artist])</field>
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
    <field name="upnp:genre">first([upnp:genre])</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <group>[upnp:album]</group>
  <order nulls="'鶴鶴'">[upnp:album]</order>
</container>

<item name="music_genre_artist_album_item">
  <params>
    <param name="genre" field="upnp:genre" />
    <param name="artist" field="upnp:artist" />
    <param name="album" field="upnp:album" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond param="album">[upnp:album] = [album]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_genre_artist_all">
  <params>
    <param name="genre" field="upnp:genre" type="text" />
    <param name="artist" field="upnp:artist" />
  </params>
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Songs</field>
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
    <field name="upnp:genre">[genre]</field>
  </fields>
  <from>t_single</from>
</container>

<item name="music_genre_artist_all_item">
  <params>
    <param name="genre" field="upnp:genre" type="text" />
    <param name="artist" field="upnp:artist" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="genre">[upnp:genre] = [genre]</cond>
    <cond param="artist">[upnp:artist] = [artist]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="music_all_album">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Albums</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_album">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(isnull([upnp:album]), 'Unknown', [upnp:album])</field>
    <field name="param" kind="param">[upnp:album]</field>
    <field name="upnp:album" />
    <field name="upnp:class" kind="fixed">object.container.album.musicAlbum</field>
  </fields>
  <from>t_object</from>
  <conds><cond>[classID] = 100</cond></conds>
  <group>[upnp:album]</group>
  <order nulls="'鶴鶴'">[upnp:album]</order>
</container>

<item name="music_album_item">
  <params>
    <param name="album" field="upnp:album" />
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="album">[upnp:album] = [album]</cond>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>


<container name="music_search_by_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">iif(exists(select [id] from t_keyword where [av:mediaClass] like '%M%'), 'Sort by Keyword', 'Sort by Keyword (Not Set)')</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="music_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title">[keyword]</field>
    <field name="id" kind="internal" />
    <field name="param" kind="param" param_type="integer">[id]</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <conds>
    <cond>[av:mediaClass] like '%M%'</cond>
  </conds>
  <from>t_keyword</from>
  <order>[id]</order>
</container>

<item name="music_keyword_item">
  <params>
    <param name="keyword" field="id" type="integer"/>
  </params>
  
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond keyword="keyword" />
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
  <keyword_fields>
    <field name="av:keyword" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:longDescription" />
    <field name="upnp:playlist" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </keyword_fields>
</item>

<container name="music_all_music">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">M</field>
    <field name="dc:title" kind="fixed">All Songs</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<item name="music_all_item" entity_id="100">
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:coverImageURI" />
    <field name="av:coverImageURI@av:allowedOperation" />
    <field name="av:coverImageURI@av:autoGenerated" />
    <field name="av:coverImageURI@av:codec" />
    <field name="av:coverImageURI@av:colorDepth" />
    <field name="av:coverImageURI@av:pixelAspectRatio" />
    <field name="av:coverImageURI@av:protocolInfo" />
    <field name="av:coverImageURI@av:resolution" />
    <field name="av:coverImageURI@av:size" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:notPlayed" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:registeredDateTime" />
    <field name="av:rippedDateTime" />
    <field name="av:sourceMedium" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="res@duration" kind="internal" />
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:albumArtURI" />
    <field name="upnp:albumArtURI@av:allowedOperation" />
    <field name="upnp:albumArtURI@av:autoGenerated" />
    <field name="upnp:albumArtURI@av:codec" />
    <field name="upnp:albumArtURI@av:colorDepth" />
    <field name="upnp:albumArtURI@av:orientation" />
    <field name="upnp:albumArtURI@av:pixelAspectRatio" />
    <field name="upnp:albumArtURI@av:protocolInfo" />
    <field name="upnp:albumArtURI@av:resolution" />
    <field name="upnp:albumArtURI@av:size" />
    <field name="upnp:albumArtURI@dlna:profileID" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:lyricsURI" />
    <field name="upnp:originalTrackNumber" />
    <field name="upnp:playlist" />
    <field name="upnp:playlist@av:order" />
    <field name="upnp:producer" />
    <field name="upnp:radioBand" />
    <field name="upnp:radioCallSign" />
    <field name="upnp:radioStationID" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:toc" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:audioBitrate" />
    <field name="res@av:authenticationUri" />
    <field name="res@av:bitrateMode" />
    <field name="res@av:codec" />
    <field name="res@av:fringe" />
    <field name="res@av:maxBitrate" />
    <field name="res@av:transformed" />
    <field name="res@bitrate" />
    <field name="res@bitsPerSample" />
    <field name="res@duration" />
    <field name="res@nrAudioChannels" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@sampleFrequency" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond>[classID] = 100</cond>
  </conds>
  <order>[dc:date]</order>
</item>

<container name="photo" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:title" kind="fixed">Photo</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="photo_search_by_date">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:title" kind="fixed">Sort by Registration Date</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="photo_year" type="union">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:date">max([dc:date])</field>
    <field name="dc:title">year([dc:date])</field>
    <field name="param" kind="param">year([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond>[dc:date] is not null</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <group>year([dc:date])</group>
  <order>first([dc:date]) DESC</order>
</container>

<container name="photo_month" type="union">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:date">max([dc:date])</field>
    <field name="dc:title">switch(month([dc:date]) = 1, 'January', month([dc:date]) = 2, 'February', month([dc:date]) = 3, 'March', month([dc:date]) = 4, 'April', month([dc:date]) = 5, 'May', month([dc:date]) = 6, 'June', month([dc:date]) = 7, 'July', month([dc:date]) = 8, 'August', month([dc:date]) = 9, 'September', month([dc:date]) = 10, 'October', month([dc:date]) = 11, 'November', month([dc:date]) = 12, 'December')</field>
    <field name="param" kind="param">month([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], 1, 1) and [dc:date] &lt; dateadd('yyyy', 1, dateserial([year], 1, 1))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <group>month([dc:date])</group>
  <order>first([dc:date]) DESC</order>
</container>

<item name="photo_month_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], [month], 1) and [dc:date] &lt; dateadd('m', 1, dateserial([year], [month], 1))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="photo_year_all">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:date">dateserial([year], 1, 1)</field>
    <field name="dc:title" kind="fixed">All Photos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<item name="photo_year_all_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], 1, 1) and [dc:date] &lt; dateadd('yyyy', 1, dateserial([year], 1, 1))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="photo_day">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:date">max([dc:date])</field>
    <field name="dc:title">day([dc:date])</field>
    <field name="param" kind="param">day([dc:date])</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_object</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], [month], 1) and [dc:date] &lt; dateadd('m', 1, dateserial([year], [month], 1))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <group>day([dc:date])</group>
  <order>first([dc:date]) DESC</order>
</container>

<item name="photo_day_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
    <param name="day" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], [month], [day]) and [dc:date] &lt; dateadd('d', 1, dateserial([year], [month], [day]))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="photo_month_all">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:date">dateserial([year], [month], 1)</field>
    <field name="dc:title" kind="fixed">All Photos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<item name="photo_month_all_item">
  <params>
    <param name="year" field="dc:date" type="integer"/>
    <param name="month" field="dc:date" type="integer"/>
  </params>

  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond param="year">[dc:date] &gt;= dateserial([year], [month], 1) and [dc:date] &lt; dateadd('m', 1, dateserial([year], [month], 1))</cond>
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date] DESC</order>
</item>

<container name="photo_search_by_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:title">iif(exists(select [id] from t_keyword where [av:mediaClass] like '%P%'), 'Sort by Keyword', 'Sort by Keyword (Not Set)')</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<container name="photo_keyword">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:title">[keyword]</field>
    <field name="id" kind="internal" />
    <field name="param" kind="param" param_type="integer">[id]</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <conds>
    <cond>[av:mediaClass] like '%P%'</cond>
  </conds>
  <from>t_keyword</from>
  <order>[id]</order>
</container>

<item name="photo_keyword_item">
  <params>
    <param name="keyword" field="id" type="integer"/>
  </params>
  
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@refID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="classID" kind="class_id">classID</field>
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond keyword="keyword" />
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date]</order>
  <keyword_fields>
    <field name="av:keyword" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </keyword_fields>
</item>

<container name="photo_all_photo">
  <fields in="t_object">
    <field name="@id" type="id" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:mediaClass" kind="fixed">P</field>
    <field name="dc:title" kind="fixed">All Photos</field>
    <field name="upnp:class" kind="fixed">object.container</field>
  </fields>
  <from>t_single</from>
</container>

<item name="photo_all_item" entity_id="200">
  <fields in="t_object">
    <field name="@id" type="id" kind="fetch" />
    <field name="@parentID" type="id" />
    <field name="@restricted" kind="fixed">1</field>
    <field name="av:allowedOperation" />
    <field name="av:capturedDateTime" />
    <field name="av:dateTime" />
    <field name="av:keyword" />
    <field name="av:modifiedDateTime" />
    <field name="av:orgTitle" />
    <field name="av:originalCodec" />
    <field name="av:originalFileFormat" />
    <field name="av:originalOrientation" />
    <field name="av:registeredDateTime" />
    <field name="av:sourceMedium" />
    <field name="dc:contributer" />
    <field name="dc:creator" />
    <field name="dc:date" />
    <field name="dc:description" />
    <field name="dc:language" />
    <field name="dc:publisher" />
    <field name="dc:relation" />
    <field name="dc:rights" />
    <field name="dc:title" />
    <field name="param" kind="param" param_type="integer">[@id]</field>
    <field name="serverID" kind="internal">[t_object.serverID]</field>
    <field name="upnp:actor" />
    <field name="upnp:actor@role" />
    <field name="upnp:album" />
    <field name="upnp:artist" />
    <field name="upnp:artist@role" />
    <field name="upnp:artistDiscographyURI" />
    <field name="upnp:author" />
    <field name="upnp:author@role" />
    <field name="upnp:class" />
    <field name="upnp:class@name" />
    <field name="upnp:director" />
    <field name="upnp:genre" />
    <field name="upnp:icon" />
    <field name="upnp:longDescription" />
    <field name="upnp:producer" />
    <field name="upnp:rating" />
    <field name="upnp:region" />
    <field name="upnp:userAnnotation" />
  </fields>
  <fields in="t_res">
    <field name="res" />
    <field name="res@av:allowedOperation" />
    <field name="res@av:orientation" />
    <field name="res@av:pixelAspectRatio" />
    <field name="res@av:transformed" />
    <field name="res@colorDepth" />
    <field name="res@protection" />
    <field name="res@protocolInfo" />
    <field name="res@resolution" />
    <field name="res@size" />
  </fields>
  <fields in="t_server">
    <field name="av:orgAlive" />
    <field name="av:orgMacAddress" />
    <field name="av:orgServerName" />
    <field name="av:orgUuid" />
  </fields>

  <from>t_object inner join t_server on t_object.[serverID] = t_server.[serverID]</from>
  <conds>
    <cond>[classID] = 200</cond>
  </conds>
  <order>[dc:date]</order>
</item>

</objects>
