From eece22750863ab0703c540dabdf2f5422a3dd6ce Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Mon, 19 Sep 2022 20:31:25 +0200
Subject: [PATCH 1/8] Spotify remote initial release
restructure menu
Requires Gadgetbridge 71.0
fix textinput->search menu
screenshots
---
apps/spotrem/ChangeLog | 5 +
apps/spotrem/README.md | 21 +++
apps/spotrem/app-icon.js | 1 +
apps/spotrem/app.js | 244 +++++++++++++++++++++++++++++++++++
apps/spotrem/app.png | Bin 0 -> 1877 bytes
apps/spotrem/metadata.json | 17 +++
apps/spotrem/screenshot1.png | Bin 0 -> 1816 bytes
apps/spotrem/screenshot2.png | Bin 0 -> 3282 bytes
8 files changed, 288 insertions(+)
create mode 100644 apps/spotrem/ChangeLog
create mode 100644 apps/spotrem/README.md
create mode 100644 apps/spotrem/app-icon.js
create mode 100644 apps/spotrem/app.js
create mode 100644 apps/spotrem/app.png
create mode 100644 apps/spotrem/metadata.json
create mode 100644 apps/spotrem/screenshot1.png
create mode 100644 apps/spotrem/screenshot2.png
diff --git a/apps/spotrem/ChangeLog b/apps/spotrem/ChangeLog
new file mode 100644
index 000000000..8e3d8b652
--- /dev/null
+++ b/apps/spotrem/ChangeLog
@@ -0,0 +1,5 @@
+0.01: New app.
+0.02: Restructure menu.
+0.03: change handling of intent extras.
+0.04: New layout.
+0.05: Add widgets field. Tweak layout.
diff --git a/apps/spotrem/README.md b/apps/spotrem/README.md
new file mode 100644
index 000000000..346ec9eba
--- /dev/null
+++ b/apps/spotrem/README.md
@@ -0,0 +1,21 @@
+Requires Gadgetbridge 71.0 or later. Allow intents in Gadgetbridge in order for this app to work.
+
+Touch input:
+
+Press the different ui elements to control Podcast Addict and open menus. Press left or right arrow to go to previous/next track.
+
+Swipe input:
+
+Swipe left/right to go to previous/next track. Swipe up/down to change the volume.
+
+It's possible to start tracks by searching with the remote. Search term without tags will override search with tags.
+
+To start playing 'from cold' the command for previous/next track via touch or swipe can be used. Pressing just play/pause is not guaranteed to initiate spotify in all circumstances (this will probably change with subsequent releases).
+
+In order to search to play or start music from the 'Saved' menu the Android device must be awake and unlocked. The remote can wake and unlock the device if the Bangle.js has been added as a 'trusted device' under Android Settings->Security->Smart Lock->Trusted devices.
+
+The swipe logic was inspired by the implementation in [rigrig](https://git.tubul.net/rigrig/)'s Scrolling Messages.
+
+Spotify Remote was created by [thyttan](https://github.com/thyttan/).
+
+Spotify icon by Icons8
diff --git a/apps/spotrem/app-icon.js b/apps/spotrem/app-icon.js
new file mode 100644
index 000000000..8da55b9a5
--- /dev/null
+++ b/apps/spotrem/app-icon.js
@@ -0,0 +1 @@
+require("heatshrink").decompress(atob("mEwwhC/AFV3AAQVVDKQWHDB0HC5NwCyoYMCxZJKFxgwKCxowJC6xGOJBAWPGA4MGogXOIwdCmf/AAczkhIKC4VzCogAD+YZEC49PC5AABmgXO+czJYoYDC4gfCuRYGoUjDAZ4GUJlyn4XNukjIwMzmVHBAU/+YXKoZ0GmQLCDgQXIU5IVDC5JVCIwIECDA5HIR4hkBDAX0C5YAHOoIXJa4QRDoUikiOEm7vKE4YADmZ1FC5N/R48nC5tzFQMiokimYYHC4h4KJwX3Ow6QMOwoXGSAoAKIwrBNFxIXZJBxGHGB4WIGBouJDBgWLJJYWMDBIWODIwVRAH4AXA="))
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
new file mode 100644
index 000000000..2e68fb0fb
--- /dev/null
+++ b/apps/spotrem/app.js
@@ -0,0 +1,244 @@
+/*
+Bluetooth.println(JSON.stringify({t:"intent", action:"", flags:["flag1", "flag2",...], categories:["category1","category2",...], mimetype:"", data:"", package:"", class:"", target:"", extra:{someKey:"someValueOrString"}}));
+*/
+
+var R;
+var backToMenu = false;
+var isPaused = true;
+
+// The main layout of the app
+function gfx() {
+ //Bangle.drawWidgets();
+ R = Bangle.appRect;
+ marigin = 8;
+ // g.drawString(str, x, y, solid)
+ g.clearRect(R);
+ g.reset();
+
+ g.setFont("4x6:2");
+ g.setFontAlign(1, 0, 0);
+ g.drawString("->", R.x2 - marigin, R.y + R.h/2);
+
+ g.setFontAlign(-1, 0, 0);
+ g.drawString("<-", R.x + marigin, R.y + R.h/2);
+
+ g.setFontAlign(-1, 0, 1);
+ g.drawString("<-", R.x + R.w/2, R.y + marigin);
+
+ g.setFontAlign(1, 0, 1);
+ g.drawString("->", R.x + R.w/2, R.y2 - marigin);
+
+ g.setFontAlign(0, 0, 0);
+ g.drawString("Play\nPause", R.x + R.w/2, R.y + R.h/2);
+
+ g.setFontAlign(-1, -1, 0);
+ g.drawString("Menu", R.x + 2*marigin, R.y + 2*marigin);
+
+ g.setFontAlign(-1, 1, 0);
+ g.drawString("Wake", R.x + 2*marigin, R.y + R.h - 2*marigin);
+
+ g.setFontAlign(1, -1, 0);
+ g.drawString("Srch", R.x + R.w - 2*marigin, R.y + 2*marigin);
+
+ g.setFontAlign(1, 1, 0);
+ g.drawString("Saved", R.x + R.w - 2*marigin, R.y + R.h - 2*marigin);
+}
+
+// Touch handler for main layout
+function touchHandler(_, xy) {
+ x = xy.x;
+ y = xy.y;
+ len = (R.wb-1 instead of a>b.
+ if ((R.x-1 {
+ if (ud) Bangle.musicControl(ud>0 ? "volumedown" : "volumeup");
+ }
+ );
+ Bangle.on("touch", touchHandler);
+ Bangle.on("swipe", swipeHandler);
+}
+
+
+
+// Get back to the main layout
+function backToGfx() {
+ E.showMenu();
+ g.clear();
+ g.reset();
+ Bangle.removeAllListeners("touch");
+ Bangle.removeAllListeners("swipe");
+ setUI();
+ gfx();
+ backToMenu = false;
+}
+
+/*
+The functions for interacting with Android and the Spotify app
+*/
+
+simpleSearch = "";
+function simpleSearchTerm() { // input a simple search term without tags, overrides search with tags (artist and track)
+ require("textinput").input({text:simpleSearch}).then(result => {simpleSearch = result;}).then(() => {E.showMenu(searchMenu);});
+}
+
+artist = "";
+function artistSearchTerm() { // input artist to search for
+ require("textinput").input({text:artist}).then(result => {artist = result;}).then(() => {E.showMenu(searchMenu);});
+}
+
+track = "";
+function trackSearchTerm() { // input track to search for
+ require("textinput").input({text:track}).then(result => {track = result;}).then(() => {E.showMenu(searchMenu);});
+}
+
+album = "";
+function albumSearchTerm() { // input album to search for
+ require("textinput").input({text:album}).then(result => {album = result;}).then(() => {E.showMenu(searchMenu);});
+}
+
+function searchPlayWOTags() {//make a spotify search and play using entered terms
+ searchString = simpleSearch;
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.media.action.MEDIA_PLAY_FROM_SEARCH", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", target:"activity", extra:{query:searchString}, flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function searchPlayWTags() {//make a spotify search and play using entered terms
+ searchString = (artist=="" ? "":("artist:\""+artist+"\"")) + ((artist!="" && track!="") ? " ":"") + (track=="" ? "":("track:\""+track+"\"")) + (((artist!="" && album!="") || (track!="" && album!="")) ? " ":"") + (album=="" ? "":(" album:\""+album+"\""));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.media.action.MEDIA_PLAY_FROM_SEARCH", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", target:"activity", extra:{query:searchString}, flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function playVreden() {//Play the track "Vreden" by Sara Parkman via spotify uri-link
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:track:5QEFFJ5tAeRlVquCUNpAJY:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function playVredenAlternate() {//Play the track "Vreden" by Sara Parkman via spotify uri-link
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:track:5QEFFJ5tAeRlVquCUNpAJY:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function searchPlayVreden() {//Play the track "Vreden" by Sara Parkman via search and play
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.media.action.MEDIA_PLAY_FROM_SEARCH", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", target:"activity", extra:{query:'artist:"Sara Parkman" track:"Vreden"'}, flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function openAlbum() {//Play EP "The Blue Room" by Coldplay
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:album:3MVb2CWB36x7VwYo5sZmf2", target:"activity", flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function searchPlayAlbum() {//Play EP "The Blue Room" by Coldplay via search and play
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.media.action.MEDIA_PLAY_FROM_SEARCH", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", target:"activity", extra:{query:'album:"The blue room" artist:"Coldplay"', "android.intent.extra.focus":"vnd.android.cursor.item/album"}, flags:["FLAG_ACTIVITY_NEW_TASK"]}));
+}
+
+function spotifyWidget(action) {
+ Bluetooth.println(JSON.stringify({t:"intent", action:("com.spotify.mobile.android.ui.widget."+action), package:"com.spotify.music", target:"broadcastreceiver"}));
+}
+
+function gadgetbridgeWake() {
+ Bluetooth.println(JSON.stringify({t:"intent", target:"activity", flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_CLEAR_TASK", "FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS", "FLAG_ACTIVITY_NO_ANIMATION"], package:"gadgetbridge", class:"nodomain.freeyourgadget.gadgetbridge.activities.WakeActivity"}));
+}
+
+function spotifyPlaylistDW() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+// Spotify Remote Menu
+var spotifyMenu = {
+ "" : { title : " ",
+ back: backToGfx },
+ "Controls" : ()=>{E.showMenu(controlMenu);},
+ "Search and play" : ()=>{E.showMenu(searchMenu);},
+ "Saved music" : ()=>{E.showMenu(savedMenu);},
+ "Wake the android" : function() {gadgetbridgeWake();gadgetbridgeWake();},
+ "Exit Spotify Remote" : ()=>{load();}
+};
+
+
+var controlMenu = {
+ "" : { title : " ",
+ back: () => {if (backToMenu) E.showMenu(spotifyMenu);
+ if (!backToMenu) backToGfx();} },
+ "Play" : ()=>{Bangle.musicControl("play");},
+ "Pause" : ()=>{Bangle.musicControl("pause");},
+ "Previous" : ()=>{spotifyWidget("PREVIOUS");},
+ "Next" : ()=>{spotifyWidget("NEXT");},
+ "Play (widget, next then previous)" : ()=>{spotifyWidget("NEXT"); spotifyWidget("PREVIOUS");},
+ "Messages Music Controls" : ()=>{load("messagesmusic.app.js");},
+};
+
+var searchMenu = {
+ "" : { title : " ",
+ back: () => {if (backToMenu) E.showMenu(spotifyMenu);
+ if (!backToMenu) backToGfx();} },
+ "Search term w/o tags" : ()=>{simpleSearchTerm();},
+ "Execute search and play w/o tags" : ()=>{searchPlayWOTags();},
+ "Search term w tag \"artist\"" : ()=>{artistSearchTerm();},
+ "Search term w tag \"track\"" : ()=>{trackSearchTerm();},
+ "Search term w tag \"album\"" : ()=>{albumSearchTerm();},
+ "Execute search and play with tags" : ()=>{searchPlayWTags();},
+ "Play \"Vreden\" by Sara Parkman via uri-link" : ()=>{playVreden();},
+ "Play \"Vreden\" by Sara Parkman via search&play" : ()=>{searchPlayVreden();},
+ "Open \"The Blue Room\" EP (no autoplay)" : ()=>{openAlbum();},
+ "Play \"The Blue Room\" EP via search&play" : ()=>{searchPlayAlbum();},
+ "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
+};
+
+var savedMenu = {
+ "" : { title : " ",
+ back: () => {if (backToMenu) E.showMenu(spotifyMenu);
+ if (!backToMenu) backToGfx();} },
+ "Play \"Vreden\" by Sara Parkman via uri-link" : ()=>{playVreden();},
+ "Open \"The Blue Room\" EP (no autoplay)" : ()=>{openAlbum();},
+ "Play \"The Blue Room\" EP via search&play" : ()=>{searchPlayAlbum();},
+ "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
+};
+
+Bangle.loadWidgets();
+setUI();
+gfx();
diff --git a/apps/spotrem/app.png b/apps/spotrem/app.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c0d65eee994757cfcee51e2191164cc49f3179b
GIT binary patch
literal 1877
zcmV-b2demqP)|f3s&V-isaIFus9lB4a0{PGq1-3vN@=V4w<=
zs?ditY1K-N5+SO#Ms3p4Oci*Jt4i7%$f7e46Lxi|2JYeI(hB2eagUU^?`(q
zuY;@yYJoDqHy08Th+&EBky3UGMQN)Va(}pg|Lew5$6k_w=g;k`l7>8h5Rc6X&H_1%
z<29CBp
zU`wV(NY%TAY7sHFkl
zMEDqp#^q6#1(I#CTyfMYEbSDU`(RHjpQ`K;@I<-~JEegmox4|SntlZ+_*|4_&IC5S
zHq{cFati61ahU(Tcz^<#P@YXyY5E3UcyIffgw1{xaAr4_Ajj?{Ar0b2B)g{R(S(g^
zvp=@oEIJ{SgQO6z2s`C@cT1-QWK8X6
zOzkJA`WaLEvoYWx!PCGmk}DRyfo9ok^LBjL4^$-AZLNBOjpciAC^^{-Zput7$hC>{
z^i6c(pS*}>L@ip#;i`adZE^y*=ndq)-}PX^wphH^S-^v9zPm)(^Tu%%Q&+l!y3!qJ
zMwBa~?{Z=I3_&$jUMI@^W#LW02lGo88JJCp7ZW$4Xhw9=(~lbwCZhqO+B9(^LfnX;
zC*rv5K3s|ir`?0kSxBC%B&8XLl0#kT4!&60NN=!%clwSIj!&3)V4I}@NNhCwwlyQd
zTUVZ?y67u};$sBWen!LBn2L@7GNrhiI2AWVo;4JE)=`yzKkEwW$+71q=@ZlxH&E!V
z;|o{F4_g#hMW}A_Qi73C#5J(MT&o*r>?6hr3rj#DOkJWU*ulWmB@%LWK~c3y+OMDFod0EPLP1ZY%%pRZ3rzn5>DXEQ
zGuGzcmu)iyf&zCr1@3a{N_P;^XSj0XUAl(eU?vs>AR&!grZUCMKnN&I)j&%uT(6^g
zh%vRFm=PwftHg~6ip_yb@#3<3$#oUao711+w&zk`{wQ^&ja>TlZ8``3imFXo>7B7O
zAP@nGOljb3?{BFoZXm2pFdFWgTZPi&R6LY;zd%`DE$fT6P?o#?mLa>%NqzZls*AqN
zpD#R>HU*J_fTaORq8G%5RGmci8UFogi>2uK#0{0f>B|gGU#4sDP4Zl;xOep(;#54?Z4RP(h?pKG6dxlL
zA72nZ9UJAJ{jYLi_zasW_OhYmVFEL~+z9uj9Y+e;ZD~L#N*jqp+Kvj{mDH6sQsTXn
z65m~men`ov+9V^PPv%yj_FK~~s)y+CpQ6K`*+GPmv@I%2E=ZTm-Q>rcPmt$YmC>MP
z1ZH~a9y(1=upODfUwn?Cs(`mDIhixv4?Oq&&gT%KDOFF8*8Yk+3pX>S_A?slV^qD)
zRCI)x5hkjKkTQWw@!+z1DRfs-;=7Bo+!_kql?(a_s(#+-J5GN_e|PztLk(wtnOwTe
z8=CYKd#YGpyp{XQcHwc%o{Pne2!H6@kCbVrZORReViw(c;*;q|epFp0U{Uh46jW`B
zfvJzU82B3zZ3?d=pR41YT$?zbww;u`c&MS}6|=gOoBG2a>@9M{qCE&vv_#!YWn7c8
z_L;Aq9W|>=xv78Vfzx9`h@XCbx-vruc`%iDusGP7JCAv3*;QqXc(G~gS<|U=6U&pi
zJom^`z}w5FDMKXUAK^le$*yK0mIj{O)UBcF-$By4Jkl~j{#~fro=i@tvpZfNSN|lD
zKU|u)^ho6KJKQ%8Jh`b`%OpPg3y$_(k4yL+%YSM&E`&U2HRqGDoI=SoHME@4q^yz1
z<3L825EjINV?tMIvK0?YyySb~z3pqH&3-__W2DKQQZNYe64>F>Uy}h~`+Ym%Zjc5t4&E^HhmgNBS
zZXdgPgwf!E2e~))uj0acd5Hkj{39BlvbLTgXwg^%~#{3!8Nq!lS`@7<>O>#u2eK6wEAexOuTCo3ok$E
zs}4TRkW4mteNPvlghu}Ps#29v+1TD{q8v9azJ4LI(Ns)r0DQkTXy$4~G_j;XKjm(S
zFaS2vDsMd4wyK5B{dd5>PsVq5)2Xd$U**brC;?JAm+8$>g##v1>cebMlJ{rRV&5bXmw)P9<
z;$xILo5>ObRD(RsD;-P$9myHDYniX!n;gry+$uZhU-h)TI(cmF4Uy?87H}|$5&icI6o)Laz$!>)l>J_B{43Vx5yZjI?CGvQ*Z+z97gH*@dqCd@Acvng@SA
zL$RX$Fls4F)*LXIK(D0c$lPaZ3mr)Ip?duoH2tDwYbwn_%USEmqu*?C{2|lz~XM<`EuSTrAwGp<>NJMQtJp&As
zT?Sf9dY8Bzk35JSi5wed2^b)<7B
sHPspq<`aeccLR|3UQvAfKUQShrqO)nn;S$a_UdpUfnlt=0Nzi30p0^OSO5S3
literal 0
HcmV?d00001
diff --git a/apps/spotrem/screenshot2.png b/apps/spotrem/screenshot2.png
new file mode 100644
index 0000000000000000000000000000000000000000..7801a3034027861558ee960b030561276d578bbc
GIT binary patch
literal 3282
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 qw~cha>S{eO_
zTl(gA!A{;qL3?54gB$#AVp6WbCvq&5JNp^fwCA5~u_INpxVw`_gAoXQzlP7K{ZnX+
z6Ow*eu7R}7{c6mY*4X_iPnwn@Z4PZcW&lcPt|=6gPBrL};wr#iB{e@h-_^+j40&_@
z9q!a24TJwt^^J{fO@{6Dp#C{o^~NKD{^=1d+|9CROuW~*di7WjIEf81qs--4S)?Rf
zQSY1ITMga3+PFFpm$QC4u@~m^p?2evwM9U0%cVu+e8gHwUq_R@)+CAd$52%J$b3-S
z9=_n7g93b#UXnn8)~Uh8dd7EpY)MT$j_7I$$O^G+$(T|Yh7+&6ufOO%v~uDO939WB
zb)4Ws7j$wNt6x|$lDva#_E2A^nB3phc&P@nMvFEszx=}8-=|~I)4(;UgSzl_^KcB!
z9K-hJ)ekU7K^gqVU-LR~lKahD@4uGAQ7
zr;tQtcy%YF0+3o
z#l16VU`hW{tq8l`$98=t4!*Ms(fwzjfa5BQN3_B=;jx^iK-FSl?W)R>%3_{{i@9P1OJZ
literal 0
HcmV?d00001
From 6d839dd6c7f55ca007594f6a4263eb596590f914 Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Mon, 10 Oct 2022 18:46:49 +0200
Subject: [PATCH 2/8] change ui color
---
apps/spotrem/app.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
index 2e68fb0fb..9ac03d1ff 100644
--- a/apps/spotrem/app.js
+++ b/apps/spotrem/app.js
@@ -15,6 +15,7 @@ function gfx() {
g.clearRect(R);
g.reset();
+ g.setColor(0x07E0);
g.setFont("4x6:2");
g.setFontAlign(1, 0, 0);
g.drawString("->", R.x2 - marigin, R.y + R.h/2);
From 6f80f875373b623c9924724cf8746e175c4e1555 Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Tue, 11 Oct 2022 00:55:51 +0200
Subject: [PATCH 3/8] dark/light theme
---
apps/spotrem/app.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
index 9ac03d1ff..f0787b57d 100644
--- a/apps/spotrem/app.js
+++ b/apps/spotrem/app.js
@@ -5,6 +5,7 @@ Bluetooth.println(JSON.stringify({t:"intent", action:"", flags:["flag1", "flag2"
var R;
var backToMenu = false;
var isPaused = true;
+var dark = g.theme.dark; // bool
// The main layout of the app
function gfx() {
@@ -15,7 +16,7 @@ function gfx() {
g.clearRect(R);
g.reset();
- g.setColor(0x07E0);
+ if (dark) {g.setColor(0x07E0);} else {g.setColor(0x03E0);} // Green on dark theme, DarkGreen on light theme.
g.setFont("4x6:2");
g.setFontAlign(1, 0, 0);
g.drawString("->", R.x2 - marigin, R.y + R.h/2);
From 2a55ebbfca118150a4dba2d7ca16f6bcd8716b24 Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Tue, 11 Oct 2022 01:24:55 +0200
Subject: [PATCH 4/8] Spotify generated playlists
---
apps/spotrem/app.js | 42 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
index f0787b57d..50767ae13 100644
--- a/apps/spotrem/app.js
+++ b/apps/spotrem/app.js
@@ -190,6 +190,38 @@ function spotifyPlaylistDW() {
Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
+function spotifyPlaylistDM1() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDM2() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDM3() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDM4() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDM5() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDM6() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistDD() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
+function spotifyPlaylistRR() {
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+}
+
// Spotify Remote Menu
var spotifyMenu = {
"" : { title : " ",
@@ -235,10 +267,18 @@ var savedMenu = {
"" : { title : " ",
back: () => {if (backToMenu) E.showMenu(spotifyMenu);
if (!backToMenu) backToGfx();} },
+ "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
+ "Play Daily Mix 1" : ()=>{spotifyPlaylistDM1();},
+ "Play Daily Mix 2" : ()=>{spotifyPlaylistDM2();},
+ "Play Daily Mix 3" : ()=>{spotifyPlaylistDM3();},
+ "Play Daily Mix 4" : ()=>{spotifyPlaylistDM4();},
+ "Play Daily Mix 5" : ()=>{spotifyPlaylistDM5();},
+ "Play Daily Mix 6" : ()=>{spotifyPlaylistDM6();},
+ "Play Daily Drive" : ()=>{spotifyPlaylistDD();},
+ "Play Release Radar" : ()=>{spotifyPlaylistRR();},
"Play \"Vreden\" by Sara Parkman via uri-link" : ()=>{playVreden();},
"Open \"The Blue Room\" EP (no autoplay)" : ()=>{openAlbum();},
"Play \"The Blue Room\" EP via search&play" : ()=>{searchPlayAlbum();},
- "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
};
Bangle.loadWidgets();
From 2cee9ac556db418a90c65faef9b0992523f129a0 Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Tue, 11 Oct 2022 01:33:22 +0200
Subject: [PATCH 5/8] clean up
---
apps/spotrem/app.js | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
index 50767ae13..1e969f3c9 100644
--- a/apps/spotrem/app.js
+++ b/apps/spotrem/app.js
@@ -256,18 +256,13 @@ var searchMenu = {
"Search term w tag \"track\"" : ()=>{trackSearchTerm();},
"Search term w tag \"album\"" : ()=>{albumSearchTerm();},
"Execute search and play with tags" : ()=>{searchPlayWTags();},
- "Play \"Vreden\" by Sara Parkman via uri-link" : ()=>{playVreden();},
- "Play \"Vreden\" by Sara Parkman via search&play" : ()=>{searchPlayVreden();},
- "Open \"The Blue Room\" EP (no autoplay)" : ()=>{openAlbum();},
- "Play \"The Blue Room\" EP via search&play" : ()=>{searchPlayAlbum();},
- "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
};
var savedMenu = {
"" : { title : " ",
back: () => {if (backToMenu) E.showMenu(spotifyMenu);
if (!backToMenu) backToGfx();} },
- "Play playlist Discover Weekly" : ()=>{spotifyPlaylistDW();},
+ "Play Discover Weekly" : ()=>{spotifyPlaylistDW();},
"Play Daily Mix 1" : ()=>{spotifyPlaylistDM1();},
"Play Daily Mix 2" : ()=>{spotifyPlaylistDM2();},
"Play Daily Mix 3" : ()=>{spotifyPlaylistDM3();},
From e5e9394ef5afd05be14f8868a9db67a2f0b8a44d Mon Sep 17 00:00:00 2001
From: thyttan <97237430+thyttan@users.noreply.github.com>
Date: Tue, 11 Oct 2022 01:40:56 +0200
Subject: [PATCH 6/8] fix generated spotify playlists
---
apps/spotrem/app.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/apps/spotrem/app.js b/apps/spotrem/app.js
index 1e969f3c9..7e76d84bc 100644
--- a/apps/spotrem/app.js
+++ b/apps/spotrem/app.js
@@ -191,35 +191,35 @@ function spotifyPlaylistDW() {
}
function spotifyPlaylistDM1() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E365VyzxE0mxF:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDM2() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E38LZHLFnrM61:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDM3() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E36RU87qzgBFP:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDM4() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E396gGyCXEBFh:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDM5() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E37a0Tt6CKJLP:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDM6() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1E36UIQLQK79od:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistDD() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZF1EfWFiI7QfIAKq:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
function spotifyPlaylistRR() {
- Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXcRfaeEbxXIgb:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
+ Bluetooth.println(JSON.stringify({t:"intent", action:"android.intent.action.VIEW", categories:["android.intent.category.DEFAULT"], package:"com.spotify.music", data:"spotify:user:spotify:playlist:37i9dQZEVXbs0XkE2V8sMO:play", target:"activity" , flags:["FLAG_ACTIVITY_NEW_TASK", "FLAG_ACTIVITY_NO_ANIMATION"/*, "FLAG_ACTIVITY_CLEAR_TOP", "FLAG_ACTIVITY_PREVIOUS_IS_TOP"*/]}));
}
// Spotify Remote Menu
From dd44c49d1ff29302c93589c420541d2089eae839 Mon Sep 17 00:00:00 2001
From: thyttan <97237430+thyttan@users.noreply.github.com>
Date: Tue, 11 Oct 2022 19:06:33 +0200
Subject: [PATCH 7/8] Add files via upload
---
apps/spotrem/screenshot1.png | Bin 1816 -> 2361 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/apps/spotrem/screenshot1.png b/apps/spotrem/screenshot1.png
index 3edd7a1c607290afd68eff2f989783b27c306964..730e98547c7e4ed5b73ee82cdf6fd4c5cf649da3 100644
GIT binary patch
literal 2361
zcmdT`>pPT-7Jt3-;*BFlNw*OO?V=$iGDxy#h+HPd)Qs50(^{n;$p2hNTBdV!vRRI7%
z&DqJ3BuDOl3|5kR4sV1m2Zc){q66@>dHXm3z;n)yhrJl|sf@wM9P586eU`
z%6Pdvl9WkpiVY)ZMe6!~cVIF&$1E1qdfiGt
zg#U$(X(?H8dKc?xF`ddUn>~5d#<+cKF=v<>*c;DVv+0uBIhq%S
zf-@>sm_=ne0=Py>P_|SdHWGz+YP_p(zTD2_UiEpL|vr7D&H?;-dc1_%YP^oBWEo3~oruXf``rHX$FxB#Ot)}ejCq0Sp^3+Tf
zT~Hn{?%tUg`ZbpyG#VR`&W7TaestS%=M~MWmGe*&k7Vzv#r1nw>Wb`S%OZZ&l>{@b
zh3XkMn!D_4>Z6L1&9~<2L`IpYq;szW%02yKhh;Pw=NXnh$wLR$m_lnlurady?jbYf
ztg>B<3cB=~N3J)MKHue%!TBa!utAd6(Rv%Dc8FEAGMSMQ4;RDqVFsuEv%B7DgXwPJ
zPlJR^m3)Q>d_jm7XTBk3qQr)ECzaV+v~?E>NsEZchq*Unu$IKb|c9aci#VmPw)
zVyiKAZ3!hM?M8m-?fqTcx{79;K9oM7RT`SqW8MyhMhNFuQ;fs38U2(~2P#7!#|`HT
z7CY>ss($c#)O^)P(h>?HKA+Ua$zGP=XjA+>WL8?kvG0}B=2A`Bui}}?hk6L7`ilAc
zqX1GyUNf2?45V!|pD@?3IzM{hStwNJtXGCZ{nwDx#6Y~lXp4PA@N=(+C!Mts!B|IK
zbZLbu&-s#49*WtHL2UEM0s4|gkA2C?3XnAG=!Yb<{XkOoX?=ANo;-Z_{tm2}shOq8
zlz++h%_S?5tS_>^)3@kygE(P0_F2)mBJS)xA4#jv2br*Nj-2wkFzvzCW;60blsh8PxVS&>-QHS$#f9nV{=203_Lc~wOj_k)F51)MNr`D>Cjc~#&nPZ+a)9}nzG(pxRTl1iM79p
z(f#y+k`WQkJ0e(E-MyUFP01cAgenTfP2hqUDcO{7p9%f7w*Sq%6ntU{0LjodeAp@J
zhYU6VKJoDj0pOa*)wZA{{lCor-9wFgu$Hm3X3J^ITO+l;JCh}F{#2k9XQeb!OONz&6#)uVIRCIi%{jBjBDW*n
zub6K{wX7q4KVKQM0*z@RL*EEW1Z^tW``4xKms+v(63o~I_6vZ8a;e*R&7@h1qbR8<8Dw|exDi6<9v3~d%qm$_b2RBBvtBv;T
zLcUybs~)9eN#bp4qVO(hL3v-}`Ozm`ZX4&e0`8~wmXZYsdSM4ba)RvseQr1<2@X!3
zuD}+or=8|B@Dhtuv(m4(Z1Jfb7xOzinsInT1F*OBz>TZ?J$fyXP7|v9thZ6?5k6c~
z-VYZ)hmK16+yu-Gl)nAEA=8o!-&r_;A9+C0(P01>b3IE0kSU7hu6O`cwhuar2jyMf
zc2a;etN`odJ!pGB{5?k%-FUvjrw46`fSkvG1Sml3SyxiE+wgR{se<
z!T7&RoQ;K9z3ZBstj2rPA{v@Or!^JNOls;E0ZpmmIJ6P_kOz`VG
zKX_TZy$XB5%}Po97v>Eq=;Z}F#ZJmB8}KxUiabG!l+N&En@
z<=1fsS1MSi%fJ9dOQT46^
c&I5;xDp0mpn*%-MzYyU3vzy~n2fyF`0WPOujQ{`u
literal 1816
zcmeH|*;7*o6vmTFE+$tIkRXUkEkZ(#HCRwF5Vi)8Di9U}6^yYu21IBmRR}@hR%*2p
zR8Tf0pm9N2wZ#NQyyMzpAQMEQCSY)ZpdcU#AQwn)XY5P=h4$f`@8x`RX3qTPJ4e`I
z!4{AMgu~%1LN>4>F>Uy}h~`+Ym%Zjc5t4&E^HhmgNBS
zZXdgPgwf!E2e~))uj0acd5Hkj{39BlvbLTgXwg^%~#{3!8Nq!lS`@7<>O>#u2eK6wEAexOuTCo3ok$E
zs}4TRkW4mteNPvlghu}Ps#29v+1TD{q8v9azJ4LI(Ns)r0DQkTXy$4~G_j;XKjm(S
zFaS2vDsMd4wyK5B{dd5>PsVq5)2Xd$U**brC;?JAm+8$>g##v1>cebMlJ{rRV&5bXmw)P9<
z;$xILo5>ObRD(RsD;-P$9myHDYniX!n;gry+$uZhU-h)TI(cmF4Uy?87H}|$5&icI6o)Laz$!>)l>J_B{43Vx5yZjI?CGvQ*Z+z97gH*@dqCd@Acvng@SA
zL$RX$Fls4F)*LXIK(D0c$lPaZ3mr)Ip?duoH2tDwYbwn_%USEmqu*?C{2|lz~XM<`EuSTrAwGp<>NJMQtJp&As
zT?Sf9dY8Bzk35JSi5wed2^b)<7B
sHPspq<`aeccLR|3UQvAfKUQShrqO)nn;S$a_UdpUfnlt=0Nzi30p0^OSO5S3
From 6819a094427badf473bd0216a4942aaae56ed1a5 Mon Sep 17 00:00:00 2001
From: thyttan <6uuxstm66@mozmail.com>
Date: Fri, 14 Oct 2022 12:33:24 +0200
Subject: [PATCH 8/8] change name
---
apps/spotrem/metadata.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/spotrem/metadata.json b/apps/spotrem/metadata.json
index 7353be36d..a0261ba13 100644
--- a/apps/spotrem/metadata.json
+++ b/apps/spotrem/metadata.json
@@ -1,6 +1,6 @@
{
"id": "spotrem",
- "name": "Spotify Remote",
+ "name": "Remote for Spotify",
"version": "0.05",
"description": "Control spotify on your android device.",
"readme": "README.md",