- Home
- Deutsch
- Praktische Anwendungen (Showcase)
- [HowTo] Spotify mit 3 Skripten in VIS steuern
[HowTo] Spotify mit 3 Skripten in VIS steuern
-
Vorwort:
Mir ist aufgefallen dass eigentlich viele User Spotify nutzen aber die Handhabung und Steuerung des Adapters per VIS "etwas" kompliziert ist und deshalb auch diese User sich scheuen dies umzusetzen.
So ging es mir bis heute um ca. 5 Uhr in der Frühe auch - und da hab ich mir mal ein Herz gefasst und 3 Blocklys geschrieben um diesen Adapter und die Funktionen welche dahinter stecken zumindest für mich anzupassen und in meiner VIS Spotify effektiv zu steuern.
Der Optik in der VIS sollte man keine Aufmerksamkeit schenken weil diese/meine erstmal nur aufzeigen soll was machbar ist.Legen wir los:
Was brauchen wir ?
Natürlich erstmal ein sauberes System !
Falls dazu Fragen bestehen was das ist und wie Ihr das hinbekommt ist dies hier die falsche Adresse - ist halt meine VorgabeIch habe bei mir - und das wird auch benötigt:
- Debian Bullseye (natürlich aktuell mit allen upgrades)
- Node und NPM Versionen siehe meine Signatur (gibt hierzu keine Erklärungen !)
- Spotify Adapter 1.2.2
- VIS Adapter 1.4.16
- Javascript Adapter 7.0.3
- MaterialDesign Adapter 0.5.9 (wird für VIS benötigt)
- Schnitzel mit Pommes (optional)
- 2-3 Bier (optional - wird aber empfohlen )
- gute Laune und den Willen dies umzusetzen (erforderlich)
EDIT: falls da irgendwelche Adapter nur im "latest" sind und Ihr das nicht wollt - dann bitte ab hier aufhören !!!
Zuerst legen wir mal Verzeichnisse im Objektbaum
0_userdata.0
an:
Den Ordner "Spotify" zuerst.
Unter diesem Ordner legen wir 2 Verzeichnisse an:
"Abfragen" und "Funktionen"Natürlich könnt Ihr Eure Verzeichnisse benennen wie Ihr wolt, aber dann bitte keine Fragen stellen wenn was nicht funktioniert
Weiter gehts:
In den jeweiligen Verzeichnissen legen wir Datenpunkte an - wie folgt:
Die gelb markierten MÜSSEN angelegt werden !
Und zwar als entsprechende Typen:blau = Zeichenkette (string)
rot = JSON
grün = Logikwert (boolean)Ist dies getan dann können wir uns ja schonmal mit den Blocklys im nächsten Beitrag befassen:
EDIT: Skripte und DPs aktualisiert - quasi bitte beachten !
-
Screenshots sind nur Ansatzweise zu werten - deshalb gibt es jeweilig den Code zum Importieren !)
Im ersten Blockly fragen wir mal die Playlisten ab und schreiben die notwendigen Daten in die dafür vorgesehenen Datenpunkte:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="`e/`Y|g1yt[LqDde4cUg">myID</variable> <variable id="$TGe7c|7mWim[0^Ny-*8">playlisten</variable> <variable id="[QeIC8qHOO}iRj@3P(|N">aufzählung</variable> <variable id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</variable> <variable id="qMuUH@n;-29I9Zy:c5R[">i</variable> <variable id="A+R4;J!yy4e`~.6+ePot">playliste</variable> <variable id="}bdAPzw$S|-/d[[-/l,Z">sort</variable> <variable id="ZNIImHZ1MQl]hTTqQ}lA">details</variable> <variable id="GG0W8(KE08)VPNlHI[Pf">playlistname</variable> <variable id="/EUEs^+niuBI+e=^qt[;">objekt</variable> </variables> <block type="procedures_defcustomreturn" id="RR9RFRWFc/U|Eb-mEDPq" x="413" y="-287"> <mutation statements="false"> <arg name="myID" varid="`e/`Y|g1yt[LqDde4cUg"></arg> </mutation> <field name="NAME">owner</field> <field name="SCRIPT">cmV0dXJuIG15SUQucmVwbGFjZSgib3duZXIiLCJpZCIpOyA=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="schedule" id="v)gNpr{TWUHp]Rp?,fRx" x="413" y="-237"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="w7(2wOFE|5;iazx$?Z7o"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> <value name="VALUE"> <block type="lists_create_with" id="uiJM8.UYKR8_U;y?V%NP"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="t14i7X.yb2(.R*9jvPgw"> <field name="VAR" id="[QeIC8qHOO}iRj@3P(|N">aufzählung</field> <value name="VALUE"> <block type="selector" id="C9/ux5=-jtW1Btdde^}X"> <field name="TEXT">spotify-premium.0.playlists.*.owner</field> </block> </value> <next> <block type="controls_forEach" id="KMParn:4JO}?|=6rRZ3/"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="93l(X1e$@Zw2W@SRa-zt"> <field name="VAR" id="[QeIC8qHOO}iRj@3P(|N">aufzählung</field> </block> </value> <statement name="DO"> <block type="variables_set" id="nFUq5t{=rjRzLuv7|_7*"> <field name="VAR" id="ZNIImHZ1MQl]hTTqQ}lA">details</field> <value name="VALUE"> <block type="text_join" id="#G?!I#aw1$e1pw|G1gCy"> <mutation items="3"></mutation> <value name="ADD0"> <block type="get_value_var" id="8]!;mtn.FPvqXs#maqbU"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="iVY`N{H/f2dO@C4Afx@K"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="oY9g#X,AVw.7x^e-S12Q"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="w{$d5zn^.i*,=HPhhnhz"> <field name="TEXT">-</field> </block> </value> <value name="ADD2"> <block type="get_value_var" id="jlp2U?dgV?;$*C*:oIAN"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="=t7W$G`{Ted|g{^//H:N"> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="~G;rOPc:$(#.R7pX4R]C"> <mutation name="owner"> <arg name="myID"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="c8dP!+37I60ar)HJ,7W~"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="GnsPh(wPQ:|fHk[^`GDB"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">FIRST</field> <value name="LIST"> <block type="variables_get" id="YG--O]pa?xj?ghx6D]J~"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> </block> </value> <value name="TO"> <block type="variables_get" id="o$+U#tYe,Jgy7?E/2RD/"> <field name="VAR" id="ZNIImHZ1MQl]hTTqQ}lA">details</field> </block> </value> </block> </next> </block> </statement> <next> <block type="update" id="mBt,,:8+-i+LDbBY_|M["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenString</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tostring" id="0A!bLCVE=_ha#_0.gL]W"> <value name="VALUE"> <block type="variables_get" id="@EHd.08D$*1*n!E+~tWq"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="c9?9Yrk,d9L[h~nN7`hb"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="kDimQ14Dx+/o{VekX+L*"> <field name="oid">0_userdata.0.Spotify.Abfragen.PlaylistenString</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="JQ):y1@NaZ?XpAlHIA,d"> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> <value name="VALUE"> <block type="lists_create_with" id="WyOtpnpIVB`g=OsA}YXN"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="hmgj;!53T_`9:3mm3iWL"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">playliste</field> <value name="VALUE"> <block type="lists_split" id="MglvOaZoo`udzPbSgs-g"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="on_source" id="hHo7ewq_DxyE,g|`@,+A"> <field name="ATTR">state.val</field> </block> </value> <value name="DELIM"> <shadow type="text" id="ec}^V3zQKdCOH5g#M`u9"> <field name="TEXT">,</field> </shadow> </value> </block> </value> <next> <block type="controls_forEach" id="ajZPSo8S{qF=ttM[GXd^"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="]IVi}17qyYUKJ.`tI$QB"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">playliste</field> </block> </value> <statement name="DO"> <block type="variables_set" id="e1LQ~RSotlmf$7aKe|kK"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> <value name="VALUE"> <block type="text_join" id="Zh+$rKf0e)bAv4`ZO_Ll"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="!5E!q8~IZl=lVe:D1e{A"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="iJRgR1_a,1RwRD)V)eQ5"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> <value name="ADD2"> <block type="text" id="Pc/gxiQ/)FablTHX@uI}"> <field name="TEXT">.name</field> </block> </value> </block> </value> <next> <block type="variables_set" id="1n=Ui6Zxw{1L{BnIf:=]"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> <value name="VALUE"> <block type="text_changeCase" id="Vus*D9$BEok35qz$fC:j"> <field name="CASE">UPPERCASE</field> <value name="TEXT"> <shadow type="text" id="RRDka23`)BruPQ:r.*o4"> <field name="TEXT">abc</field> </shadow> <block type="get_value_var" id="(]Wp^Y65HmVHHaYEHsW}"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="x|UlQ#_RiFjEu+,I]b9y"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="cIgV)^8{CWQc0M$bpa1="> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="ctRCBlP?@p!a#y,H7@QO"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> <value name="VALUE"> <block type="text_join" id="4_Ve~kk8N!pfB:}*Fq,m"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="w6~`xjx1m!+}@#ll)$Dy"> <field name="TEXT">{"text":"</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="BhfbH7mGwwQ{AkhnB!Il"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> </block> </value> <value name="ADD2"> <block type="text" id="BNT~cKhc$)L-sab^%C#W"> <field name="TEXT">","value":"</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="tSH=LGTCgKrty7^ODOR+"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> <value name="ADD4"> <block type="text" id="E+,QRlEw5Z_l)LdngzI7"> <field name="TEXT">"}</field> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="-t?`LwYqo*=Y=2nXV8#,"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id=".V^Ym4@]Fhdr?l9+Nq#9"> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> </block> </value> <value name="TO"> <block type="variables_get" id="W[x--|G]LH#5r0`8p?O]"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="update" id="~ZX+.IRW/f7rLWP]fg[}"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="H,aFJ^iP^rS)IF*A8wCH"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="YOZXyHT};meRwyIV%vK|"> <field name="TEXT">[</field> </block> </value> <value name="ADD1"> <block type="convert_tostring" id="KUGB8iC2OgPko%Zegw`N"> <value name="VALUE"> <block type="variables_get" id="Oh$A$:X!.P`rQfq~=]Q."> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="+c?.o6iDZ|Kz6.VapK:s"> <field name="TEXT">]</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="Y9nt~=KFwh++B,GZEC/["> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_1|!z,QoR;MXd/.r[Dtz"> <field name="oid">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="/$wu0snvyjSUP+.-`ev}"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> <value name="VALUE"> <block type="convert_json2object" id="m}Hn/h@KIi9NO.d4U+r."> <value name="VALUE"> <block type="on_source" id="#I4@5[v]pi;H=eCg1IW`"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="lYi:d~xT7!X0xFJl*,#v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_object2json" id="n6zNe:p_z=T;PNhAf9JV"> <field name="PRETTIFY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="CcN./1!@a^}k7uiJN4rA"> <value name="EXPRESSION"> <shadow type="text" id="ck_hXCIkQZU=+#$g^`!G"> <field name="TEXT">*</field> </shadow> <block type="text" id="GG{)CJ)JxbrU)*?WUwY%"> <field name="TEXT">$^(<text)</field> </block> </value> <value name="TARGET"> <block type="variables_get" id="TU`:gvnqE)R/$XKot06w"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
Im zweiten Blockly befassen wir uns nun mit den Titeln welche in der jeweilig ausgewählten Playliste stecken - und schreiben diese ebenso in die vorgesehenen Datenpunkte:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="8s|dJ[s_dcx`U9;jCx.T">offset</variable> <variable id="z=+.f2Q;+VQHzV+nNk#F">titelliste</variable> <variable id="A+R4;J!yy4e`~.6+ePot">titel</variable> <variable id="}bdAPzw$S|-/d[[-/l,Z">sort</variable> <variable id="qMuUH@n;-29I9Zy:c5R[">i</variable> <variable id="Ov{jv*{(3zzipR[=,!_l">filter</variable> <variable id="GG0W8(KE08)VPNlHI[Pf">titelname</variable> <variable id="/EUEs^+niuBI+e=^qt[;">objekt</variable> </variables> <block type="procedures_defnoreturn" id="HmO%OnJKUroFb$3+}%4G" collapsed="true" x="688" y="38"> <field name="NAME">ohne sortierung</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id="!H~L%=m(rKojLx46MZc8"> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> <value name="VALUE"> <block type="math_number" id="DK_CPJeD9-Y{K5m.1zXt"> <field name="NUM">0</field> </block> </value> <next> <block type="variables_set" id="z=M}Ncsz][6t3qnb)c],"> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> <value name="VALUE"> <block type="lists_create_with" id="N9nsz}S:(aK4i2p:#G?$"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="[:@G_6]e%8/-u0]j;E,6"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">titel</field> <value name="VALUE"> <block type="get_value_var" id=",*ssF)5x,Z+.X*^;mx=x"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="|Q|CgQ+I({m9[|bOj+xL"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Y+$PlKIuuY,*r#bsZOB6"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="get_value" id="eQu):@s~]PzgRhxBaA$k"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Funktionen.Playliste_aktiv</field> </block> </value> <value name="ADD2"> <block type="text" id="o#D[Rpoem`=#|[XBz@5Z"> <field name="TEXT">.trackListArray</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_forEach" id="w:iwd%F@Z_4:w7AjB_YK"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="RW|HG?EdE;:}n_{DLGuC"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">titel</field> </block> </value> <statement name="DO"> <block type="variables_set" id="J_w6-jHRM2k5pW{7N]o;"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="get_attr" id="1LElUrU0?a$K8{47hvHb"> <value name="PATH"> <shadow type="text" id="bwZW2b=Bky8IcyfM^rnc"> <field name="TEXT">title</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="|q/Scz`wVFM.lGJ9cBxt"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <next> <block type="controls_if" id="AYVSFhzxXTND[[Q^_gVY"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="$AuKFaUpCB[9p~EwJWS2"> <field name="OP">GT</field> <value name="A"> <block type="text_indexOf" id="Z#ewA@`@T{i}Z-c$vMEt"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="FB],$?nZZ]NLJOw4l}{I"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="FIND"> <shadow type="text" id="yHJNRdFR/#96wEN,%!]("> <field name="TEXT">"</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="uOd-aBAF0p}elUkYsRyO"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="XxZ$m~U]QFbkK+.u`_*i"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="text_getSubstring" id="GT0dD]9CyJer8fdkO[0Z"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="VWP+B5,ZS!-p1y@k{8FP"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="WFT=V,8)0BFt^k3/9ETc"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="Ua(zXE+U5gH}q$-*2ZMs"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id=".|Ylg6M(CBO^pD}EtjuT"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="FIND"> <shadow type="text" id="h=GS-v,YXS[Bk#$7WSH*"> <field name="TEXT">"</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="8qVW=oh/Tb+n#+HUEZxI"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="A7GSL~P45)LU/pDG/r3%"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="variables_get" id="bHPS[zJo=W6d=v]1XHOS"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> </block> </statement> <next> <block type="variables_set" id="U0e1Lwx|CV=@m)%{2INn"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">titelname</field> <value name="VALUE"> <block type="text_changeCase" id="s2PEk6dTsXL?%u;,V#Rl"> <field name="CASE">UPPERCASE</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">abc</field> </shadow> <block type="text_join" id="KzQcCNy56GfE}2*.GA#O"> <mutation items="3"></mutation> <value name="ADD0"> <block type="get_attr" id="=@-B:Qg[._znh=I);l7%"> <value name="PATH"> <shadow type="text" id="agl_o=_q{Pv07|%[08ol"> <field name="TEXT">artistName</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="|xWg$Y]5GA/G$Ue9e*8("> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="DMh7Z.`1aV`Zf1=?X`=Z"> <field name="TEXT"> - </field> </block> </value> <value name="ADD2"> <block type="variables_get" id="KI=sqwzq4;fM48kXgaJ!"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="vrrM!zpA^//)M^(]h}7O"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> <value name="VALUE"> <block type="text_join" id="C`dla5j2h=a^k3oS(5Wk"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="XN3gM`ALJo^zL@-#*3Q}"> <field name="TEXT">{"text":"</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="Z+4|Bg/mro%tXNDi/aIJ"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">titelname</field> </block> </value> <value name="ADD2"> <block type="text" id=")Az{#elDxVR1xi}J$DH]"> <field name="TEXT">","value":"</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="vO:fKFK]d]W{^%g~,pr["> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> </block> </value> <value name="ADD4"> <block type="text" id="Ob6f!KTjT*O$g+?I#-6n"> <field name="TEXT">"}</field> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="|/%2[H=._UA-~?XCDjSF"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id="~Ue)=I5g.o%mMv-DyN3k"> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> </block> </value> <value name="TO"> <block type="variables_get" id="g[B!oVbv`BNFj!R6q!!`"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> </block> </value> <next> <block type="math_change" id="K8pf?O/`ZEw;f70#89)0"> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> <value name="DELTA"> <shadow type="math_number" id="@H.xXi|^RmxP_6FBeG]3"> <field name="NUM">1</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="update" id="O041[4~@Io,,Cs}5wd5F"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.Playlistentitel</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="mpM/)h_O~Co=KHQ+:/ca"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="B(b{H6kk(9YT*)tu4nL@"> <field name="TEXT">[</field> </block> </value> <value name="ADD1"> <block type="convert_tostring" id="t[5l]Rf0%_n30U+Rz;SS"> <value name="VALUE"> <block type="variables_get" id="A|)OVI]q#}$h$Ekl+SG-"> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="FtW,RAj=2Qm#EwwR21r`"> <field name="TEXT">]</field> </block> </value> </block> </value> <next> <block type="update" id="F,.O{M3DU,WEHg}@ND7R"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Funktionen.PlaylistID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value_var" id="~,]16hdkx^Xo]j`DZhZJ"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="n9RPtn!:mD?=_M]xeF%l"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="I7(OWa(ArXLJU3X3zn@k"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="get_value" id="^2FcqH%QsP9I:,z%Yv0["> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Funktionen.Playliste_aktiv</field> </block> </value> <value name="ADD2"> <block type="text" id=".RIhQYRYP.B|HlKcosV9"> <field name="TEXT">.id</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="on_ext" id="c9?9Yrk,d9L[h~nN7`hb" x="488" y="88"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="kDimQ14Dx+/o{VekX+L*"> <field name="oid">0_userdata.0.Spotify.Funktionen.Playliste_aktiv</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="IX$+dqoPP+`vu[lxmz)["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Funktionen.Sortieren</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=":60g{%-g1xm-ya_U2t:-"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="C.*d_+[/^2R(PG,wxcyB"> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> <value name="VALUE"> <block type="math_number" id="tkIuDb)yMcuYoTvBta8x"> <field name="NUM">0</field> </block> </value> <next> <block type="variables_set" id="JQ):y1@NaZ?XpAlHIA,d"> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> <value name="VALUE"> <block type="lists_create_with" id="WyOtpnpIVB`g=OsA}YXN"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="hmgj;!53T_`9:3mm3iWL"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">titel</field> <value name="VALUE"> <block type="get_value_var" id="A?vpk-13OPhe0r(@C*r."> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="hTf(m`zx`9vmZiXvrIk7"> <field name="TEXT"></field> </shadow> <block type="text_join" id="uYW%MQ81kfs?($`qsGkh"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="JW_Y,`Sx#Ctk|{m9*HQx"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="on_source" id="P98Mi.6aAgkyHxZn@0R)"> <field name="ATTR">state.val</field> </block> </value> <value name="ADD2"> <block type="text" id="ml!G:PA/lpw^bK;ZQz{f"> <field name="TEXT">.trackListArray</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_forEach" id="ajZPSo8S{qF=ttM[GXd^"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="]IVi}17qyYUKJ.`tI$QB"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">titel</field> </block> </value> <statement name="DO"> <block type="variables_set" id="n@r+,O4J9Ds.twx(ma)Z"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="get_attr" id="xrYk7`/X(+rT`96;H*u2"> <value name="PATH"> <shadow type="text" id="=S!pMH[pRG]Fw3Fi.?,Y"> <field name="TEXT">title</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Ou8{Or|)_o^A?P`D|PYn"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <next> <block type="controls_if" id="][4mL_h[$3fk|yBz/*:a"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="jBjZmwZQeB@yrOu_wKrE"> <field name="OP">GT</field> <value name="A"> <block type="text_indexOf" id="H00`8jCJPKpHV@}G-k05"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="M).k-$0SnPTat$Ez.=(B"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="FIND"> <shadow type="text" id="sxA8r}up[aW#bEP.BeyL"> <field name="TEXT">"</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id=":_Cu)9onxQkqRB6wr6(8"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="D{/SITVvIG]5I/nuY}h?"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="text_getSubstring" id="}!{h(kb?mXg?rwejugV2"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="ZXporIU{*zr3`.WK`;5a"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="Fj(h(9a2ChL~IfmCvH*b"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="x8cER2gi3i4%F@??6@.l"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="I_,:%ed_o~D|UxNMZjuB"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> <value name="FIND"> <shadow type="text" id="66nj}l.Di[sFdo~MWutm"> <field name="TEXT">"</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="@(e0;X8TaX^rR*J|O7xc"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="Nj__VK5B+,7c9zq./;2y"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> <value name="VALUE"> <block type="variables_get" id="%J/sw[w@`T8Eh*C-KvVw"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> </block> </statement> <next> <block type="variables_set" id="e1LQ~RSotlmf$7aKe|kK"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">titelname</field> <value name="VALUE"> <block type="text_changeCase" id="mfH}G%UsDcSK?Q[!!{D4"> <field name="CASE">UPPERCASE</field> <value name="TEXT"> <shadow type="text" id="3rD}gtjD#((X5kzriS0]"> <field name="TEXT">abc</field> </shadow> <block type="text_join" id="Zh+$rKf0e)bAv4`ZO_Ll"> <mutation items="3"></mutation> <value name="ADD0"> <block type="get_attr" id=",3*#I4ku)mRB;vx@eqK]"> <value name="PATH"> <shadow type="text" id="l2m!#BEQKR=w`Q)BxY:2"> <field name="TEXT">artistName</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="iJRgR1_a,1RwRD)V)eQ5"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="Pc/gxiQ/)FablTHX@uI}"> <field name="TEXT"> - </field> </block> </value> <value name="ADD2"> <block type="variables_get" id="~OQluq[o4xIH8BY8.lb^"> <field name="VAR" id="Ov{jv*{(3zzipR[=,!_l">filter</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="ctRCBlP?@p!a#y,H7@QO"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> <value name="VALUE"> <block type="text_join" id="4_Ve~kk8N!pfB:}*Fq,m"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="w6~`xjx1m!+}@#ll)$Dy"> <field name="TEXT">{"text":"</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="BhfbH7mGwwQ{AkhnB!Il"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">titelname</field> </block> </value> <value name="ADD2"> <block type="text" id="BNT~cKhc$)L-sab^%C#W"> <field name="TEXT">","value":"</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="zZp2ny7HvPL7j6cS%S8w"> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> </block> </value> <value name="ADD4"> <block type="text" id="E+,QRlEw5Z_l)LdngzI7"> <field name="TEXT">"}</field> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="-t?`LwYqo*=Y=2nXV8#,"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id=".V^Ym4@]Fhdr?l9+Nq#9"> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> </block> </value> <value name="TO"> <block type="variables_get" id="W[x--|G]LH#5r0`8p?O]"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> </block> </value> <next> <block type="math_change" id="v8T|U);2|#TEkr}TPIAH"> <field name="VAR" id="8s|dJ[s_dcx`U9;jCx.T">offset</field> <value name="DELTA"> <shadow type="math_number" id="NsHha5JE6f[|X!wk2(qt"> <field name="NUM">1</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="update" id="~ZX+.IRW/f7rLWP]fg[}"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.Playlistentitel</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="H,aFJ^iP^rS)IF*A8wCH"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="YOZXyHT};meRwyIV%vK|"> <field name="TEXT">[</field> </block> </value> <value name="ADD1"> <block type="convert_tostring" id="KUGB8iC2OgPko%Zegw`N"> <value name="VALUE"> <block type="variables_get" id="Oh$A$:X!.P`rQfq~=]Q."> <field name="VAR" id="z=+.f2Q;+VQHzV+nNk#F">titelliste</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="+c?.o6iDZ|Kz6.VapK:s"> <field name="TEXT">]</field> </block> </value> </block> </value> <next> <block type="update" id="]LP5aYn1kfW|D}9cgGl!"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Funktionen.PlaylistID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value_var" id="SqjapFl}pC_XmiOR2-Wy"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="r6,+`D!EZ%w=$$}ff67/"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="FUj|1DGZ{lxw+O@p2N-X"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="on_source" id="!!0_}Bfb9[o:AAjGg/8I"> <field name="ATTR">state.val</field> </block> </value> <value name="ADD2"> <block type="text" id="WZES(y#;)|hbJlBu//nN"> <field name="TEXT">.id</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="Y9nt~=KFwh++B,GZEC/["> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_1|!z,QoR;MXd/.r[Dtz"> <field name="oid">0_userdata.0.Spotify.Funktionen.Sortieren</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="5u~lDcRWwPn8AEPPe_3s"> <mutation else="1"></mutation> <value name="IF0"> <block type="on_source" id="rbX*;gjzSla1]fMUb6ah"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="variables_set" id="/$wu0snvyjSUP+.-`ev}"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> <value name="VALUE"> <block type="convert_json2object" id="m}Hn/h@KIi9NO.d4U+r."> <value name="VALUE"> <block type="get_value" id="@}$7d;_CQN]$o*XY^_%k"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Abfragen.Playlistentitel</field> </block> </value> </block> </value> <next> <block type="update" id="lYi:d~xT7!X0xFJl*,#v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.Playlistentitel</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_object2json" id="n6zNe:p_z=T;PNhAf9JV"> <field name="PRETTIFY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="CcN./1!@a^}k7uiJN4rA"> <value name="EXPRESSION"> <shadow type="text" id="ck_hXCIkQZU=+#$g^`!G"> <field name="TEXT">*</field> </shadow> <block type="text" id="GG{)CJ)JxbrU)*?WUwY%"> <field name="TEXT">$^(<text)</field> </block> </value> <value name="TARGET"> <block type="variables_get" id="TU`:gvnqE)R/$XKot06w"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="procedures_callnoreturn" id="TVUT@CHIe,H0T#0Fb*q6"> <mutation name="ohne sortierung"></mutation> </block> </statement> </block> </statement> </block> </next> </block> </xml>
Das dritte Blockly dient nur zum Abspielen der Playliste ODER des Titels innerhalb der gewählten Playliste:
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="hhPo0/G9D`.48jru!c_Q" x="138" y="138"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="J$3|wD[!vz6j0.%Y~{Yn"> <field name="oid">0_userdata.0.Spotify.Funktionen.Playliste_abspielen</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="u+A?eV=f%?xJMQl6PNx:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">spotify-premium.0.player.playUri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="-b3g}9N{sTm7;rx8*Xo="> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="Xc!ogNyu]LOU@?X-I!|m"> <field name="TEXT">{"device_id":"xxx","context_uri":"spotify:user:</field> </block> </value> <value name="ADD1"> <block type="get_value" id="}lsI[jY0X9Mpk,KYEKcT"> <field name="ATTR">val</field> <field name="OID">spotify-premium.0.authorization.userId</field> </block> </value> <value name="ADD2"> <block type="text" id="U3;U:)WY]Ua,yj6t2TGy"> <field name="TEXT">:playlist:</field> </block> </value> <value name="ADD3"> <block type="get_value" id="82YGfd=Iev!k%}k!pcD-"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Funktionen.PlaylistID</field> </block> </value> <value name="ADD4"> <block type="text" id="5*7,CYr?89}{KoQ`Q(U0"> <field name="TEXT">","offset":{"position":0}}</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="f^X!rwC+KSok:iDz;U_G"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="%|IwCAOP1j1xS|_%t@Bc"> <field name="oid">0_userdata.0.Spotify.Funktionen.Titel_abspielen</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="-{TntM[r~)Glbq)@Lw4("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">spotify-premium.0.player.playUri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="I)TB+6f;F`.sx8ySFDj("> <mutation items="7"></mutation> <value name="ADD0"> <block type="text" id="ZbQ8I#-Rb}2Rw;Q[+jTj"> <field name="TEXT">{"device_id":"xxx","context_uri":"spotify:user:</field> </block> </value> <value name="ADD1"> <block type="get_value" id="g?rNK]bRW*=VYsj0p@Kp"> <field name="ATTR">val</field> <field name="OID">spotify-premium.0.authorization.userId</field> </block> </value> <value name="ADD2"> <block type="text" id=")Sa}df6^.4wAW3Wrxg,b"> <field name="TEXT">:playlist:</field> </block> </value> <value name="ADD3"> <block type="get_value" id="4A{keUCzXbaq#N(jSQ|u"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Funktionen.PlaylistID</field> </block> </value> <value name="ADD4"> <block type="text" id="1%/ch[4T$SxZyz1,I(qT"> <field name="TEXT">","offset":{"position":</field> </block> </value> <value name="ADD5"> <block type="get_value" id="QH?c!9GN-)Ch%y,Kmls/"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Spotify.Funktionen.Titel_aktiv</field> </block> </value> <value name="ADD6"> <block type="text" id="Lf4bjozsZ7!`#X6zy9ZK"> <field name="TEXT">}}</field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </xml>
!!! WICHTIG !!!
Die Blocklys MÜSSEN an Eure eigenen Datenpunkte angepasst werden - und auch dazu kann ich nicht unterstützen !z.B. muss "device_id":"xxx" - also auch das xxx dort mit dem jeweiligen device_id des abzuspielenden Echos ersetzt werden.
HowTo herausfinden ?
Device unter
spotify-premium.0.devices.xxx.id
Weiter gehts mit der VIS
-
Da ich, wie oben erwähnt, dies erstmal nur funktionell sehe und die optischen Geschmäcker verschieden sind, bitte keine Kritik oder gar Verbesserungsvorschläge liefern - bringt mir und Euch nix
Video wie es aussehen KANN:
Sodele. Und jetzt die VIS (als View importieren - MUSS danach zwingend angepasst werden - es gibt hier keinen Support !!!)
{ "settings": { "style": { "background_class": "", "background-color": "black" }, "theme": "redmond", "sizex": "2300", "sizey": "1000", "hideDescription": false, "gridSize": "", "useBackground": false, "snapType": 1 }, "widgets": { "e00001": { "tpl": "tplVis-materialdesign-Select", "data": { "oid": "0_userdata.0.Spotify.Funktionen.Playliste_aktiv", "g_fixed": false, "g_visibility": false, "g_css_font_text": false, "g_css_background": false, "g_css_shadow_padding": false, "g_css_border": false, "g_gestures": false, "g_signals": false, "g_last_change": false, "visibility-cond": "==", "visibility-val": 1, "visibility-groups-action": "hide", "inputType": "text", "vibrateOnMobilDevices": "50", "inputLayout": "solo", "inputAlignment": "left", "inputLayoutBorderColor": "#mdwTheme:vis-materialdesign.0.colors.input.border", "inputLayoutBorderColorHover": "#mdwTheme:vis-materialdesign.0.colors.input.border_hover", "inputLayoutBorderColorSelected": "#mdwTheme:vis-materialdesign.0.colors.input.border_selected", "inputTextFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.text", "inputTextFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.text", "inputTextColor": "white", "inputLabelColor": "#mdwTheme:vis-materialdesign.0.colors.input.label", "inputLabelColorSelected": "#mdwTheme:vis-materialdesign.0.colors.input.label_selected", "inputLabelFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.label", "inputLabelFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.label", "inputAppendixColor": "#mdwTheme:vis-materialdesign.0.colors.input.appendix", "inputAppendixFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix", "inputAppendixFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.appendix", "showInputMessageAlways": "true", "inputMessageFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.message", "inputMessageFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.message", "inputMessageColor": "#mdwTheme:vis-materialdesign.0.colors.input.message", "showInputCounter": false, "inputCounterColor": "#mdwTheme:vis-materialdesign.0.colors.input.counter", "inputCounterFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.counter", "inputCounterFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.counter", "clearIconShow": false, "clearIconColor": "#mdwTheme:vis-materialdesign.0.colors.input.icon_clear", "collapseIconColor": "white", "listDataMethod": "jsonStringObject", "countSelectItems": "1", "listPosition": "bottom", "listItemBackgroundColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.background", "listItemBackgroundHoverColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.hover", "listItemBackgroundSelectedColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.selected", "listItemRippleEffectColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.effect", "showSelectedIcon": "prepend-inner", "listIconColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.icon", "listItemFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text", "listItemFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text", "listItemFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.text", "listItemSubFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText", "listItemSubFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText", "listItemSubFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.subText", "showValue": false, "listItemValueFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value", "listItemValueFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value", "listItemValueFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.value", "signals-cond-0": "==", "signals-val-0": true, "signals-icon-0": "/vis/signals/lowbattery.png", "signals-icon-size-0": 0, "signals-blink-0": false, "signals-horz-0": 0, "signals-vert-0": 0, "signals-hide-edit-0": false, "signals-cond-1": "==", "signals-val-1": true, "signals-icon-1": "/vis/signals/lowbattery.png", "signals-icon-size-1": 0, "signals-blink-1": false, "signals-horz-1": 0, "signals-vert-1": 0, "signals-hide-edit-1": false, "signals-cond-2": "==", "signals-val-2": true, "signals-icon-2": "/vis/signals/lowbattery.png", "signals-icon-size-2": 0, "signals-blink-2": false, "signals-horz-2": 0, "signals-vert-2": 0, "signals-hide-edit-2": false, "lc-type": "last-change", "lc-is-interval": true, "lc-is-moment": false, "lc-format": "", "lc-position-vert": "top", "lc-position-horz": "right", "lc-offset-vert": 0, "lc-offset-horz": 0, "lc-font-size": "12px", "lc-font-family": "", "lc-font-style": "", "lc-bkg-color": "", "lc-color": "", "lc-border-width": "0", "lc-border-style": "", "lc-border-color": "", "lc-border-radius": 10, "lc-zindex": 0, "jsonStringObject": "{0_userdata.0.Spotify.Abfragen.PlaylistenJson}", "valueList": "{0_userdata.0.Spotify.Abfragen.PlaylistenJson}", "valueListLabels": "{0_userdata.0.Spotify.Abfragen.PlaylistenJson}", "inputLabelText": "", "listPositionOffset": true, "inputLayoutBackgroundColor": "#1db954", "inputLayoutBackgroundColorHover": "#1db954", "inputLayoutBackgroundColorSelected": "#1db954", "collapseIcon": "" }, "style": { "left": "647px", "top": "121px", "z-index": "10", "width": "237px", "height": "38px" }, "widgetSet": "materialdesign" }, "e00002": { "tpl": "tplVis-materialdesign-Select", "data": { "oid": "0_userdata.0.Spotify.Funktionen.Titel_aktiv", "g_fixed": false, "g_visibility": false, "g_css_font_text": false, "g_css_background": false, "g_css_shadow_padding": false, "g_css_border": false, "g_gestures": false, "g_signals": false, "g_last_change": false, "visibility-cond": "==", "visibility-val": 1, "visibility-groups-action": "hide", "inputType": "text", "vibrateOnMobilDevices": "50", "inputLayout": "solo", "inputAlignment": "left", "inputLayoutBorderColor": "#mdwTheme:vis-materialdesign.0.colors.input.border", "inputLayoutBorderColorHover": "#mdwTheme:vis-materialdesign.0.colors.input.border_hover", "inputLayoutBorderColorSelected": "#mdwTheme:vis-materialdesign.0.colors.input.border_selected", "inputTextFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.text", "inputTextFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.text", "inputTextColor": "White", "inputLabelColor": "#mdwTheme:vis-materialdesign.0.colors.input.label", "inputLabelColorSelected": "#mdwTheme:vis-materialdesign.0.colors.input.label_selected", "inputLabelFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.label", "inputLabelFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.label", "inputAppendixColor": "#mdwTheme:vis-materialdesign.0.colors.input.appendix", "inputAppendixFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix", "inputAppendixFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.appendix", "showInputMessageAlways": false, "inputMessageFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.message", "inputMessageFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.message", "inputMessageColor": "#mdwTheme:vis-materialdesign.0.colors.input.message", "showInputCounter": false, "inputCounterColor": "#mdwTheme:vis-materialdesign.0.colors.input.counter", "inputCounterFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.counter", "inputCounterFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.input.counter", "clearIconShow": false, "clearIconColor": "#mdwTheme:vis-materialdesign.0.colors.input.icon_clear", "collapseIconColor": "white", "listDataMethod": "jsonStringObject", "countSelectItems": "1", "listPosition": "auto", "listItemBackgroundColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.background", "listItemBackgroundHoverColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.hover", "listItemBackgroundSelectedColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.selected", "listItemRippleEffectColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.effect", "showSelectedIcon": "prepend-inner", "listIconColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.icon", "listItemFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text", "listItemFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text", "listItemFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.text", "listItemSubFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText", "listItemSubFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText", "listItemSubFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.subText", "showValue": false, "listItemValueFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value", "listItemValueFont": "#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value", "listItemValueFontColor": "#mdwTheme:vis-materialdesign.0.colors.input.menu.value", "signals-cond-0": "==", "signals-val-0": true, "signals-icon-0": "/vis/signals/lowbattery.png", "signals-icon-size-0": 0, "signals-blink-0": false, "signals-horz-0": 0, "signals-vert-0": 0, "signals-hide-edit-0": false, "signals-cond-1": "==", "signals-val-1": true, "signals-icon-1": "/vis/signals/lowbattery.png", "signals-icon-size-1": 0, "signals-blink-1": false, "signals-horz-1": 0, "signals-vert-1": 0, "signals-hide-edit-1": false, "signals-cond-2": "==", "signals-val-2": true, "signals-icon-2": "/vis/signals/lowbattery.png", "signals-icon-size-2": 0, "signals-blink-2": false, "signals-horz-2": 0, "signals-vert-2": 0, "signals-hide-edit-2": false, "lc-type": "last-change", "lc-is-interval": true, "lc-is-moment": false, "lc-format": "", "lc-position-vert": "top", "lc-position-horz": "right", "lc-offset-vert": 0, "lc-offset-horz": 0, "lc-font-size": "12px", "lc-font-family": "", "lc-font-style": "", "lc-bkg-color": "", "lc-color": "", "lc-border-width": "0", "lc-border-style": "", "lc-border-color": "", "lc-border-radius": 10, "lc-zindex": 0, "jsonStringObject": "{0_userdata.0.Spotify.Abfragen.Playlistentitel}", "valueList": "{0_userdata.0.Spotify.Abfragen.Playlistentitel}", "valueListLabels": "{0_userdata.0.Spotify.Abfragen.Playlistentitel}", "inputLabelText": "", "label0": "Titel", "listPositionOffset": true, "inputLayoutBackgroundColor": "#1db954", "inputLayoutBackgroundColorHover": "#1db954", "inputLayoutBackgroundColorSelected": "#1db954" }, "style": { "left": "1175px", "top": "119px", "z-index": "10", "width": "491px", "height": "38px" }, "widgetSet": "materialdesign" }, "e00003": { "tpl": "tplVis-materialdesign-Button-State-vertical", "data": { "oid": "0_userdata.0.Spotify.Funktionen.Playliste_abspielen", "g_fixed": false, "g_visibility": false, "g_css_font_text": true, "g_css_background": false, "g_css_shadow_padding": false, "g_css_border": false, "g_gestures": false, "g_signals": false, "g_last_change": false, "buttonStyle": "raised", "vibrateOnMobilDevices": "50", "buttontext": "PLAY", "textFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.button.vertical.text", "textFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.button.vertical.text", "alignment": "center", "mdwButtonPrimaryColor": "#1db954", "mdwButtonSecondaryColor": "#mdwTheme:vis-materialdesign.0.colors.button.default.secondary", "image": "", "iconPosition": "top", "iconHeight": "26", "autoLockAfter": "10", "lockIconTop": "5", "lockIconLeft": "5", "lockIconColor": "#mdwTheme:vis-materialdesign.0.colors.button.lock_icon", "lockFilterGrayscale": "30", "signals-cond-0": "==", "signals-val-0": true, "signals-icon-0": "/vis/signals/lowbattery.png", "signals-icon-size-0": 0, "signals-blink-0": false, "signals-horz-0": 0, "signals-vert-0": 0, "signals-hide-edit-0": false, "signals-cond-1": "==", "signals-val-1": true, "signals-icon-1": "/vis/signals/lowbattery.png", "signals-icon-size-1": 0, "signals-blink-1": false, "signals-horz-1": 0, "signals-vert-1": 0, "signals-hide-edit-1": false, "signals-cond-2": "==", "signals-val-2": true, "signals-icon-2": "/vis/signals/lowbattery.png", "signals-icon-size-2": 0, "signals-blink-2": false, "signals-horz-2": 0, "signals-vert-2": 0, "signals-hide-edit-2": false, "lc-type": "last-change", "lc-is-interval": true, "lc-is-moment": false, "lc-format": "", "lc-position-vert": "top", "lc-position-horz": "right", "lc-offset-vert": 0, "lc-offset-horz": 0, "lc-font-size": "12px", "lc-font-family": "", "lc-font-style": "", "lc-bkg-color": "", "lc-color": "", "lc-border-width": "0", "lc-border-style": "", "lc-border-color": "", "lc-border-radius": 10, "lc-zindex": 0, "value": "true", "lockEnabled": true, "visibility-cond": "==", "visibility-val": 1, "visibility-groups-action": "hide" }, "style": { "left": "891px", "top": "122px", "z-index": "10", "width": "100px", "height": "39px", "color": "" }, "widgetSet": "materialdesign" }, "e00004": { "tpl": "tplVis-materialdesign-Button-State-vertical", "data": { "oid": "0_userdata.0.Spotify.Funktionen.Titel_abspielen", "g_fixed": false, "g_visibility": false, "g_css_font_text": true, "g_css_background": false, "g_css_shadow_padding": false, "g_css_border": false, "g_gestures": false, "g_signals": false, "g_last_change": false, "buttonStyle": "raised", "vibrateOnMobilDevices": "50", "buttontext": "PLAY", "textFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.button.vertical.text", "textFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.button.vertical.text", "alignment": "center", "mdwButtonPrimaryColor": "#1db954", "mdwButtonSecondaryColor": "#mdwTheme:vis-materialdesign.0.colors.button.default.secondary", "image": "", "iconPosition": "top", "iconHeight": "26", "autoLockAfter": "10", "lockIconTop": "5", "lockIconLeft": "5", "lockIconColor": "#mdwTheme:vis-materialdesign.0.colors.button.lock_icon", "lockFilterGrayscale": "30", "signals-cond-0": "==", "signals-val-0": true, "signals-icon-0": "/vis/signals/lowbattery.png", "signals-icon-size-0": 0, "signals-blink-0": false, "signals-horz-0": 0, "signals-vert-0": 0, "signals-hide-edit-0": false, "signals-cond-1": "==", "signals-val-1": true, "signals-icon-1": "/vis/signals/lowbattery.png", "signals-icon-size-1": 0, "signals-blink-1": false, "signals-horz-1": 0, "signals-vert-1": 0, "signals-hide-edit-1": false, "signals-cond-2": "==", "signals-val-2": true, "signals-icon-2": "/vis/signals/lowbattery.png", "signals-icon-size-2": 0, "signals-blink-2": false, "signals-horz-2": 0, "signals-vert-2": 0, "signals-hide-edit-2": false, "lc-type": "last-change", "lc-is-interval": true, "lc-is-moment": false, "lc-format": "", "lc-position-vert": "top", "lc-position-horz": "right", "lc-offset-vert": 0, "lc-offset-horz": 0, "lc-font-size": "12px", "lc-font-family": "", "lc-font-style": "", "lc-bkg-color": "", "lc-color": "", "lc-border-width": "0", "lc-border-style": "", "lc-border-color": "", "lc-border-radius": 10, "lc-zindex": 0, "value": "true", "lockEnabled": true, "visibility-cond": "==", "visibility-val": 1, "visibility-groups-action": "hide" }, "style": { "left": "1734px", "top": "118px", "z-index": "10", "width": "100px", "height": "39px", "color": "" }, "widgetSet": "materialdesign" }, "e00005": { "tpl": "tplVis-materialdesign-Button-Toggle", "data": { "oid": "0_userdata.0.Spotify.Funktionen.Sortieren", "g_fixed": false, "g_visibility": false, "g_css_font_text": false, "g_css_background": false, "g_css_shadow_padding": false, "g_css_border": false, "g_gestures": false, "g_signals": false, "g_last_change": false, "visibility-cond": "==", "visibility-val": 1, "visibility-groups-action": "hide", "buttonStyle": "raised", "toggleType": "boolean", "stateIfNotTrueValue": "on", "vibrateOnMobilDevices": "50", "buttontext": "sort", "textFontFamily": "#mdwTheme:vis-materialdesign.0.fonts.button.default.text", "textFontSize": "#mdwTheme:vis-materialdesign.0.fontSizes.button.default.text", "mdwButtonPrimaryColor": "#mdwTheme:vis-materialdesign.0.colors.button.default.primary", "mdwButtonSecondaryColor": "#mdwTheme:vis-materialdesign.0.colors.button.default.secondary", "image": "", "iconPosition": "left", "autoLockAfter": "10", "lockIconColor": "#mdwTheme:vis-materialdesign.0.colors.button.lock_icon", "lockFilterGrayscale": "30", "signals-cond-0": "==", "signals-val-0": true, "signals-icon-0": "/vis/signals/lowbattery.png", "signals-icon-size-0": 0, "signals-blink-0": false, "signals-horz-0": 0, "signals-vert-0": 0, "signals-hide-edit-0": false, "signals-cond-1": "==", "signals-val-1": true, "signals-icon-1": "/vis/signals/lowbattery.png", "signals-icon-size-1": 0, "signals-blink-1": false, "signals-horz-1": 0, "signals-vert-1": 0, "signals-hide-edit-1": false, "signals-cond-2": "==", "signals-val-2": true, "signals-icon-2": "/vis/signals/lowbattery.png", "signals-icon-size-2": 0, "signals-blink-2": false, "signals-horz-2": 0, "signals-vert-2": 0, "signals-hide-edit-2": false, "lc-type": "last-change", "lc-is-interval": true, "lc-is-moment": false, "lc-format": "", "lc-position-vert": "top", "lc-position-horz": "right", "lc-offset-vert": 0, "lc-offset-horz": 0, "lc-font-size": "12px", "lc-font-family": "", "lc-font-style": "", "lc-bkg-color": "", "lc-color": "", "lc-border-width": "0", "lc-border-style": "", "lc-border-color": "", "lc-border-radius": 10, "lc-zindex": 0, "valueOff": "false", "valueOn": "true", "labelTrue": "unsort" }, "style": { "left": "1671px", "top": "120px", "z-index": "10", "width": "57px", "height": "37px" }, "widgetSet": "materialdesign" } }, "rerender": false, "filterList": [], "name": "Spotify_test" }
Dann mal viel Spass !
edit: ich bastel grad noch ein viertes Skript um das jeweilige Echo-Device auszuwählen
-
Traumhaft beschrieben und toll umgesetzt. Ich denke, das muss getestet werden.
Hast du eine Empfehlung der Adapterversion zum Bier?
-
@coffeelover sagte in [HowTo] Spotify mit 3 Skripten in VIS steuern:
Empfehlung der Adapterversion zum Bier?
Ach das ist Geschmackssache - ich bevorzuge bei solchen Umständen Edeka 5.0
-
Änderung - bitte beachten:
Die gelb markierten MÜSSEN angelegt werden !
Und zwar als entsprechende Typen:blau = Zeichenkette (string)
rot = JSON
grün = Logikwert (boolean)und Blockly 1:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="`e/`Y|g1yt[LqDde4cUg">myID</variable> <variable id="$TGe7c|7mWim[0^Ny-*8">playlisten</variable> <variable id="[QeIC8qHOO}iRj@3P(|N">aufzählung</variable> <variable id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</variable> <variable id="qMuUH@n;-29I9Zy:c5R[">i</variable> <variable id="A+R4;J!yy4e`~.6+ePot">playliste</variable> <variable id="}bdAPzw$S|-/d[[-/l,Z">sort</variable> <variable id="ZNIImHZ1MQl]hTTqQ}lA">details</variable> <variable id="GG0W8(KE08)VPNlHI[Pf">playlistname</variable> <variable id="/EUEs^+niuBI+e=^qt[;">objekt</variable> </variables> <block type="procedures_defcustomreturn" id="RR9RFRWFc/U|Eb-mEDPq" x="413" y="-287"> <mutation statements="false"> <arg name="myID" varid="`e/`Y|g1yt[LqDde4cUg"></arg> </mutation> <field name="NAME">Volume</field> <field name="SCRIPT">cmV0dXJuIG15SUQucmVwbGFjZSgib3duZXIiLCJpZCIpOyA=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="schedule" id="v)gNpr{TWUHp]Rp?,fRx" x="413" y="-237"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="w7(2wOFE|5;iazx$?Z7o"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> <value name="VALUE"> <block type="lists_create_with" id="uiJM8.UYKR8_U;y?V%NP"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="t14i7X.yb2(.R*9jvPgw"> <field name="VAR" id="[QeIC8qHOO}iRj@3P(|N">aufzählung</field> <value name="VALUE"> <block type="selector" id="C9/ux5=-jtW1Btdde^}X"> <field name="TEXT">spotify-premium.0.playlists.*.owner</field> </block> </value> <next> <block type="controls_forEach" id="KMParn:4JO}?|=6rRZ3/"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="93l(X1e$@Zw2W@SRa-zt"> <field name="VAR" id="[QeIC8qHOO}iRj@3P(|N">aufzählung</field> </block> </value> <statement name="DO"> <block type="variables_set" id="nFUq5t{=rjRzLuv7|_7*"> <field name="VAR" id="ZNIImHZ1MQl]hTTqQ}lA">details</field> <value name="VALUE"> <block type="text_join" id="#G?!I#aw1$e1pw|G1gCy"> <mutation items="3"></mutation> <value name="ADD0"> <block type="get_value_var" id="8]!;mtn.FPvqXs#maqbU"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="iVY`N{H/f2dO@C4Afx@K"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="oY9g#X,AVw.7x^e-S12Q"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="w{$d5zn^.i*,=HPhhnhz"> <field name="TEXT">-</field> </block> </value> <value name="ADD2"> <block type="get_value_var" id="jlp2U?dgV?;$*C*:oIAN"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="=t7W$G`{Ted|g{^//H:N"> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="~G;rOPc:$(#.R7pX4R]C"> <mutation name="Volume"> <arg name="myID"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="c8dP!+37I60ar)HJ,7W~"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="GnsPh(wPQ:|fHk[^`GDB"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">FIRST</field> <value name="LIST"> <block type="variables_get" id="YG--O]pa?xj?ghx6D]J~"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> </block> </value> <value name="TO"> <block type="variables_get" id="o$+U#tYe,Jgy7?E/2RD/"> <field name="VAR" id="ZNIImHZ1MQl]hTTqQ}lA">details</field> </block> </value> </block> </next> </block> </statement> <next> <block type="update" id="mBt,,:8+-i+LDbBY_|M["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenString</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tostring" id="0A!bLCVE=_ha#_0.gL]W"> <value name="VALUE"> <block type="variables_get" id="@EHd.08D$*1*n!E+~tWq"> <field name="VAR" id="$TGe7c|7mWim[0^Ny-*8">playlisten</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="c9?9Yrk,d9L[h~nN7`hb" collapsed="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="kDimQ14Dx+/o{VekX+L*"> <field name="oid">0_userdata.0.Spotify.Abfragen.PlaylistenString</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="JQ):y1@NaZ?XpAlHIA,d"> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> <value name="VALUE"> <block type="lists_create_with" id="WyOtpnpIVB`g=OsA}YXN"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="hmgj;!53T_`9:3mm3iWL"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">playliste</field> <value name="VALUE"> <block type="lists_split" id="MglvOaZoo`udzPbSgs-g"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="on_source" id="hHo7ewq_DxyE,g|`@,+A"> <field name="ATTR">state.val</field> </block> </value> <value name="DELIM"> <shadow type="text" id="ec}^V3zQKdCOH5g#M`u9"> <field name="TEXT">,</field> </shadow> </value> </block> </value> <next> <block type="controls_forEach" id="ajZPSo8S{qF=ttM[GXd^"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> <value name="LIST"> <block type="variables_get" id="]IVi}17qyYUKJ.`tI$QB"> <field name="VAR" id="A+R4;J!yy4e`~.6+ePot">playliste</field> </block> </value> <statement name="DO"> <block type="variables_set" id="e1LQ~RSotlmf$7aKe|kK"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> <value name="VALUE"> <block type="text_join" id="Zh+$rKf0e)bAv4`ZO_Ll"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="!5E!q8~IZl=lVe:D1e{A"> <field name="TEXT">spotify-premium.0.playlists.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="iJRgR1_a,1RwRD)V)eQ5"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> <value name="ADD2"> <block type="text" id="Pc/gxiQ/)FablTHX@uI}"> <field name="TEXT">.name</field> </block> </value> </block> </value> <next> <block type="variables_set" id="1n=Ui6Zxw{1L{BnIf:=]"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> <value name="VALUE"> <block type="text_changeCase" id="Vus*D9$BEok35qz$fC:j"> <field name="CASE">UPPERCASE</field> <value name="TEXT"> <shadow type="text" id="RRDka23`)BruPQ:r.*o4"> <field name="TEXT">abc</field> </shadow> <block type="get_value_var" id="(]Wp^Y65HmVHHaYEHsW}"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="x|UlQ#_RiFjEu+,I]b9y"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="cIgV)^8{CWQc0M$bpa1="> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="ctRCBlP?@p!a#y,H7@QO"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> <value name="VALUE"> <block type="text_join" id="4_Ve~kk8N!pfB:}*Fq,m"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="w6~`xjx1m!+}@#ll)$Dy"> <field name="TEXT">{"text":"</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="BhfbH7mGwwQ{AkhnB!Il"> <field name="VAR" id="GG0W8(KE08)VPNlHI[Pf">playlistname</field> </block> </value> <value name="ADD2"> <block type="text" id="BNT~cKhc$)L-sab^%C#W"> <field name="TEXT">","value":"</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="tSH=LGTCgKrty7^ODOR+"> <field name="VAR" id="qMuUH@n;-29I9Zy:c5R[">i</field> </block> </value> <value name="ADD4"> <block type="text" id="E+,QRlEw5Z_l)LdngzI7"> <field name="TEXT">"}</field> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="-t?`LwYqo*=Y=2nXV8#,"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id=".V^Ym4@]Fhdr?l9+Nq#9"> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> </block> </value> <value name="TO"> <block type="variables_get" id="W[x--|G]LH#5r0`8p?O]"> <field name="VAR" id="/EUEs^+niuBI+e=^qt[;">objekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="update" id="~ZX+.IRW/f7rLWP]fg[}"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="H,aFJ^iP^rS)IF*A8wCH"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="YOZXyHT};meRwyIV%vK|"> <field name="TEXT">[</field> </block> </value> <value name="ADD1"> <block type="convert_tostring" id="KUGB8iC2OgPko%Zegw`N"> <value name="VALUE"> <block type="variables_get" id="Oh$A$:X!.P`rQfq~=]Q."> <field name="VAR" id="N,1;Xiv_dRREPF,8/-wJ">playlistenvalue</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="+c?.o6iDZ|Kz6.VapK:s"> <field name="TEXT">]</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="Y9nt~=KFwh++B,GZEC/["> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_1|!z,QoR;MXd/.r[Dtz"> <field name="oid">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="/$wu0snvyjSUP+.-`ev}"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> <value name="VALUE"> <block type="convert_json2object" id="m}Hn/h@KIi9NO.d4U+r."> <value name="VALUE"> <block type="on_source" id="#I4@5[v]pi;H=eCg1IW`"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="lYi:d~xT7!X0xFJl*,#v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Spotify.Abfragen.PlaylistenJson</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_object2json" id="n6zNe:p_z=T;PNhAf9JV"> <field name="PRETTIFY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="CcN./1!@a^}k7uiJN4rA"> <value name="EXPRESSION"> <shadow type="text" id="ck_hXCIkQZU=+#$g^`!G"> <field name="TEXT">*</field> </shadow> <block type="text" id="GG{)CJ)JxbrU)*?WUwY%"> <field name="TEXT">$^(<text)</field> </block> </value> <value name="TARGET"> <block type="variables_get" id="TU`:gvnqE)R/$XKot06w"> <field name="VAR" id="}bdAPzw$S|-/d[[-/l,Z">sort</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>