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); }
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); }