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 time = DateTime.fromMillisecondsSinceEpoch(
    DateTime.now().millisecondsSinceEpoch,
  );
  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;
  }
  title = htmlEncode(title);
  url = htmlEncode(url);
  var oclass = 'object.item.videoItem';
  var res = '';
  if (type is AudioMime) {
    oclass = 'object.item.audioItem';
  } else if (type is ImageMime) {
    oclass = 'object.item.imageItem';
  }
  if (type.protocolInfo.isNotEmpty) {
    res = '<res protocolInfo="${type.protocolInfo}">$url</res>';
  }
  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>
            <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/">
              <item id="id" parentID="0" restricted="0"><dc:title>$title</dc:title><upnp:artist>unknow</upnp:artist><dc:date>$time</dc:date><upnp:class>$oclass</upnp:class>$res</item>
            </DIDL-Lite>
          </CurrentURIMetaData>
      </u:SetAVTransportURI>
  </s:Body>
</s:Envelope>
      ''';
}