public async Task <ServiceResult <byte[]> > Create(string url, byte[] byteArray = null, string name = "")
        {
            var serviceResult = new ServiceResult <byte[]>();

            #region byteArray
            if (byteArray == null)
            {
                var byteArrayResult = await _downloadService.GetByteArray(url);

                serviceResult.Success = byteArrayResult.Success;
                if (byteArrayResult.Success)
                {
                    byteArray = byteArrayResult.Result;
                }
                else
                {
                    serviceResult.Error = byteArrayResult.Error;
                    return(serviceResult);
                }
            }
            #endregion

            #region name
            if (string.IsNullOrWhiteSpace(name))
            {
                var nameResult = _downloadService.GetFileName(url);
                serviceResult.Success = nameResult.Success;
                if (nameResult.Success)
                {
                    name = nameResult.Result;
                }
                else
                {
                    serviceResult.Error = nameResult.Error;
                    return(serviceResult);
                }
            }
            #endregion

            #region pieces
            var pieceSize = RecommendedPieceSize(byteArray.LongLength);
            var pieces    = CalcPiecesHash(new byte[1][] { byteArray }, pieceSize);
            #endregion

            #region torrent
            var torrent = new Torrent()
            {
                File = new SingleFileInfo()
                {
                    FileName = name,
                    FileSize = byteArray.LongLength,
                    Md5Sum   = GetMD5Hash(byteArray, true)
                },
                Trackers = new List <IList <string> >
                {
                    new List <string>()
                    {
                        "udp://shadowshq.yi.org:6969/announce"
                    },
                    new List <string>()
                    {
                        "udp://tracker.eddie4.nl:6969/announce"
                    },
                    new List <string>()
                    {
                        "udp://tracker.mg64.net:2710/announce"
                    },
                    new List <string>()
                    {
                        "udp://tracker.sktorrent.net:6969"
                    }
                },
                PieceSize         = pieceSize,
                Pieces            = pieces,
                PiecesAsHexString = ToHex(pieces, true),
                CreatedBy         = "MusicStore",
                CreationDate      = DateTime.Now,
                Encoding          = Encoding.UTF8,
                IsPrivate         = false,
                ExtraFields       = new BencodeNET.Objects.BDictionary()
            };

            torrent.ExtraFields.Add("url-list", url);
            #endregion

            serviceResult.Success = true;
            serviceResult.Result  = torrent.EncodeAsBytes();

            return(serviceResult);
        }