Example #1
0
        public async Task <bool> SendPlayItemCommandAsync(DacpItem item, PlayQueueMode mode = PlayQueueMode.Replace)
        {
            DacpRequest request;

            if (Client.ServerSupportsPlayQueue)
            {
                request = Database.GetPlayQueueEditRequest("add", DacpQueryPredicate.Is("dmap.itemid", item.ID), mode, "name");
                request.QueryParameters["queuefilter"] = string.Format("genre:{0}", Uri.EscapeDataString(DacpUtility.EscapeSingleQuotes(Name)));
            }
            else
            {
                var items = await GetItemsAsync();

                int index = items.FindIndex(i => i.ID == item.ID);
                if (index < 0)
                {
                    return(false);
                }
                request = Database.GetCueSongRequest(DacpQueryCollection.And(GenreQuery, Container.MediaKindQuery), "name", index);
            }

            try { await Client.SendRequestAsync(request).ConfigureAwait(false); }
            catch { return(false); }
            return(true);
        }
Example #2
0
        public async Task <bool> SendPlayItemCommandAsync(DacpItem item, PlayQueueMode mode = PlayQueueMode.Replace)
        {
            DacpRequest request;

            if (Client.ServerSupportsPlayQueue)
            {
                var query = DacpQueryPredicate.Is("dmap.containeritemid", item.ContainerItemID);
                request = Database.GetPlayQueueEditRequest("add", query, mode, "physical");
                request.QueryParameters["queuefilter"] = string.Format("playlist:{0}", ID);
            }
            else
            {
                request = GetPlaySpecRequest();
                request.QueryParameters["container-item-spec"] = DacpQueryPredicate.Is("dmap.containeritemid", "0x" + item.ContainerItemID.ToString("x8")).ToString();
            }

            try { await Client.SendRequestAsync(request).ConfigureAwait(false); }
            catch { return(false); }
            return(true);
        }