setPlayURLXml static method

String setPlayURLXml(
  1. String url, {
  2. String title = "",
  3. required PlayType type,
})

Implementation

static String setPlayURLXml(String url,
    {String title = "", required PlayType type}) {
  final douyu = RegExp(r'^https?://(\d+)\?douyu$');
  final isdouyu = douyu.firstMatch(url);
  if (isdouyu != null) {
    final roomId = isdouyu.group(1);
    // 斗鱼tv的dlna server,只能指定直播间ID,不接受url资源,必须是如下格式
    title = "roomId = $roomId, line = 0";
  } else if (title.isEmpty) {
    title = url;
  }
  var meta = '';
  if (type == PlayType.Video) {
    meta =
        '''<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sec="http://www.sec.co.kr/"><item id="false" parentID="1" restricted="0"><dc:title>$title</dc:title><dc:creator>unkown</dc:creator><upnp:class>object.item.videoItem</upnp:class><res resolution="4"></res></item></DIDL-Lite>''';
  } else if (type == PlayType.Image) {
    meta =
        '''<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sec="http://www.sec.co.kr/"><item id="false" parentID="1" restricted="0"><dc:title>$title</dc:title><dc:creator>unkown</dc:creator><upnp:class>object.item.imageItem</upnp:class><res resolution="4"></res></item></DIDL-Lite>''';
  } else if (type == PlayType.Audio) {
    meta =
        '''<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sec="http://www.sec.co.kr/"><item id="false" parentID="1" restricted="0"><dc:title>$title</dc:title><dc:creator>unkown</dc:creator><upnp:class>object.item.audioItem.musicTrack</upnp:class><res resolution="4"></res></item></DIDL-Lite>''';
  }

  meta = htmlEncode(meta);
  url = htmlEncode(url);
  return '''<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
      <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
          <InstanceID>0</InstanceID>
          <CurrentURI>$url</CurrentURI>
          <CurrentURIMetaData>$meta</CurrentURIMetaData>
      </u:SetAVTransportURI>
  </s:Body>
</s:Envelope>
      ''';
}