/// <summary> /// Baut Cover, Titel und Artist fpr Radio Sender auf. /// </summary> /// <param name="si"></param> /// <param name="pl"></param> /// <returns></returns> private static SonosItem GetStreamRadioStuff(SonosItem si, SonosPlayer pl) { try { try { if (si.Title.StartsWith(xsonosapi) || si.Title == "Playlist" || !CheckRadioTitle(si.Title)) { si.Title = String.Empty; } if (CheckRadioTitle(si.StreamContent)) { si.Title = si.StreamContent; } si.StreamContent = radio; } catch (Exception ex) { pl.ServerErrorsAdd("SonosItemHelper:GetStreamRadioStuff:Block1 ", ex); } List <string> k = new List <string>(); try { k = pl.GetMediaInfoURIMeta(); if (k.Count != 0) { si.AlbumArtURI = "/getaa?s=1&u=" + k[0]; } } catch (Exception ex) { pl.ServerErrorsAdd("SonosItemHelper:GetStreamRadioStuff:Block2:CoverArt ", ex); } try { if (k.Count > 0 && k.ElementAtOrDefault(2) != null && !string.IsNullOrEmpty(k[2])) { SonosItem streaminfo = SonosItem.ParseSingleItem(pl.GetAktSongInfo().TrackMetaData); var x = SonosItem.ParseSingleItem(k[2]); si.Artist = x.Title; if (CheckRadioTitle(streaminfo.StreamContent)) { si.Title = streaminfo.StreamContent.Contains("|") ? streaminfo.StreamContent.Split('|')[0] : streaminfo.StreamContent; } } } catch (Exception ex) { pl.ServerErrorsAdd("SonosItemHelper:GetStreamRadioStuff:Block3:Anzahl K:" + k.Count, ex); } } catch (Exception ex) { pl.ServerErrorsAdd("SonosItemHelper:GetStreamRadioStuff ", ex); } return(si); }
/// <summary> /// Prüft ob ein Item ein Streaming Item (Stream, Dienst wie Amazon) ist /// </summary> /// <param name="si">Zu bearbeitendes SonosItems</param> /// <param name="pl">Player um Prüfungen vorzunehmen.</param> /// <returns>Bearbeitetes SonosItem</returns> public static SonosItem CheckItemForStreaming(SonosItem si, SonosPlayer pl) { if (pl == null) { return(si); } try { if (CheckItemForStreamingUriCheck(si.Uri)) { si.Stream = true; if (si.Uri.StartsWith("x-rincon-stream:RINCON")) { //Eingang eines Players si.StreamContent = audio; } else { if (si.StreamContent == audio) { si.StreamContent = String.Empty; } } if (si.Uri.StartsWith(xsonosapistream) || si.Uri.StartsWith(xsonosapiradio) || si.Uri.StartsWith("aac:") || si.Uri.StartsWith("x-rincon-mp3radio")) { //Radio si = GetStreamRadioStuff(si, pl); } if (si.Uri.StartsWith("x-sonos-http:") || si.Uri.StartsWith(xsonosapihlsstatic)) { //HTTP Dienst wie Amazon si.StreamContent = service; //test var minfo = pl.GetMediaInfoURIMeta(); if (minfo[0].StartsWith(xsonosapiradio)) { si.ClassType = "object.item.audioItem.audioBroadcast"; } } if (si.Uri.StartsWith("x-sonosprog-http:song") || si.Uri.StartsWith("x-sonos-http:song")) { //HTTP Dienst Apple //prüfen ob Apple Radio List <string> k = pl.GetMediaInfoURIMeta(); if (k != null && k.Count > 1 && k[0].StartsWith(xsonosapiradio)) { si.StreamContent = radio; } else { si.StreamContent = "Apple"; } } } else { if (si.StreamContent == audio) { si.StreamContent = String.Empty; si.Stream = false; } } } catch (Exception ex) { pl.ServerErrorsAdd("SonosItemHelper:CheckItemForStreaming ", ex); } return(si); }
public string Dash5(string id) { const string rsh = "x-sonosapi-stream:s18353?sid=254&flags=8224&sn=0"; try { SonosPlayer primaryplayer = SonosHelper.GetPlayer(primaryPlayerName); SonosPlayer secondaryplayer = SonosHelper.GetPlayer(SonosConstants.KücheName); ushort secondaryPlayerVolume = SonosConstants.KücheVolume; SonosPlayer thirdplayer = SonosHelper.GetPlayer(SonosConstants.EsszimmerName); ushort thirdPlayerVolume = SonosConstants.EsszimmerVolume; var aktUri = primaryplayer.GetMediaInfoURIMeta()[0]; //scheint schon dash5 gedrückt worden zu sein. if (aktUri == rsh) { if (primaryplayer.CurrentState.TransportState == PlayerStatus.PLAYING) { //ausschalten primaryplayer.SetPause(); //Daten vom Marantz ermitteln if (Marantz.Initialisieren(SonosConstants.MarantzUrl)) { if (Marantz.SelectedInput == MarantzInputs.Sonos && Marantz.PowerOn) { Marantz.PowerOn = false; } } return(retValok + " RSH ausgeschaltet."); } //Daten vom Marantz ermitteln if (Marantz.Initialisieren(SonosConstants.MarantzUrl)) { if (Marantz.SelectedInput != MarantzInputs.Sonos || !Marantz.PowerOn) { if (Marantz.PowerOn) { Marantz.SelectedInput = MarantzInputs.Sonos; } else { Marantz.PowerOn = true; } if (Marantz.SelectedInput != MarantzInputs.Sonos) { Marantz.SelectedInput = MarantzInputs.Sonos; } } } primaryplayer.SetPlay(); return(retValok + " RSH eingeschaltet."); } try { //ab hier alles neu var primaryZone = SonosHelper.GetZone(primaryPlayerName); if (primaryZone != null && primaryZone.Players.Count == 2 && primaryZone.Players.Contains(thirdplayer) && primaryZone.Players.Contains(secondaryplayer)) { } else { if (primaryZone == null) { primaryplayer.BecomeCoordinatorofStandaloneGroup(); Thread.Sleep(200); secondaryplayer.SetAVTransportURI(SonosConstants.xrincon + primaryplayer.UUID); Thread.Sleep(300); thirdplayer.SetAVTransportURI(SonosConstants.xrincon + primaryplayer.UUID); Thread.Sleep(300); if (secondaryplayer.GetVolume() != secondaryPlayerVolume) { secondaryplayer.SetVolume(secondaryPlayerVolume); } if (thirdplayer.GetVolume() != thirdPlayerVolume) { thirdplayer.SetVolume(thirdPlayerVolume); } } else { if (!primaryZone.Players.Contains(secondaryplayer)) { secondaryplayer.SetAVTransportURI(SonosConstants.xrincon + primaryplayer.UUID); Thread.Sleep(300); if (secondaryplayer.GetVolume() != secondaryPlayerVolume) { secondaryplayer.SetVolume(secondaryPlayerVolume); } } if (!primaryZone.Players.Contains(thirdplayer)) { thirdplayer.SetAVTransportURI(SonosConstants.xrincon + primaryplayer.UUID); Thread.Sleep(300); if (thirdplayer.GetVolume() != thirdPlayerVolume) { thirdplayer.SetVolume(thirdPlayerVolume); } } } } } catch (Exception ex) { return("Dash5:Block1:" + ex.Message); } try { //Daten vom Marantz ermitteln if (Marantz.Initialisieren(SonosConstants.MarantzUrl)) { if (Marantz.SelectedInput != MarantzInputs.Sonos || !Marantz.PowerOn) { if (Marantz.PowerOn) { Marantz.SelectedInput = MarantzInputs.Sonos; } else { Marantz.PowerOn = true; } if (Marantz.SelectedInput != MarantzInputs.Sonos) { Marantz.SelectedInput = MarantzInputs.Sonos; } } } } catch (Exception ex) { return("Dash5:Block2:" + ex.Message); } if (primaryplayer.GetVolume() != primaryplayerVolume) { primaryplayer.SetVolume(primaryplayerVolume); } if (aktUri != rsh) { primaryplayer.SetAVTransportURI(rsh, "<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"F00092020s18353\" parentID=\"F00082064y1%3apopular\" restricted=\"true\"><dc:title>R.SH</dc:title><upnp:class>object.item.audioItem.audioBroadcast</upnp:class><desc id=\"cdudn\" nameSpace=\"urn:schemas-rinconnetworks-com:metadata-1-0/\">SA_RINCON65031_</desc></item></DIDL-Lite>"); Thread.Sleep(300); } primaryplayer.SetPlay(); return(retValok + " eingeschaltet und RSH gestartet"); } catch (Exception ex) { return(ex.Message); } }