From 5d2162d8ee8ed01f8a72806c278b6b3d076ae2b6 Mon Sep 17 00:00:00 2001 From: Wil Bennett Date: Thu, 5 Aug 2021 14:28:24 +0100 Subject: [PATCH 1/8] Initial Commit This worked once but lots of things have since broken. Streaming links are all invalid and MPC retrieval of station names isn't working --- .../RadioIcons/BBC 6 Music.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Asian Network.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 1.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 1Xtra.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 2.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 3.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 4 FM.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio 5 Live.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio Scotland FM.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC Radio Wales FM.bmp | Bin 0 -> 1088 bytes .../RadioIcons/BBC World Service.bmp | Bin 0 -> 1088 bytes .../miniscreen_radio/RadioIcons/Pause.bmp | Bin 0 -> 1088 bytes .../miniscreen_radio/RadioIcons/Unknown.bmp | Bin 0 -> 8254 bytes .../RadioIcons/Unknown_Inverted.bmp | Bin 0 -> 8254 bytes .../RadioIcons/Unknown_Simple.bmp | Bin 0 -> 8254 bytes .../Radio_DEPRECATED-VERSION.py | 148 +++++++++++++ examples/labs/miniscreen_radio/pi-topRadio.py | 208 ++++++++++++++++++ 17 files changed, 356 insertions(+) create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC 6 Music.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Asian Network.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1Xtra.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 2.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 3.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 4 FM.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio 5 Live.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio Scotland FM.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC Radio Wales FM.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/BBC World Service.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/Pause.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/Unknown_Inverted.bmp create mode 100644 examples/labs/miniscreen_radio/RadioIcons/Unknown_Simple.bmp create mode 100644 examples/labs/miniscreen_radio/Radio_DEPRECATED-VERSION.py create mode 100644 examples/labs/miniscreen_radio/pi-topRadio.py diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC 6 Music.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC 6 Music.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8f37c68361a2a68c435d5c0b45b8bfbd6c218513 GIT binary patch literal 1088 zcmchVy^7mF5XVPxAnw#UMWO`5<*MT#O%9IRBZa!WL*609`HHXt7fLD{)VK)vMFMdM zB%SpLF$7Mf4K8G3dH**vtAkY@;706demft#Gwk~h*H201iuEb4jMp`>r-_ zr5mgOsLB6F5i*@)b}xG!{)tV8W4JKES)dF8c5K%HZ`nQsT(Nx&ILwvpIsOG+z_{-H z?2h6fz}XFj_jOoN6!;q~h>q(|qk5vdM`T2!<;Pb;pS71+-!9WPCvVk%5WZNZ=EQn- zWQEULt{owJzD!@=d4KI9EC#>R;hoQ~n+U4`rRQyZ40;I`{Z z^2OiIu;Th*yqv!fe=E#3OBB9;?tL@NSM9)Nx6w4Nr5~gIB6?Spwe)Y5$K%Vq+6pTo zFPIN9FV97OSyX%GcAmwbi=sU8e4qKtjmv132*+4UM!wD)(_q8pm9>hqJ0A33wN)w4 z#mxGY#W373eh5$cn|y+~uo3>k5~JjX<&7y%V^knCf)dZX1=+pw*Z!1wkIYsN%=yk{ frd0Ozkt`CU?9a!q)xd__eNVuD?@vP?MG@Tt?ix&) literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Asian Network.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Asian Network.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5b9a4bddd1ed0e7445d6449ff0b910318782a4be GIT binary patch literal 1088 zcmbW0y>8S%5XZ+DaEeH7BL%cbG^x^D8{#NE;uWHEL75^&C@!+!AZ@z50wokgMrjXS zi-eFYQCx!(D?z$BdC$Xt*4|BylC{R(-+b-N?A_tpgQw)yKHfW!5^?~E@aTF1`|I6a zoB}Tqaa(-lI~DQ)V9uD6@t#PFLPeMmbpoR@WwQM~QN52YaW( z01qe~Y8R>F`Jg~Mr{Kuvx3sk_QiTy)+IaSunKp5QRpk3&dQOFu!JjF?bl12{apC@a zrnpMLetzIO#*FL1fhlStu&)oy1or(hk)?@i!bN~rv`47Fz5bJaFz83B7Zlw{`{Vaw zGy@m)mio7!zqO}xl2RvLF|hAPDoS8CR+x@rjH>5sAjNQ;IMhAF}f_Klzx7C5%t61M$DWFlxD-@b_^JMlwQ4sCPQfFW%uU!A6iD r{^v9N7Qltz{8vYD41Y`q=|g>*5Z&MVel&p*#E13o|1%iYH$;B{Z#~f_ literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b650ddb754b4227328313f3fd6a45b7fd2eb08d2 GIT binary patch literal 1088 zcmcJOu}Z{15QZm4unAnNRSFv`8*6V5d!NC=hqy|!4{)!b=OfrzUc3|{5e{wVqub3k{faQon%O&%`a?b2Hh$*aG2eQXlta2iT zd$0|_aMUEn1Yo7w%{K8;_PJ)!q^{l3(!z{pqHpq&IQA*PygJ`p(Mb^oL!l(+p9}WpEu2I`#Wbjh(>dSUOk<(2L0x|d zbSYF@pFAIoV01Y1e?da)%+MnsERgT z&6mf1J&!@#~YJh5fe_hPp z3~0&E>B1=}$=`9dm?y$k3(_jPz1PTbE8Y-U^5^Sx*ZK1gc|hn3A|3W(W#v92r)SIU zGzso^eg1r>TB%dm3>(9lL0*c)9x{Kup3(R)P KH4y%K2=D^|=SYSC literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 2.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d11972739c8b801ba906b34fff738a48e34d698f GIT binary patch literal 1088 zcmbW0y-LJD5XUE;n9kq}7>_ho!u66IB3AkeBG~!>*X@GEb!urL=R;V?!4>I(jn9xn z(Dvj&HlP{*vx)A;MsdP^{4z5;ADiqQ4OhuZig_DDV+=6@JR&R5Cp*osFEBB)-D3Tx z7*ZWiO_9$v;`?k6&UYxmv1g#c{sBM=ogT*#^&GzodjaHlTUBea$gn9@OW0bLsgY7* zm2peV`A?SE)~GSj65D5qUAhEq><%mFzY|9K*)JTkb_Kyc;@mOH4Y}-aj~5*dz;dlt zU>`7g;xRE^`m7Md=L}zj&ytYO5$mspD`|hoIkw<^v9%+9j+$FV21ygbLgwdCj5nQNtmkJ^mJM{Hdz|ZkgBvgcOQ^t?O0M} z9b;;wl+q|heA)`M^j2{#cVtHW`S}>V%+N0dK1*IN3Yf(h@G%F;#&rlCeB?~CpA4=- z_)<-hgBc}ru>HHRusKZn!Wtcubif1nBOp=S+FuqdmuLTvHXpex+igQ9lAj#lssX}5 N$>L<}wtwFdeFBeM^63Bo literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 3.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 3.bmp new file mode 100644 index 0000000000000000000000000000000000000000..09a5a1ba3128197756196bcd6b843b531db631a4 GIT binary patch literal 1088 zcmb`Gu}T9$5QZn7c#ROt2$CyotOT(PWX0Zhu(Guk6n4R&&kz#hqqw5PM)Cq$oJ}ev zCpHHjH~zEddAnd?;e_4Xw{yGm&&=Nb!QL`C>to)+Fc^CnE&Rlm;NRS?hFieI%q^JBXcSubV6x+dn7bV{mW8*%9eFl{7=QJeT|6R@N{ z4rl_FbV4d?)o*h_+9bKpY}>h1tuj2?xCl4}>)M}H{*cQ?Fyxy!;4X!X@)S)%DYEz3 z{=(3g)bYg+{waWPk_Eh>(ts0X18(1#fa4jC^v;ja5}#XW8RAcF4o`1c;uVg^*T=mH z+C_vG!+$kfj1+o@ZmtTC?BYpR+?D#Azk(I~shS86-^8C$lvjN9F8ec7Lp@5phaZdH zn2~A${ouRL6!E{AYb(V6-1N)wr0H)-?Myi~E7T!fQfzcr?#Jatw{xbMq8F?Q&sC?? zY+AS@lK$XmXJ|AMhNc93G4HK|Q%a0$_vN&|4qZR@cQD-*e~tn;Il}iEmlxkFw)4ZZ g-zhY+`Tjmc&l=de>d7S*eJlrH_ROjC_-~IyU-=Nq&;S4c literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 4 FM.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 4 FM.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7147b96e51db866efa02bf1233ba9285b83ff1e7 GIT binary patch literal 1088 zcmbW0!AiqG5Qe8#h(a}w(1RCG(ppeTZBxAa4h6wi=tY`{2R-x^d=1ZefWCkT?Scod zy)|IW_|I(8-3CN(!*2H5+1>dwGr7JQ?~}F>##8hJeT?3~BW(}%lQY|O0RuDZ6z_jF zvwN>4Fe&#(%jpn|*eefSRu?l)DJc2! zVf9*g9K3#CDUxt8@4E@s`Fad*?!)4}4l2OWtpzL}2}cfu)tJ566Wzdr{< zu&vj_x!NJfmXq)^GXz;V*x$|A{U4%df_oE<9^S{IPcOviTA^wkv+?G?Pl(aIP?6gQAQ*44FDm(D zMjEVZ>jE|Q{^rKIQ00iQ#e{SOq2J*U8|hh$>w{0rqVm)p!$rY$QkwhI{XRDK2K&K< z4vD)Xet*hJ&B$%nfYZFI6f#%vJbf^%@)^uOrir#|etf>l6mxJz2E%w53X#>mWG?x{ zeIGk(%JCMts4Ig?aX^^ zN@q!BcNk8}r#DZt4|grfX4ONpvaucssF1bL^-OxR&=pV_PNQu^1q17TNbjO0MKZ+n zOBT(*hki<Y8REkNyD|%g&k;pqD7X^VcjV#RxN9Zm#n0+*7leEP Dsv{QV literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio Scotland FM.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio Scotland FM.bmp new file mode 100644 index 0000000000000000000000000000000000000000..af324c767c986a8fa675753d2beed23667d4890d GIT binary patch literal 1088 zcmb7@F-zn?6vtnTB#oHTU08Mso2!nbOCiZ(W94^PutuJK{-OzUtlTSpt=iWDE5ykDO` zM^E3GTM_6o@QdN*0s?LJVYx~mP|AFtUn&Ubcf*^Axd^nweihE$=#PR# zpVN4`_anvQjzphTv^a_sxTQe)x6E$q(-&|OIxtQUyRPT$4)xITv9Gi|pS+Q5 X;5a^=AiS}y)Mx$oKX6>UzbEThZoyoA#Fxj0t^0`%H!gciu>PA{XB>k4cp97Qews@Tz3Y@keMmCeRd;9Te9jiW z>>uq<{L%(#;C#@#6_)e&l`YS{I(T1{_hr4G&kyE7<)ibIrTxm!ZZ^#}1Tnua`8!Xl Mda(<({1-^b2d!~+egFUf literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC World Service.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC World Service.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e70988d6653296968849851f929d878ada253170 GIT binary patch literal 1088 zcmb`Fzi-qq6vur8^_UvQ8&2}T!c=waR9EbXf8k1{8=pi`@YY~lcy*5iH~D^KE{#YIKeT)pNo5# ze{|3fzkm;Gt^bSjUxo^krKKN0&t%|^%6YOhjDaLQH;`(>DC~6Wm9N`W>n#Otd$!2R zgdj%7{YrtJFPqh8Za=aofn(bb^e zIEH4b-*Y$l>(HO9)#P6Vs4ukZudj#w2Bkh5`?tBbWv6+-f1cQlEm*CJeG+>O)>;zQ zO|eJlz$Tp6Aj~#&Z0Jri?l=}B$50Do@ElgkHg!3&4nI0hk^P10@>6HKZ**iOUPZR6 z*vMV|+VPa{AUm?%?fC}i5$d^m{sp%!8`;+f$(Dm3@2^%Yqr#uRaQr!LPGsM9ae=bta% z`F<`J@ZgL@Uw@pxxpsNv#hOIf-uA7(4=%Y{lg;sZJMXyyiOi61{Qg7!@HvU{7sLL` nLs+0*zCY-33G&oLc^38cc(JQin+?kbKX?7!?Z?&la}e?iXB9=3 literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/Pause.bmp b/examples/labs/miniscreen_radio/RadioIcons/Pause.bmp new file mode 100644 index 0000000000000000000000000000000000000000..45a4e151419ba3f00fc1fce65383ce6901281e19 GIT binary patch literal 1088 zcmbVLOK!v<4E1y>b(tfu=%%Y4p&4~QXM&?~6pp}>1;Txp1bZTl)Ql4dkLOQp!|(m} zP9i^;zc2#E4da5R%NzL5?=fTp6En*a-xs72d25!5oW+so!(xQG7!30V2bEU5s*s^< z9VR$Si}KMiXA>a6wqBL**)5N@VC1fU7W2WLXMu*lv-oU$)gSq`f9Id2ep;V_O+BU3ipR?IMT@uE*NN&M=;wgw4{4-emH+?% literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp b/examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d589be4b6495569858199e48c58dd792de7b6ff7 GIT binary patch literal 8254 zcmeHJU2YyB3{3jeW8|@?h^oH#PQ7`GF&@T0EXx!drH}VE ze{0XL_Iz*8>&w?RxAE5JK7DDkJRct)egFE;kC$-*&w4-q0@{c2z|U)|vFDL`srg&R znSbq?z3WMwvAFKtW*lo2;QelW#CPgDl8YIMeTwH!@viIpM(7I9obN5%X+$xB>$)(2 zH`^VTyF!5FPe%3NW;d!W4K7(#ToS_%@y%ehBH)eX{z?N0BrC_2+fX035AmT0f)z_W?i2s z-~`bwe4olju@ul;aRPNiL-_7pCAk!6`otM|XO4QHpwfYWL4BR%Qou?k$A%NYfs1fC zN{l3z0v&qB*-B6l?jOQqk>pZfR@9slr2&u<*-VBA+a+vPAa zJen;rI0pTiuv4;N$g{Ue^|#8)JWnRljg*7HC4)N|1(ciub4hZ5O@$1}^jq1H@@rDU|i#4#Xpj zv>FQ_G22IsYjk-9B&#}9Z+-@ay;dind8*fC4j=IX?3^Z*7RW*!RfOqk-NDCGnw=_% z%rhpE?4uBpbPO|t=KAb-K}${rK=OcK;e}w$hXvFBZ1NJ$Y4*$M)kZ*Tq2J8n5D{? z%6kHDmbo@Y0zpi#_n|Os*L78fiuEJZ!drH}VE ze{0XL_Iz*8>&w?RxAE5JK7DDkJTg8$K3-n``C&)!toQRTpnWJ0{JgdrdmgEmn!jb7 z`PZ)5yPm`ui|gKP#<4~L-tX2&e5bx6xtNjIr+DrZ@4CKkgs$++`QE~vMidjct_uTr zv)ysID+E~nWK<7scB9(T;F49vB{BRE-wakO0^V5euQZTAvT|Ix4fS#R5Fd&lXpu;N zZ*SH0n>YZFe+vB2JM4z2V6z0D)a60#5z#2(3#frqbG4*zpx|8n{(HBdG=P?vb$z0M z6GXf4eJUHpQb2RX3DgY@;k$R0va<0V|mt8%_WRF2dy~ zF_K&gbm$ppD?vfHe+Z97l1qVEQFBU^20%(=GZ`Xq^VtW5QlRCC^MU){oB(NWm&3^L zXtu=Q81!qxPRW8H&)z20-zqQjJef#0QVs%_4DMtUP;v^)CCL#lbuUnWl*r~8pL~5) z>u0M+ya3a|XUZde1>Q5T|9OP}YMx5RWj@ zYAk@nY#%YM(d8A8tm;s``56@UTAhIAsa}^ke8dZ|bDC6IAPaR=5vHqk2Om#qcB&*Y z&zMNEk3vY&G0Y5_>$BqpEjbkc$peCg7lJh(9%wQ_oD!u0kW$!OJB^Jtbf+3sMoXOI zWQ-P>g$eDR+#035mB{ZVxy9v8QlrQsbfxa-!P6H+K(vEuL_)>HnUn`0>bsY+k&@0` z_wKF)*M|u?dJE!Ba%)b29G9vf2g;ytej0p2(98fkVr$f&z!Vau{tTdyJvIiX@wpRl zj1YH5`vxXl!De&(O$i@Nq}4`kkzVsjh6aGSdx?-8D!N#r;)D-HBsXIhYKzpYtyc6+ zg}c&Ek3Silz(Og6om}LxeQ)xrFr7jGZ??`v;*uzqKuNDF>MSfwLLrl} pdn+o>ySkX~LbbcAs5dC2SLiyI%|9oi?zN*oy?#!||5fb-egj}S8-f4; literal 0 HcmV?d00001 diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown_Simple.bmp b/examples/labs/miniscreen_radio/RadioIcons/Unknown_Simple.bmp new file mode 100644 index 0000000000000000000000000000000000000000..da9d9616bcad021106d2c1d7b17869ebe41b4b79 GIT binary patch literal 8254 zcmeH{TXMr73`OI9bs72WDl(n^cTe4UN_gsJNnmgv6VI3+>2i+%w;!Lk>m@$7FusNN zE4=UF-7c?T49_)=ad-*i9!$9blRi zE$sjTA!siTHOJ?G!pyW96OSbtLSA3%a`|Z1wzm}rdT^N+(E-lRQm3<1wgXYp*;rAe z(xL{u_-*qm&Al{1k71!`{P;HLusF5^?1pHF+y0sJ~XZ%8-*K{R*;%!ws}ams-kkVIn* zFejFH_>u-h%}PFL;Cy~=An)-X@$ts$RkO=PTaE#fj3tmUDv!IbnK}^>e_o0`Az*wKfN7*`3)?>*Bj6q$n^H7 z(6vWhT)Y)kk?2h-25QN4HwCJ_S*-T*@wT$*G%9EadcvSWOQSGp9mLdA5R=mC2|3IX rq6rM$LSVL(zI0Nx;pl7 Date: Thu, 5 Aug 2021 14:55:49 +0100 Subject: [PATCH 2/8] Fixed local references Will now correctly find radio icon bitmap folder regardless of location of parent directory --- .../miniscreen_radio/RadioIcons/Unknown.bmp | Bin 8254 -> 8254 bytes .../RadioIcons/Unknown_BlackShaded.bmp | Bin 0 -> 8254 bytes .../RadioIcons/Unknown_Simple.bmp | Bin 8254 -> 0 bytes ...n_Inverted.bmp => Unknown_WhiteShaded.bmp} | Bin examples/labs/miniscreen_radio/pi-topRadio.py | 8 ++++++-- 5 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 examples/labs/miniscreen_radio/RadioIcons/Unknown_BlackShaded.bmp delete mode 100644 examples/labs/miniscreen_radio/RadioIcons/Unknown_Simple.bmp rename examples/labs/miniscreen_radio/RadioIcons/{Unknown_Inverted.bmp => Unknown_WhiteShaded.bmp} (100%) diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp b/examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp index d589be4b6495569858199e48c58dd792de7b6ff7..da9d9616bcad021106d2c1d7b17869ebe41b4b79 100644 GIT binary patch literal 8254 zcmeH{TXMr73`OI9bs72WDl(n^cTe4UN_gsJNnmgv6VI3+>2i+%w;!Lk>m@$7FusNN zE4=UF-7c?T49_)=ad-*i9!$9blRi zE$sjTA!siTHOJ?G!pyW96OSbtLSA3%a`|Z1wzm}rdT^N+(E-lRQm3<1wgXYp*;rAe z(xL{u_-*qm&Al{1k71!`{P;HLusF5^?1pHF+y0sJ~XZ%8-*K{R*;%!ws}ams-kkVIn* zFejFH_>u-h%}PFL;Cy~=An)-X@$ts$RkO=PTaE#fj3tmUDv!IbnK}^>e_o0`Az*wKfN7*`3)?>*Bj6q$n^H7 z(6vWhT)Y)kk?2h-25QN4HwCJ_S*-T*@wT$*G%9EadcvSWOQSGp9mLdA5R=mC2|3IX rq6rM$LSVL(zI0Nx;pl7!drH}VE ze{0XL_Iz*8>&w?RxAE5JK7DDkJRct)egFE;kC$-*&w4-q0@{c2z|U)|vFDL`srg&R znSbq?z3WMwvAFKtW*lo2;QelW#CPgDl8YIMeTwH!@viIpM(7I9obN5%X+$xB>$)(2 zH`^VTyF!5FPe%3NW;d!W4K7(#ToS_%@y%ehBH)eX{z?N0BrC_2+fX035AmT0f)z_W?i2s z-~`bwe4olju@ul;aRPNiL-_7pCAk!6`otM|XO4QHpwfYWL4BR%Qou?k$A%NYfs1fC zN{l3z0v&qB*-B6l?jOQqk>pZfR@9slr2&u<*-VBA+a+vPAa zJen;rI0pTiuv4;N$g{Ue^|#8)JWnRljg*7HC4)N|1(ciub4hZ5O@$1}^jq1H@@rDU|i#4#Xpj zv>FQ_G22IsYjk-9B&#}9Z+-@ay;dind8*fC4j=IX?3^Z*7RW*!RfOqk-NDCGnw=_% z%rhpE?4uBpbPO|t=KAb-K}${rK=OcK;e}w$hXvFBZ1NJ$Y4*$M)kZ*Tq2J8n5D{? z%6kHDmbo@Y0zpi#_n|Os*L78fiuEJZ!drH}VE ze{0XL_Iz*8>&w?RxAE5JK7DDkJRct)egFE;kC$-*&w4-q0@{c2z|U)|vFDL`srg&R znSbq?z3WMwvAFKtW*lo2;QelW#CPgDl8YIMeTwH!@viIpM(7I9obN5%X+$xB>$)(2 zH`^VTyF!5FPe%3NW;d!W4K7(#ToS_%@y%ehBH)eX{z?N0BrC_2+fX035AmT0f)z_W?i2s z-~`bwe4olju@ul;aRPNiL-_7pCAk!6`otM|XO4QHpwfYWL4BR%Qou?k$A%NYfs1fC zN{l3z0v&qB*-B6l?jOQqk>pZfR@9slr2&u<*-VBA+a+vPAa zJen;rI0pTiuv4;N$g{Ue^|#8)JWnRljg*7HC4)N|1(ciub4hZ5O@$1}^jq1H@@rDU|i#4#Xpj zv>FQ_G22IsYjk-9B&#}9Z+-@ay;dind8*fC4j=IX?3^Z*7RW*!RfOqk-NDCGnw=_% z%rhpE?4uBpbPO|t=KAb-K}${rK=OcK;e}w$hXvFBZ1NJ$Y4*$M)kZ*Tq2J8n5D{? z%6kHDmbo@Y0zpi#_n|Os*L78fiuEJZ2i+%w;!Lk>m@$7FusNN zE4=UF-7c?T49_)=ad-*i9!$9blRi zE$sjTA!siTHOJ?G!pyW96OSbtLSA3%a`|Z1wzm}rdT^N+(E-lRQm3<1wgXYp*;rAe z(xL{u_-*qm&Al{1k71!`{P;HLusF5^?1pHF+y0sJ~XZ%8-*K{R*;%!ws}ams-kkVIn* zFejFH_>u-h%}PFL;Cy~=An)-X@$ts$RkO=PTaE#fj3tmUDv!IbnK}^>e_o0`Az*wKfN7*`3)?>*Bj6q$n^H7 z(6vWhT)Y)kk?2h-25QN4HwCJ_S*-T*@wT$*G%9EadcvSWOQSGp9mLdA5R=mC2|3IX rq6rM$LSVL(zI0Nx;pl7 Date: Fri, 6 Aug 2021 01:34:48 +0100 Subject: [PATCH 3/8] Updated m3u links to working ones --- examples/labs/miniscreen_radio/pi-topRadio.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/examples/labs/miniscreen_radio/pi-topRadio.py b/examples/labs/miniscreen_radio/pi-topRadio.py index ea0ee0c37..aea57f8c0 100644 --- a/examples/labs/miniscreen_radio/pi-topRadio.py +++ b/examples/labs/miniscreen_radio/pi-topRadio.py @@ -15,17 +15,17 @@ def __init__(self): self.playlist_id = None self.radio_stations = { - "BBC Radio 1": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_one.m3u8", #"http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radioB1_mf_p", - "BBC Radio 1 Xtra": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1xtra_mf_p", - "BBC Radio 2": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p", - "BBC Radio 3": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p", - "BBC Radio 4": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p", - "BBC Radio 5 live.": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio5live_mf_p", - "BBC Radio 6": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p", - "BBC Asian Network": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_asianet_mf_p", - "BBC World Service UK stream": "http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk", - "BBC Radio Scotland": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_scotlandfm_mf_p", - "BBC Radio Wales": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_walesmw_mf_p", + "BBC Radio 1": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_one.m3u8", + "BBC Radio 1 Xtra": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_1xtra.m3u8", + "BBC Radio 2": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_two.m3u8", + "BBC Radio 3": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_three.m3u8", + "BBC Radio 4": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_fourfm.m3u8", + "BBC Radio 5 live.": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_five_live.m3u8", + "BBC Radio 6": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_6music.m3u8", + "BBC Asian Network": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_asian_network.m3u8", + "BBC World Service UK stream": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_world_service.m3u8", + "BBC Radio Scotland": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_scotland_fm.m3u8", + "BBC Radio Wales": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_wales_fm.m3u8", } #Add radio streams @@ -71,6 +71,7 @@ def debug(self): def current_station_name(self): attempts = 0 radio_station_name = "Unknown" + #self.debug() # print(f"Attempting to get current station name") while radio_station_name == "Unknown" and attempts < 6: From 0a0786f6253361ebd781612eee21f0c777e31f01 Mon Sep 17 00:00:00 2001 From: Wil Bennett Date: Fri, 6 Aug 2021 01:49:39 +0100 Subject: [PATCH 4/8] Fixed bitmap fetch Now finds which bitmap to display in much more reliable way, based on the radio station name given in the 'key' part of radio_stations dictionary, instead of trying to pull the name from the stream metadata. --- ...BBC Radio 1Xtra.bmp => BBC Radio 1 Xtra.bmp} | Bin .../{BBC 6 Music.bmp => BBC Radio 6.bmp} | Bin examples/labs/miniscreen_radio/pi-topRadio.py | 16 +++++++++------- 3 files changed, 9 insertions(+), 7 deletions(-) rename examples/labs/miniscreen_radio/RadioIcons/{BBC Radio 1Xtra.bmp => BBC Radio 1 Xtra.bmp} (100%) rename examples/labs/miniscreen_radio/RadioIcons/{BBC 6 Music.bmp => BBC Radio 6.bmp} (100%) diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1Xtra.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1 Xtra.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1Xtra.bmp rename to examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1 Xtra.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC 6 Music.bmp b/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 6.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC 6 Music.bmp rename to examples/labs/miniscreen_radio/RadioIcons/BBC Radio 6.bmp diff --git a/examples/labs/miniscreen_radio/pi-topRadio.py b/examples/labs/miniscreen_radio/pi-topRadio.py index aea57f8c0..741946f7a 100644 --- a/examples/labs/miniscreen_radio/pi-topRadio.py +++ b/examples/labs/miniscreen_radio/pi-topRadio.py @@ -14,18 +14,19 @@ def __init__(self): self.playlist_id = None + #List of Radio Stations. Note that in this dictionary Keys are used to find bitmap names (name + .bmp), and Values are stream URL self.radio_stations = { "BBC Radio 1": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_one.m3u8", "BBC Radio 1 Xtra": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_1xtra.m3u8", "BBC Radio 2": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_two.m3u8", "BBC Radio 3": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_three.m3u8", - "BBC Radio 4": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_fourfm.m3u8", - "BBC Radio 5 live.": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_five_live.m3u8", + "BBC Radio 4 FM": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_fourfm.m3u8", + "BBC Radio 5 Live": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_five_live.m3u8", "BBC Radio 6": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_6music.m3u8", "BBC Asian Network": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_asian_network.m3u8", - "BBC World Service UK stream": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_world_service.m3u8", - "BBC Radio Scotland": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_scotland_fm.m3u8", - "BBC Radio Wales": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_wales_fm.m3u8", + "BBC World Service": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_world_service.m3u8", + "BBC Radio Scotland FM": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_scotland_fm.m3u8", + "BBC Radio Wales FM": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_wales_fm.m3u8", } #Add radio streams @@ -71,12 +72,13 @@ def debug(self): def current_station_name(self): attempts = 0 radio_station_name = "Unknown" - #self.debug() + radio_names_list = list(self.radio_stations) #create indexed list of all keys from radio_stations dict # print(f"Attempting to get current station name") while radio_station_name == "Unknown" and attempts < 6: try: - radio_station_name = self.get_client_currentsong()['name'] + #radio_station_name = self.get_client_currentsong()['name'] + radio_station_name = radio_names_list[int(self.get_client_currentsong()['pos'])] except KeyError: attempts = attempts + 1 From ab16defb5d4f9be2353f8a3349d16b3cd7f95f42 Mon Sep 17 00:00:00 2001 From: Wil Bennett Date: Fri, 6 Aug 2021 01:50:52 +0100 Subject: [PATCH 5/8] Delete Radio_DEPRECATED-VERSION.py --- .../Radio_DEPRECATED-VERSION.py | 148 ------------------ 1 file changed, 148 deletions(-) delete mode 100644 examples/labs/miniscreen_radio/Radio_DEPRECATED-VERSION.py diff --git a/examples/labs/miniscreen_radio/Radio_DEPRECATED-VERSION.py b/examples/labs/miniscreen_radio/Radio_DEPRECATED-VERSION.py deleted file mode 100644 index 0563b68e3..000000000 --- a/examples/labs/miniscreen_radio/Radio_DEPRECATED-VERSION.py +++ /dev/null @@ -1,148 +0,0 @@ -from mpd import MPDClient -from mpd.base import ConnectionError -from pitop.miniscreen import Miniscreen -from signal import pause -from time import sleep -class StationManager: - def __init__(self): - self._client = MPDClient() - self._client.timeout = 10 # network timeout in seconds (floats allowed), default: None - self._client.idletimeout = None - self.playlist_id = None - self.radio_stations = { - "BBC Radio 1": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p", - "BBC Radio 1 Xtra": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1xtra_mf_p", - "BBC Radio 2": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p", - "BBC Radio 3": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p", - "BBC Radio 4": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p", - "BBC Radio 5 live": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio5live_mf_p", - "BBC Radio 6": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p", - "BBC Asian Network": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_asianet_mf_p", - "BBC World Service UK stream": "http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk", - "BBC Radio Scotland": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_scotlandfm_mf_p", - "BBC Radio Wales": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_walesmw_mf_p", - } - #Add radio streams - self.client.clear() - for radio in self.radio_stations.values(): - self.client.add(radio) - def get_from_client(self, func): - attempts = 0 - thing = None - while thing is None and attempts < 6: - try: - thing = func() - except (ConnectionError, KeyError): - attempts = attempts + 1 - sleep(0.5) - if attempts != 0: - print(f"Took {attempts+1} attempts to get thing") - return thing - def get_client_currentsong(self): - return self.get_from_client(self.client.currentsong) - def get_client_status(self): - return self.get_from_client(self.client.status) - def get_client_stats(self): - return self.get_from_client(self.client.stats) - def get_client_playlistid(self): - return self.get_from_client(self.client.playlistid) - def debug(self): - print(f"currentsong: {self.get_client_currentsong()}") - print(f"status: {self.get_client_status()}") - print(f"stats: {self.get_client_stats()}") - print(f"playlistid: {self.get_client_playlistid()}") - @property - def current_station_name(self): - attempts = 0 - radio_station_name = "Unknown" - # print(f"Attempting to get current station name") - while radio_station_name == "Unknown" and attempts < 6: - try: - radio_station_name = self.get_client_currentsong()['name'] - except KeyError: - attempts = attempts + 1 - sleep(0.5) - if attempts != 0: - print(f"Took {attempts+1} attempts to get current station name") - return radio_station_name - def client_status(self): - try: - return self.get_client_status() - except ConnectionError as e: - print(e) - @property - def current_station_no(self): - try: - return int(self.get_client_status()['song']) - except ConnectionError as e: - print(e) - @property - def no_of_stations(self): - return int(self.get_client_status()['playlistlength']) - def next(self): - if self.current_station_no == self.no_of_stations-1: - print("End of playlist - going to start") - self.client.play(0) - else: - self.client.next() - def previous(self): - if self.current_station_no == 0: - print("Start of playlist - going to end") - self.client.play(self.no_of_stations-1) - else: - self.client.previous() - def toggle(self): - if self.get_client_status()['state'] == 'stop:' - print("Stopping playback...") - else: - print("Starting playback...") - self.client.pause() - def play(self): - try: - self.client.play(self.current_station_no) - except KeyError: - self.client.play(0) - def exit(self): - self.client.stop() - self.client.close() - self.client.disconnect() - @property - def client(self): - try: - self._client.connect("localhost", 6600) - except ConnectionError as e: - # print(e) - pass - return self._client -miniscreen = Miniscreen() -station_manager = StationManager() -def display_station(): - print(f"Playing station: {station_manager.current_station_name}") - image_file_path = "./Desktop/" + station_manager.current_station_name + ".bmp" - try: - miniscreen.display_image_file(image_file_path) - except: - print("Couldn't find image file for '" + image_file_path + "'") - miniscreen.display_multiline_text(station_manager.current_station_name, font_size=15) -def prev_station(): - miniscreen.display_multiline_text("Loading...", font_size=15) - station_manager.previous() - display_station() -def next_station(): - miniscreen.display_multiline_text("Loading...", font_size=15) - station_manager.next() - display_station() -def exit_radio(): - print("Exiting") - miniscreen.display_multiline_text("Exiting...", font_size=15) - station_manager.exit() -def main(): - miniscreen.display_multiline_text("Loading...", font_size=15) - miniscreen.up_button.when_pressed = prev_station - miniscreen.down_button.when_pressed = next_station - miniscreen.select_button.when_pressed = station_manager.toggle - miniscreen.cancel_button.when_pressed = exit_radio - station_manager.play() - display_station() - pause() -main() \ No newline at end of file From f11a680b550828de9291d6bfefd1ecb672619a94 Mon Sep 17 00:00:00 2001 From: Wil Bennett Date: Fri, 6 Aug 2021 02:07:44 +0100 Subject: [PATCH 6/8] Added some notes These need to be changed to a proper readme file --- examples/labs/miniscreen_radio/notes.txt | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/labs/miniscreen_radio/notes.txt diff --git a/examples/labs/miniscreen_radio/notes.txt b/examples/labs/miniscreen_radio/notes.txt new file mode 100644 index 000000000..31b1aeb5e --- /dev/null +++ b/examples/labs/miniscreen_radio/notes.txt @@ -0,0 +1,34 @@ + +Full Installation Instructions: + +Run the following terminal commands +sudo apt-get update +sudo apt-get install mpd mpc +pip3 install python-mpd2 + +In this file + sudo nano /etc/mpd.conf +Find the audio_output section, and change it to look like this: + +audio_output { + type "alsa" + name "My ALSA Device" + device "hw:1" # optional +# mixer_type "hardware" # optional +# mixer_device "default" # optional +# mixer_control "PCM" # optional +# mixer_index "0" # optional +} + + +Useful terminal commands: +Check on the general status of the media player client with’ mpc status’ +And in the (currently very likely) event that you can’t stop the music after killing python script, use ‘mpc stop’ +If you fuck up the OLED in code, you can fix things by restarting first the device manager service, and then the OLED service: +sudo systemctl restart pt-device-manager.service +sudo systemctl restart pt-sys-oled.service + +Other notes: +Find new m3u (or m3u8) feeds at http://www.radiofeeds.co.uk/default.asp +Streams in AAC/AAC+ (HLS) format seem to work well +Click on the station you want, then copy the link for e.g. the BBC asian network on the page (http://lsn.to/BAN), right click on quality you want e.g. ‘96K Stereo’ and paste link into radio_stations list in pi-topRadio.py \ No newline at end of file From 6edbb8c51bca81bce0328dcb946208ad324b8e8f Mon Sep 17 00:00:00 2001 From: Ryan Dunwoody Date: Fri, 6 Aug 2021 19:13:11 +0800 Subject: [PATCH 7/8] Small refactor --- .../BBC Asian Network.bmp | Bin .../BBC Radio 1 Xtra.bmp | Bin .../{RadioIcons => icons}/BBC Radio 1.bmp | Bin .../{RadioIcons => icons}/BBC Radio 2.bmp | Bin .../{RadioIcons => icons}/BBC Radio 3.bmp | Bin .../{RadioIcons => icons}/BBC Radio 4 FM.bmp | Bin .../BBC Radio 5 Live.bmp | Bin .../{RadioIcons => icons}/BBC Radio 6.bmp | Bin .../BBC Radio Scotland FM.bmp | Bin .../BBC Radio Wales FM.bmp | Bin .../BBC World Service.bmp | Bin .../{RadioIcons => icons}/Pause.bmp | Bin .../{RadioIcons => icons}/Unknown.bmp | Bin .../Unknown_BlackShaded.bmp | Bin .../Unknown_WhiteShaded.bmp | Bin examples/labs/miniscreen_radio/pi-topRadio.py | 117 +++++++----------- 16 files changed, 47 insertions(+), 70 deletions(-) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Asian Network.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 1 Xtra.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 1.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 2.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 3.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 4 FM.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 5 Live.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio 6.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio Scotland FM.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC Radio Wales FM.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/BBC World Service.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/Pause.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/Unknown.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/Unknown_BlackShaded.bmp (100%) rename examples/labs/miniscreen_radio/{RadioIcons => icons}/Unknown_WhiteShaded.bmp (100%) diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Asian Network.bmp b/examples/labs/miniscreen_radio/icons/BBC Asian Network.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Asian Network.bmp rename to examples/labs/miniscreen_radio/icons/BBC Asian Network.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1 Xtra.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 1 Xtra.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1 Xtra.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 1 Xtra.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 1.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 1.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 1.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 2.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 2.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 2.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 2.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 3.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 3.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 3.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 3.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 4 FM.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 4 FM.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 4 FM.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 4 FM.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 5 Live.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 5 Live.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 5 Live.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 5 Live.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio 6.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio 6.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio 6.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio 6.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio Scotland FM.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio Scotland FM.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio Scotland FM.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio Scotland FM.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC Radio Wales FM.bmp b/examples/labs/miniscreen_radio/icons/BBC Radio Wales FM.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC Radio Wales FM.bmp rename to examples/labs/miniscreen_radio/icons/BBC Radio Wales FM.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/BBC World Service.bmp b/examples/labs/miniscreen_radio/icons/BBC World Service.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/BBC World Service.bmp rename to examples/labs/miniscreen_radio/icons/BBC World Service.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/Pause.bmp b/examples/labs/miniscreen_radio/icons/Pause.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/Pause.bmp rename to examples/labs/miniscreen_radio/icons/Pause.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp b/examples/labs/miniscreen_radio/icons/Unknown.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/Unknown.bmp rename to examples/labs/miniscreen_radio/icons/Unknown.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown_BlackShaded.bmp b/examples/labs/miniscreen_radio/icons/Unknown_BlackShaded.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/Unknown_BlackShaded.bmp rename to examples/labs/miniscreen_radio/icons/Unknown_BlackShaded.bmp diff --git a/examples/labs/miniscreen_radio/RadioIcons/Unknown_WhiteShaded.bmp b/examples/labs/miniscreen_radio/icons/Unknown_WhiteShaded.bmp similarity index 100% rename from examples/labs/miniscreen_radio/RadioIcons/Unknown_WhiteShaded.bmp rename to examples/labs/miniscreen_radio/icons/Unknown_WhiteShaded.bmp diff --git a/examples/labs/miniscreen_radio/pi-topRadio.py b/examples/labs/miniscreen_radio/pi-topRadio.py index 741946f7a..cdc2365f2 100644 --- a/examples/labs/miniscreen_radio/pi-topRadio.py +++ b/examples/labs/miniscreen_radio/pi-topRadio.py @@ -4,17 +4,19 @@ from signal import pause from time import sleep import os +import sys class StationManager: def __init__(self): self._client = MPDClient() - self._client.timeout = 10 # network timeout in seconds (floats allowed), default: None - self._client.idletimeout = None + self._client.timeout = 10 # network timeout in seconds (floats allowed), default: None + self._client.idle_timeout = None self.playlist_id = None - #List of Radio Stations. Note that in this dictionary Keys are used to find bitmap names (name + .bmp), and Values are stream URL + # List of Radio Stations. Note that in this dictionary Keys are used to find bitmap names (name + .bmp), + # and Values are stream URL self.radio_stations = { "BBC Radio 1": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_one.m3u8", "BBC Radio 1 Xtra": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_1xtra.m3u8", @@ -29,111 +31,87 @@ def __init__(self): "BBC Radio Wales FM": "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_radio_wales_fm.m3u8", } - #Add radio streams + # Add radio streams self.client.clear() for radio in self.radio_stations.values(): self.client.add(radio) - def get_from_client(self, func): + @staticmethod + def _get_data_from_client(client_function): attempts = 0 thing = None while thing is None and attempts < 6: try: - thing = func() + thing = client_function() except (ConnectionError, KeyError): - attempts = attempts + 1 + attempts += 1 sleep(0.5) if attempts != 0: - print(f"Took {attempts+1} attempts to get thing") + print(f"Took {attempts + 1} attempts to get thing") return thing - def get_client_currentsong(self): - return self.get_from_client(self.client.currentsong) + def get_client_current_song(self): + return self._get_data_from_client(self.client.currentsong) def get_client_status(self): - return self.get_from_client(self.client.status) + return self._get_data_from_client(self.client.status) def get_client_stats(self): - return self.get_from_client(self.client.stats) + return self._get_data_from_client(self.client.stats) - def get_client_playlistid(self): - return self.get_from_client(self.client.playlistid) + def get_client_playlist_id(self): + return self._get_data_from_client(self.client.playlistid) def debug(self): - print(f"currentsong: {self.get_client_currentsong()}") + print(f"currentsong: {self.get_client_current_song()}") print(f"status: {self.get_client_status()}") print(f"stats: {self.get_client_stats()}") - print(f"playlistid: {self.get_client_playlistid()}") + print(f"playlistid: {self.get_client_playlist_id()}") @property def current_station_name(self): - attempts = 0 - radio_station_name = "Unknown" - radio_names_list = list(self.radio_stations) #create indexed list of all keys from radio_stations dict - # print(f"Attempting to get current station name") - - while radio_station_name == "Unknown" and attempts < 6: - try: - #radio_station_name = self.get_client_currentsong()['name'] - radio_station_name = radio_names_list[int(self.get_client_currentsong()['pos'])] - - except KeyError: - attempts = attempts + 1 - sleep(0.5) - - if attempts != 0: - print(f"Took {attempts+1} attempts to get current station name") - return radio_station_name - - def client_status(self): - try: - return self.get_client_status() - except ConnectionError as e: - print(e) + radio_names_list = list(self.radio_stations) # create indexed list of all keys from radio_stations dict + return radio_names_list[int(self.get_client_current_song()['pos'])] @property - def current_station_no(self): - try: - return int(self.get_client_status()['song']) - except ConnectionError as e: - print(e) + def current_station_number(self): + return int(self.get_client_status()["song"]) @property - def no_of_stations(self): - return int(self.get_client_status()['playlistlength']) + def number_of_stations(self): + return int(self.get_client_status()["playlistlength"]) def next(self): - if self.current_station_no == self.no_of_stations-1: + if self.current_station_number == self.number_of_stations - 1: print("End of playlist - going to start") self.client.play(0) else: self.client.next() def previous(self): - if self.current_station_no == 0: + if self.current_station_number == 0: print("Start of playlist - going to end") - self.client.play(self.no_of_stations-1) + self.client.play(self.number_of_stations - 1) else: self.client.previous() - def toggle(self): - - if self.get_client_status()['state'] == 'pause': + def toggle_play(self): + if self.get_client_status()["state"] == "pause": print("Starting playback...") - play_pause_state = 'playing' + play_pause_state = "playing" else: print("Stopping playback...") - play_pause_state = 'stopped' + play_pause_state = "stopped" - self.client.pause() + self.client.pause() # This client function actually toggles return play_pause_state def play(self): try: - self.client.play(self.current_station_no) + self.client.play(self.current_station_number) except KeyError: self.client.play(0) @@ -147,20 +125,15 @@ def client(self): try: self._client.connect("localhost", 6600) except ConnectionError as e: - # print(e) pass return self._client -miniscreen = Miniscreen() -station_manager = StationManager() - - def display_station(): print(f"Playing station: {station_manager.current_station_name}") - #image_file_path = os.path.dirname(__file__) - image_file_path = os.path.join(os.path.dirname(__file__), 'RadioIcons/') + station_manager.current_station_name + ".bmp" + image_file_path = os.path.join(os.path.dirname(__file__), + "icons/") + station_manager.current_station_name + ".bmp" try: miniscreen.display_image_file(image_file_path) except: @@ -181,30 +154,30 @@ def next_station(): def toggle_play(): - if station_manager.toggle() == 'stopped': - image_file_path = os.path.join(os.path.dirname(__file__),'RadioIcons/') + "Pause.bmp" + if station_manager.toggle_play() == "stopped": + image_file_path = os.path.join(os.path.dirname(__file__), "icons/") + "Pause.bmp" try: - miniscreen.display_image_file(image_file_path) + miniscreen.display_image_file(image_file_path) except: print("Couldn't find image file for '" + image_file_path + "'") miniscreen.display_multiline_text("Paused", font_size=15) else: display_station() + def exit_radio(): print("Exiting") miniscreen.display_multiline_text("Exiting...", font_size=15) station_manager.exit() + sys.exit() def main(): - #print(os.getcwd()) - #print(__file__) miniscreen.display_multiline_text("Loading...", font_size=15) miniscreen.up_button.when_pressed = prev_station miniscreen.down_button.when_pressed = next_station - miniscreen.select_button.when_pressed = toggle_play #station_manager.toggle + miniscreen.select_button.when_pressed = toggle_play miniscreen.cancel_button.when_pressed = exit_radio station_manager.play() @@ -212,4 +185,8 @@ def main(): pause() -main() \ No newline at end of file + +if __name__ == "__main__": + miniscreen = Miniscreen() + station_manager = StationManager() + main() From 0c468b63e06f978fd7a8cf100362467e214a0780 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Aug 2021 11:00:55 +0000 Subject: [PATCH 8/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- examples/labs/miniscreen_radio/notes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/labs/miniscreen_radio/notes.txt b/examples/labs/miniscreen_radio/notes.txt index 31b1aeb5e..15694ba16 100644 --- a/examples/labs/miniscreen_radio/notes.txt +++ b/examples/labs/miniscreen_radio/notes.txt @@ -31,4 +31,4 @@ sudo systemctl restart pt-sys-oled.service Other notes: Find new m3u (or m3u8) feeds at http://www.radiofeeds.co.uk/default.asp Streams in AAC/AAC+ (HLS) format seem to work well -Click on the station you want, then copy the link for e.g. the BBC asian network on the page (http://lsn.to/BAN), right click on quality you want e.g. ‘96K Stereo’ and paste link into radio_stations list in pi-topRadio.py \ No newline at end of file +Click on the station you want, then copy the link for e.g. the BBC asian network on the page (http://lsn.to/BAN), right click on quality you want e.g. ‘96K Stereo’ and paste link into radio_stations list in pi-topRadio.py