/// <summary> /// Läd die übergebene Playlist /// </summary> /// <param name="pl"></param> /// <param name="sp"></param> /// <returns></returns> public static Boolean LoadPlaylist(SonosItem pl, SonosPlayer sp) { //laden der übergebenen Playlist StringBuilder stringb = new StringBuilder(); try { stringb.AppendLine(sp.Name); //stringb.AppendLine("Suchen nach Playlist" + pl); // var playlists = GetAllPlaylist(); //var playlist = playlists.FirstOrDefault(x => x.Title.ToLower() == pl.ToLower()); //if(playlist == null) throw new NullReferenceException("Playlist nicht gefunden"); //stringb.AppendLine("Playlist gefunden" + playlist.Title); stringb.AppendLine("Löschen aller Tracks von " + sp.Name); sp.RemoveAllTracksFromQueue(); Thread.Sleep(300); sp.Enqueue(pl, true); Thread.Sleep(200); stringb.AppendLine("Playlist wurde ersetzt."); sp.SetAVTransportURI(SonosConstants.xrinconqueue + sp.UUID + "#0"); Thread.Sleep(500); return(true); } catch { SonosHelper.TraceLog("Loadplaylist.log", stringb.ToString()); return(false); } }
public void FillPlaylist(SonosPlayer pl) { IList <PlaylistItem> list = new List <PlaylistItem>(); try { var xml = pl.GetPlaylistWithTotalNumbers(NumberReturned, 0); if (xml[0] == null || xml[0].Length == 0) { xml = pl.GetPlaylistWithTotalNumbers(NumberReturned, 0, 500); } if (xml[0] == null || xml[0].Length == 0) { SonosHelper.ServerErrorsAdd("Playlist:FillPlaylist:Block1", new Exception("Zurückgelieferte Liste Leer")); } if (xml[1] != null) { TotalMatches = Convert.ToInt16(xml[1]); list = ParseSonosXML(xml[0]); } } catch (Exception ex) { SonosHelper.ServerErrorsAdd("Playlist:FillPlaylist:Block1", ex); } //Eintrag in der Liste vorhanden if (TotalMatches == 0 && list.Count == 0) { PlayListItems.Add(new PlaylistItem() { Album = "Leer", Artist = "Leer", Title = "Leer" }); return; } try { if (list.Count > 0) { PlayListItems.AddRange(list); NumberReturned = Convert.ToUInt16(PlayListItems.Count); } if (PlayListItems.Count < TotalMatches) { FillPlaylist(pl); } } catch (Exception ex) { SonosHelper.ServerErrorsAdd("Playlist:FillPlaylist:Block2", ex); } }
/// <summary> /// Schreibt die Informationen nieder /// </summary> private static void WriteData() { try { if (File.Exists(_savepath)) { File.Delete(_savepath); } Directory.CreateDirectory(_savepath); StreamWriter textWriter = new StreamWriter(_savepathfile); _xmls.Serialize(textWriter, RatedListItems); textWriter.Close(); textWriter.Dispose(); } catch (Exception ex) { SonosHelper.TraceLog("SonosStreamRating", "Writedata:Exception:" + ex.Message); } }
/// <summary> /// Prüft ob das Ziel Konstrukt schon vorhanden ist. /// </summary> /// <param name="primaray"></param> /// <param name="listOfPlayers"></param> /// <returns></returns> public static Boolean IsSonosTargetGroupExist(SonosPlayer primaray, List <SonosPlayer> listOfPlayers) { SonosZone sz = SonosHelper.GetZone(primaray.Name); if (sz == null || sz.Players.Count != listOfPlayers.Count || sz.Players.Count == 0 || listOfPlayers.Count == 0) { return(false); } foreach (SonosPlayer sonosPlayer in sz.Players) { if (!listOfPlayers.Contains(sonosPlayer)) { return(false); } } return(true); }
/// <summary> /// Prüft die übergebene Playlist mit dem Übergeben Player ob neu geladen werden muss. /// </summary> /// <param name="pl">Playliste, die geladen werden soll.</param> /// <param name="sp">Coordinator aus der Führenden Zone</param> /// <returns>True muss neu geladen werden</returns> public static Boolean CheckPlaylist(string pl, SonosPlayer sp) { try { Boolean retval = false; var evtlStream = sp.GetAktSongInfo(); if (SonosItemHelper.CheckItemForStreamingUriCheck(evtlStream.TrackURI)) { return(true); } var actpl = sp.GetPlaylist(0, 10); if (actpl.Count == 0) { return(true); } var toLoadpl = sp.BrowsingWithLimitResults(pl, 10); if (toLoadpl.Count == 0) { return(true); //eigentlich ein Fehler } for (int i = 0; i < actpl.Count; i++) { if (actpl[i].Title == toLoadpl[i].Title) { continue; } retval = true; break; } return(retval); } catch (Exception ex) { SonosHelper.ServerErrorsAdd("Dash2:CheckPlaylist", ex); return(true); } }