mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-15 04:20:56 +00:00
SONOS: New feature at LoadSearchList, LoadFavourite introduced
git-svn-id: https://svn.fhem.de/fhem/trunk@10131 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
a61bd90324
commit
52e9ffc897
@ -49,6 +49,11 @@
|
||||
# Cover von Amazon funktionieren nicht
|
||||
#
|
||||
# SVN-History:
|
||||
# 08.12.2015
|
||||
# Bei der Erkennung von Streams beim Restore von PlayURITemp wurde ein neues Format nicht berücksichtigt.
|
||||
# Bei der Verwendung von "set Sonos Groups Reset" tauchte eine Fehlermeldung wegen eines Leerstrings auf.
|
||||
# Es wurde ein neuer Setter "LoadFavourite" eingebaut, der einem StartFavourite mit der Angabe von NoStart entspricht.
|
||||
# Man kann bei LoadSearchList nun auch an das Ende der aktuellen Abspielliste anhängen lassen. Dazu muss man an den Parameter maxElem ein "+" anhängen.
|
||||
# 07.12.2015
|
||||
# Zwei neue Setter "DialogLevel" und "NightMode", die an einer PlayBar ausgeführt werden können.
|
||||
# "Set Sonos Groups" hat eine neue Option "Reset", mit der alle Gruppen in einem Rutsch aufgelöst werden können.
|
||||
@ -72,12 +77,6 @@
|
||||
# 12.07.2015
|
||||
# Es gibt zwei neue Setter "GroupVolumeU" und "GroupVolumeD", um die Gruppenlautstärke um 'VolumeStep'-Einheiten zu erhöhen oder zu verringern.
|
||||
# Innerhalb des SubProzesses wurden die Devicenamen der bereits in Fhem definierten Player nicht korrekt verwendet. Das machte sich erst mit dem neuen Feature Bookmarks bemerkbar.
|
||||
# 14.06.2015
|
||||
# Zwei weitere Ausnahmen für das Neustarten des SubThreads eingefügt.
|
||||
# ControlPoint.pm: Beim Renew von Subscription wurde aus dem "carp" ein "croak" gemacht. Dadurch greifen die darüberliegenden Auffangmassnahmen.
|
||||
# Neues Feature: Bookmarks für Playlisten und Titel
|
||||
# Changelog in der Quelltextdatei enthält nur noch für die letzten vier Veröffentlichungen. Die komplette Liste ist nur noch im Wiki vorhanden. Dadurch wird die Dateigröße geringer.
|
||||
# SetEQ eingebaut, um Subwoofer und Surroundeinstellungen vornehmen zu können: "SurroundEnable", "SurroundLevel", "SubEnable", "SubGain" und "AudioDelay"
|
||||
#
|
||||
########################################################################################
|
||||
#
|
||||
@ -1910,6 +1909,8 @@ sub SONOS_Set($@) {
|
||||
|
||||
# Alle Player als Standalone-Group festlegen
|
||||
for(my $i = 0; $i <= $#list; $i++) {
|
||||
next if (!$list[$i]); # Wenn hier ein Leerstring aus dem Split kam, dann überspringen...
|
||||
|
||||
my $elemHash = SONOS_getDeviceDefHash($list[$i]);
|
||||
|
||||
SONOS_DoWork($elemHash->{UDN}, 'makeStandaloneGroup');
|
||||
@ -2833,7 +2834,7 @@ sub SONOS_Discover() {
|
||||
}
|
||||
|
||||
# Nicht alle übernehmen?
|
||||
if ($maxElems =~ m/^\*{0,1}(\d+)-{0,1}$/) {
|
||||
if ($maxElems =~ m/^\*{0,1}(\d+)[\+-]{0,1}$/) {
|
||||
splice(@matches, $1) if ($1 && ($1 <= $#matches));
|
||||
SONOS_Log $udn, 4, 'getSearchlist maxElems('.$maxElems.'): '.$1;
|
||||
}
|
||||
@ -2847,7 +2848,13 @@ sub SONOS_Discover() {
|
||||
$answer .= 'Queue successfully emptied. ';
|
||||
}
|
||||
|
||||
my $currentInsertPos = $SONOS_AVTransportControlProxy{$udn}->GetPositionInfo(0)->getValue('Track') + 1;
|
||||
# An das Ende der Playlist oder hinter dem aktuellen Titel einfügen?
|
||||
my $currentInsertPos = 0;
|
||||
if ($maxElems =~ m/\+$/) {
|
||||
$currentInsertPos = $SONOS_AVTransportControlProxy{$udn}->GetMediaInfo(0)->getValue('NrTracks') + 1;
|
||||
} else {
|
||||
$currentInsertPos = $SONOS_AVTransportControlProxy{$udn}->GetPositionInfo(0)->getValue('Track') + 1;
|
||||
}
|
||||
|
||||
# Die Matches in die Playlist laden...
|
||||
my $sliceSize = 16;
|
||||
@ -4291,7 +4298,7 @@ sub SONOS_RestoreOldPlaystate() {
|
||||
SONOS_Log $udn, 3, 'Restoring playerstate...';
|
||||
SONOS_Log $udn, 5, 'StoredURI: "'.$old{CurrentURI}.'"';
|
||||
# Die Liste als aktuelles Abspielstück einstellen, oder den Stream wieder anwerfen
|
||||
if ($old{CurrentURI} =~ /^x-.*?-.*?stream/) {
|
||||
if ($old{CurrentURI} =~ /^x-.*?-(.*?stream|mp3radio)/) {
|
||||
SONOS_Log $udn, 5, 'Restore Stream...';
|
||||
|
||||
$AVProxy->SetAVTransportURI(0, $old{CurrentURI}, $old{CurrentURIMetaData});
|
||||
@ -5173,7 +5180,7 @@ sub SONOS_Discover_Callback($$$) {
|
||||
|
||||
$result = $SONOS_AVTransportControlProxy{$udn}->GetMediaInfo(0);
|
||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'numberOfTracks', $result->getValue('NrTracks'));
|
||||
my $stream = ($result->getValue('CurrentURI') =~ m/^x-(sonosapi|rincon)-stream:.*?/);
|
||||
my $stream = ($result->getValue('CurrentURI') =~ m/^x-(sonosapi|rincon)-(stream|mp3radio):.*?/);
|
||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'currentStreamAudio', $stream);
|
||||
SONOS_Client_Data_Refresh('ReadingsBulkUpdateIfChanged', $udn, 'currentNormalAudio', !$stream);
|
||||
};
|
||||
@ -5893,7 +5900,7 @@ sub SONOS_ServiceCallback($$) {
|
||||
SONOS_Client_Notifier('ProcessCover:'.$udn.':0:'.$tempURI.':'.$groundURL);
|
||||
|
||||
# Auch hier den XML-Parser verhindern, und alles per regulärem Ausdruck ermitteln...
|
||||
if ($currentTrackMetaData =~ m/<dc:title>x-(sonosapi|rincon)-stream:.*?<\/dc:title>/) {
|
||||
if ($currentTrackMetaData =~ m/<dc:title>x-(sonosapi|rincon)-(stream|mp3radio):.*?<\/dc:title>/) {
|
||||
# Wenn es ein Stream ist, dann muss da was anderes erkannt werden
|
||||
SONOS_Log $udn, 4, "Transport-Event: Stream erkannt!";
|
||||
SONOS_Client_Notifier('SetCurrent:StreamAudio:1');
|
||||
|
@ -87,6 +87,7 @@ my %sets = (
|
||||
'DeletePlaylist' => 'playlistname',
|
||||
'CurrentPlaylist' => '',
|
||||
'EmptyPlaylist' => '',
|
||||
'LoadFavourite' => 'favouritename',
|
||||
'StartFavourite' => 'favouritename [NoStart]',
|
||||
'LoadRadio' => 'radioname',
|
||||
'StartRadio' => 'radioname',
|
||||
@ -624,6 +625,11 @@ sub SONOSPLAYER_Set($@) {
|
||||
|
||||
SONOS_DoWork($udn, 'loadRadio', $value);
|
||||
SONOS_DoWork($udn, 'play');
|
||||
} elsif (lc($key) eq 'loadfavourite') {
|
||||
$hash = SONOSPLAYER_GetRealTargetPlayerHash($hash);
|
||||
$udn = $hash->{UDN};
|
||||
|
||||
SONOS_DoWork($udn, 'startFavourite', $value, 'NoStart');
|
||||
} elsif (lc($key) eq 'startfavourite') {
|
||||
$hash = SONOSPLAYER_GetRealTargetPlayerHash($hash);
|
||||
$udn = $hash->{UDN};
|
||||
@ -1239,6 +1245,9 @@ sub SONOSPLAYER_Log($$$) {
|
||||
<li><a name="SONOSPLAYER_setter_EmptyPlaylist">
|
||||
<b><code>EmptyPlaylist</code></b></a>
|
||||
<br /> Clears the current queue</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadFavourite">
|
||||
<b><code>LoadFavourite <Favouritename></code></b></a>
|
||||
<br /> Loads the named sonos-favorite. The parameter should be URL-encoded for proper naming of lists with special characters.<br />Additionally it's possible to use a regular expression as the name. The first hit will be used. The format is e.g. <code>/meine.hits/</code>.</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadPlaylist">
|
||||
<b><code>LoadPlaylist <Playlistname|Fhem-Devicename> [EmptyQueueBeforeImport]</code></b></a>
|
||||
<br /> Loads the named playlist to the current playing queue. The parameter should be URL-encoded for proper naming of lists with special characters. The Playlistnamen can be an Fhem-Devicename, then the current playlist of this referenced player will be copied. The Playlistname can also be a filename and then must be startet with 'file:' (e.g. 'file:c:/Test.m3u')<br />If EmptyQueueBeforeImport is given and set to 1, the queue will be emptied before the import process. If not given, the parameter will be interpreted as 1.<br />Additionally it's possible to use a regular expression as the name. The first hit will be used. The format is e.g. <code>/hits.2014/</code>.</li>
|
||||
@ -1246,7 +1255,7 @@ sub SONOSPLAYER_Log($$$) {
|
||||
<b><code>LoadRadio <Radiostationname></code></b></a>
|
||||
<br /> Loads the named radiostation (favorite). The current queue will not be touched but deactivated. The parameter should be URL-encoded for proper naming of lists with special characters.<br />Additionally it's possible to use a regular expression as the name. The first hit will be used. The format is e.g. <code>/radio/</code>.</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadSearchlist">
|
||||
<b><code>LoadSearchlist <Categoryname> <CategoryElement> [[TitlefilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [maxElem]]</code></b></a>
|
||||
<b><code>LoadSearchlist <Categoryname> <CategoryElement> [[TitlefilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [[*]maxElem[+|-]]]</code></b></a>
|
||||
<br /> Loads titles from the Sonos-Bibliothek into the current playlist according to the given category and filtervalues. Please consult the (german) Wiki for detailed informations.</li>
|
||||
<li><a name="SONOSPLAYER_setter_SavePlaylist">
|
||||
<b><code>SavePlaylist <Playlistname></code></b></a>
|
||||
@ -1586,6 +1595,9 @@ Here an event is defined, where in time of 2 seconds the Mute-Button has to be p
|
||||
<li><a name="SONOSPLAYER_setter_EmptyPlaylist">
|
||||
<b><code>EmptyPlaylist</code></b></a>
|
||||
<br /> Leert die aktuelle Abspielliste</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadFavourite">
|
||||
<b><code>LoadFavourite <FavouriteName></code></b></a>
|
||||
<br /> Lädt den angegebenen Favoriten. Der Name bezeichnet einen Eintrag in der Sonos-Favoritenliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen.<br />Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. <code>/meine.hits/</code>.</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadPlaylist">
|
||||
<b><code>LoadPlaylist <Playlistname|Fhem-Devicename> [EmptyQueueBeforeImport]</code></b></a>
|
||||
<br /> Lädt die angegebene Playlist in die aktuelle Abspielliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Der Playlistname kann ein Fhem-Sonosplayer-Devicename sein, dann wird dessen aktuelle Abpielliste kopiert. Der Playlistname kann aber auch ein Dateiname sein. Dann muss dieser mit 'file:' beginnen (z.B. 'file:c:/Test.m3u).<br />Wenn der Parameter EmptyQueueBeforeImport mit ''1'' angegeben wirde, wird die aktuelle Abspielliste vor dem Import geleert. Standardmäßig wird hier ''1'' angenommen.<br />Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. <code>/hits.2014/</code>.</li>
|
||||
@ -1593,7 +1605,7 @@ Here an event is defined, where in time of 2 seconds the Mute-Button has to be p
|
||||
<b><code>LoadRadio <Radiostationname></code></b></a>
|
||||
<br /> Startet den angegebenen Radiostream. Der Name bezeichnet einen Sender in der Radiofavoritenliste. Die aktuelle Abspielliste wird nicht verändert. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen.<br />Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. <code>/radio/</code>.</li>
|
||||
<li><a name="SONOSPLAYER_setter_LoadSearchlist">
|
||||
<b><code>LoadSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [maxElem]]</code></b></a>
|
||||
<b><code>LoadSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [[*]maxElem[+|-]]]</code></b></a>
|
||||
<br /> Lädt Titel nach diversen Kriterien in die aktuelle Abspielliste. Nähere Beschreibung bitte im Wiki nachlesen.</li>
|
||||
<li><a name="SONOSPLAYER_setter_SavePlaylist">
|
||||
<b><code>SavePlaylist <Playlistname></code></b></a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user