From 768cfa72d049da34f60e599cf133a4b2c5a27b45 Mon Sep 17 00:00:00 2001 From: Neythen Date: Tue, 3 Aug 2021 19:44:16 +0100 Subject: [PATCH] professional diaplay update --- csv/last_updates.json | 1 - display_images/crypto_prof.ppm | Bin 0 -> 40910 bytes display_images/forex_prof.ppm | Bin 0 -> 90062 bytes display_images/future_games.ppm | Bin 0 -> 10286 bytes display_images/live_games.ppm | Bin 0 -> 26414 bytes display_images/past_games.ppm | Bin 0 -> 242223 bytes display_images/stocks_prof.ppm | Bin 0 -> 38702 bytes display_images/today_weather_prof.ppm | Bin 0 -> 28094 bytes .../__MACOSX/._sports_team_stats.png | Bin 0 -> 233 bytes feature_titles/sports_future.png | Bin 0 -> 404 bytes feature_titles/sports_live.png | Bin 0 -> 343 bytes feature_titles/sports_past.png | Bin 0 -> 408 bytes feature_titles/sports_team_stats.png | Bin 0 -> 486 bytes stockTicker.py | 131 ++++++++++++++++-- 14 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 display_images/crypto_prof.ppm create mode 100644 display_images/forex_prof.ppm create mode 100644 display_images/future_games.ppm create mode 100644 display_images/live_games.ppm create mode 100644 display_images/past_games.ppm create mode 100644 display_images/stocks_prof.ppm create mode 100644 display_images/today_weather_prof.ppm create mode 100644 feature_titles/__MACOSX/._sports_team_stats.png create mode 100644 feature_titles/sports_future.png create mode 100644 feature_titles/sports_live.png create mode 100644 feature_titles/sports_past.png create mode 100644 feature_titles/sports_team_stats.png diff --git a/csv/last_updates.json b/csv/last_updates.json index 8cb7894..e69de29 100644 --- a/csv/last_updates.json +++ b/csv/last_updates.json @@ -1 +0,0 @@ -{"stocks": "03/08/2021 13:14:11", "crypto": "03/08/2021 13:14:13", "news": "03/08/2021 13:14:15", "weather": "03/08/2021 13:14:14", "forex": "03/08/2021 19:14:18", "sports": "03/08/2021 13:14:16"} \ No newline at end of file diff --git a/display_images/crypto_prof.ppm b/display_images/crypto_prof.ppm new file mode 100644 index 0000000000000000000000000000000000000000..da09d89b08f747ba7f3bcabe58b1d08811070df9 GIT binary patch literal 40910 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 literal 0 HcmV?d00001 diff --git a/display_images/forex_prof.ppm b/display_images/forex_prof.ppm new file mode 100644 index 0000000000000000000000000000000000000000..27248b70b7247976500cff48c72e2204844614e9 GIT binary patch literal 90062 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 literal 0 HcmV?d00001 diff --git a/display_images/past_games.ppm b/display_images/past_games.ppm new file mode 100644 index 0000000000000000000000000000000000000000..91336286fba6ca3449038c07914abd9c88d80aab GIT binary patch literal 242223 zcmeEP1$-1o7Z2|48mv(GT3idk-QC^YAvl5H?rsHw2X}Yc#zP1W!QI`z|7DWb$L!wT z<;ZRBO7?eM{!i!4o1NJ$kJ+tVIBxzz`3qz!kRN{*it7-0gm(t62W$@t*na%*(m<~b zO5c}#H=jPX;-ZiH^|RY=1nyQUNStrM2WNsoq_&jQ2x!}q8i3?kBDtnE_Dx&dD?vWb zczJR5%Tg{NU+r@R>YmM6)jMfn12bMeufzqlJ?J16y~Ekd%WK@YaV=W3s93RL@!+F! z<;tyEwVEshJ;=GH>9Jxwe$l2x!}q8UXh!Fz0YhWBB!(H@^O7mo8s1dhEE7 zqg^fdjhi_6FApzc{=20=aSRTu(nj0 zVarBVw4!WF>0g6GPQrcF(rENYM2Rb{k6vm`)RJ!aMF~E05Tn$Zq?Oi($-gpz;E)Gx zDX9_Awk0)yuzKdU97oPd%7%7IwWZ{Qfc`_tn-sX-R=wV|M@n0&>=g8gsk9}L0AW&=Y=4}5{N&m8y~karF1O%!`ftDM z_is<$xa3TLSK72`9iqi@NRZwkW&%T0u@XBZ$mkFyibLEK4hbFq{l!jdkVcE?5I?Ph zz#yZ?aY&faaK;fQg+u&w2B6Ck?sq8VaBGh*mnwVArAp6|ewdUcTOz~#8HPNE3kcuE zN|{pa9CE3$J6x*tEa`_yS+dpV)+RNo4{49fk#elH2bW8gS>;ltXGx!wg{Db;$y_4I ziB)g4Qll1-`dt6YWP(G{YD-CtfVM5E2@ob_$(EDhyIOM3;fSq$$I%`sZK<-GVH%n+ zDJ$Dj<%Ihai)t%B$P`({*{UmvXoZKWop3JYRswUW(zB#b%0knmzGVJ`q&?mxf3VBk z+}cw>Ihr)w2t!-S;}lriR?_FnqAf|m0@B(GtOX%OnuJRRg3fI}uy5htC;ptiaH#v1 z8OD6>-7|mg(vc^QEZehtUQoa`V`|{jNfhxhTSiZdpzHHb~#gv45WLId*r#qVuI&cqcC8nINArKUU?V zYdBuNem#Et_<{usrb&|~Yu2m{8#Wj^bO^|@Wy=g2G^kFU+K!Hn5TQald-iN73oDa> zK~3mLK#&p>n&1#q>0F5TS*fGZoH1opK1yS&+}32vo+Ez3M9EX8N|`#X>MvEAv{^Ex zQ;JfjO`kYPvP_w?_y+{4`u}lexX(2n5{-fcq~vocVeUs@Zl$3HWs-70Sn1guj$KSc zbVQ#^j*=+>K}t+9BE(c?n_Fq92|vPIQjwDHj%srzJ*)bOoRvH+G%ga5hJ#B9b3X!eD-AU$lT-pkDxGU^V1>h$XJw2SG4NE= zyLa!26DQ)qrb?A6*|KHhl~&-WQKQC-7mt|u%e@R4GL$Y|8dmtXY6AugaB^~r8`rFV z$%$<65ut<&zN(a%$~-3AC-0En4*%L)lzdIp_`!9j-UDB4U$(ASEU=!6Bxy zQ$obgN*&@D92seybgT!^wEND(>GRiiNM93vw!b}b+ z^BKyr(PKNL%NdCJ+x{?kl^ExE`)gfj=gC;m=F>WdY#*rk4L)t$a zqC_(orY_=;D63#w^=yqhl(C@{d{rqim7V2Q8fwB23Z$b1O6N+BHJ)LVtys(n_r*$? zCBflmM9b9(D|^AMG}MG46i7!2l+MA?`PQZygSDARh21Sj%Hb0nen#H78ewHVxs`^R zFoc3qN6AsPqT~d7(&JXEY}!nY&euPsQ38ULnCJpH#8mc3i1=BlLmY!6#UlYp%>?1T zTAJBznACK*<0vyJIQ)#5xf)?*U$~WqnlOX{=@3x*G@oOQCl>QtH&ZjX(|W8Vlu`)@ zQeq-_aEPhwixBa%QinJOM?XA6$y-%TtU`@slsbHlH+&H(>earMI^9PTZ+WYXq#pgU#w#SO5&w8xiy=yMi zR;(F6fB7iwnyfIP>ren9B`HWrBow$Bc>oZY>quBA1S^_WCR?u*g|PMYT)}z|muz^p z_28ApeY}$u@k&(CD?xtjjrISfqGy~uh97ha*MBf)H7c`L8us!|Qphu5esZD%5dB)b zcyZ30IWuO=IBeK3FE5WzpFVv1_65J%wQFPlh`{gPzdLj06t;?_PoF+--n{Pa?!wm0 zAfYTY1t5|$l~{7lZGpuh=}07WzzNk2i9ym)lF;9G;LtDGb0kTY9L3fcF${l6D~>{0 zW7jGeFJ+?Wf~=f3-k63-LWTeS89zY+7?vqp{?)73O8-C3vFcpo;fVx-Lzz^Sk^+|! z=C;7%AgL;V4*2}6s;14fmuV<^s`Di$a%(KfBqasaRPzA>7Kf@PF`*-{Im%?kfiToz z)#8m>j1yH{AFbpX6k99yIaF`xaRB`0xnJxs;jiLd_5rWicfHP_WAQ4i2VQ?LNC225 zsc7zQS)NkFNu-FGlN?Ju5+XVS2rQ{_k}Gh`b(A=ARw{Es97>}AL<$8?a!lr2jXVGd zEU9sl6a*lW>u6(`;IPeE86`@T!i5XFxVX5wx?-d=%<;$0M@80$C@!7a>BVHH+6ZnZ9J$j)+g;2~LGiFTL zvSq1mYce@P0Vx6yXENa=$E2XNg_<}d9f^dF(pJ(jM(XyAVJrY`zUaQr*PC`eNs7oh zmO3ItbOsPuQX`V2NQK%|I` zlN?Ktb6a3>NIIN^0+AZZ5q@i-!$~LzGF11wQRbSe*s80gYKviI>VL=K zDMhqIipV+1vD7aiqBDTNk{XdD4OTRvOjb&u!xM|LQ42Vtn>w!~JjsZeND)6LIhJ}S zM05raSW+XBq``_Nl*uYwfL-4uEzW@cQ-BXK!X{F5fs-6d9TXxu0|+ds5lK=3h$ICw zf&L4unSuR;YTrthwD_lyF7GpL4SF@)wry7Vc2%b?7>ZXG8&mc;wR-lF5smvanmE_F zm2>l5yXG3x6nuWwDX&8=g}y{`&)k;O2yjiQUD6?-R3;Aok%mvoVz-7)d+NUTT%r2d z{p#mf#y@+-7Y9!IrZ4sQ&&?0!uknnV7X{g%E+YerH9{TMCw1|=;}$$wyE7n9EzkIQ z$(2eQ(R4<7XJ;eAnir86(c67%NGpe|iHW4CO_jve2;d1FpOxQ@U| z4)v6ah$#TKB{c$)GDxLJ$x&Jf!#VR7#Elm}Rho2o;OED%+KJz<$aHaPy1}&)H7_3j z`4Yz$OB~ZDiykXR)Y3U)<1CaDB~F4JvVHmuFtbI~Ff^Ffn`^vL9=yOx4(W3dF$LhZ zq((qe21z0SI+SYK9DA9Dq8I3lL0|Blnuu`PtD6KdL`ueO| zyitpBtkP@5u2>XX+l)K2V%OE~(>#D%jye5D=Y4o)QT&C@}?yT8y9t%J|TYm_=Z|)nqncfRP2*Yk;kw-76&S@$$vAH zT*VPBwqbj0irfyV3WmI+IBrUZG({X@Co^cKE*xB$jS`}4g+Fw-Ltz9daDkN^Nr6ZX zxGi}gz%>OXkrF7CiKD|a47Fu3u-;-txk79LD>)Q47ZFncZcAzeBxR5!QUb0Vv9~rJ zi4NF)mm?ZP8d)WW639iw6hMghnH)-*T%SZ5o=HanFwy^3E5)EeM(p*^^C=AqV&+mM z$veeu$%+8i6qrOxpj1|JthZV!+p>V8{~d?Yh-d{?a;PI*L`(s=EvXTZltGe636#pl zI66GB7;8FAeDqQOm4p(DPz6?Us25yBOaZtpsS%KrK`KQ`j?yYzIQDy&w7C2FPXRuf z0xLPx9WElK0Nj?;2uR8xNd!QLQcatq{{pKW&rd70xDG2BswQyJpRVIee}l9&WYhjV}>Qp1C)vT#dI2vBnp@JyJ` zKU;;ztG3?gG1@C(0k6b`P=S54Y?F8LqCuTU_+>8lXz9j>3)gwZ$&KRdlXW}qjGBXL z?Dh6T{Bu-BarW8vLzk*|)S)Jej@-Y0AFm+(_19ldo;*(VRt{7PvO;0!&K>wWNxbpz z*|TTbIgzA-Bqjk$Bj*51B-8|l_#6->HQ|={1gJSx0JYZb+M}qNBx!P9jRjuZA^F1v z8U2Q)_v`F&3zC=w$b@r%B@$|aLwpVhlNz~I<#4GgwwGy0!6O5@U2;6zlwM*I;IVPc6$IvI zawvdOS-2uT0ct`6Kv|zvOCtvJMbU%55}UKx4pd+b1=+D@3bfswyXDS-bG^r|INNuY zSC`3u;|DN)WkApA9@!dgLrpe&lkHGmwC(cX`9ApIY^>62HCmLiCrDxvAP<}aERj$X z9O838nAFIvDu+u2j+~XsoDhen7feAClYpu|q+CH@ekO+kD3v9*T!BQ!0F-TfRyJ$a z48iBim+$iB%iFevd?Nz|Rw~HiVMf_I6lAesHbH{mPhL7WJbChD@ZiCCUcy_8{r&xO z-8@i`zYyh$Y4Qd?F6Xm`_&!?7}#v!Ebbs&4n^FJC#fEnjy`_iELv z8+O8?mWoO%imKQNi~X=Dvx);`nxYQz(ikX6u@e^6SiGYcMO##C@tR_kaiNbhw#}w< za)^~E#Lx6&$4-|c)sZD80m>og081p)1c&$> z5EkAz$uYI14Pc`GtyViENg9FIzm!iw5|aQ0%sIdk2{pkXJ_m$_HzJjQn$rMQS}iqN zG+(6u9fxu#f)pe%2~Za}2UsGZCOE|BfG}^1OgInJ*sOBL8a2Dt zHulzHT#a;)6L173k&?p|$Pj=u1vW++^UPf-v0-KSr2@*VmuhtO|F!a+F>?d*)kYom zj?1ioJT-k%6-Rv*rC9O4VvvEw8$h$9FEVP_0N?n7dDB!efyTDkq4NHWKMH2PhLuv{h-d}LBL{~_NyjloE$4@V=0( z@MDZ5Kcqk$?oGmxvrZGTpZzqPAW zsnX}qpWnTEmnBOU^b4;q4pTw);lqbbn>K|Z?($o=ZiP88-fygtBJK1lrNj|F10-q`;g5E0APs66o-ZVKN3)1@uDy>rFeKN-1$f7X-<>0}hdrRFx!sNlH$v0p7fQ zU%7E_3#zeEGnASzd*!;LJ7d+&xBH(X_yn`z?Zl|1#!qV~uqMuG*dB|o!HNU5*A#gT zAC|>|Vk_#fv6C3SFq$hJ6BoRndulsH0JG6a)s1vW{Ng3=Ym6YjuH?~)eh zLH{WrMpGJ7X{@=F^hF=Jh&a@JNvcYM$@K}F1N2{D&57#g)cLLgD@Gb;dVR5kg#x6~ z5vnic@Or>D>~-xkrgO#i)p&JP`jYHfk9A~t_`ssRV>;tYvc;N}yK!zi@$D3NB`@fm zvKThQUas90C0DsMR)5mI zR;@(k)}oM_vc@LtbW}KJA}e&3E*k>9u;_^*?uCo3=J^z#OlC0w0U6 zZ8>&xlH0j*y$%jp;8UsZ;aFwYiG8)@dLG0+*~I1ky>IHD{2y;Ia#sF$4sFnbz0As% zEn6acD9GNtdGpYrL;d^r2RUlgC@RRdYu64sJ$m%OBMs$Q+95k{-aKDlU%d1f3d@%- zU%h%YK!pkwNdLbCZ1WkzUaq(Q#+9)9z=`ZacPZh;|-f-l1+ z`NdFmMG+PyS8Q~Rn<^wl(c?Iv3B1i12P&=DLW|w9IAcp}LPrBL8Qx}G!0>HZRBZXa zT7xV+4?Dd>g=Y%B_hm=VFt)i^eV}4g5)-R8+A_8UvyT z8(Mgk)fk`0E&kb6&(R&7T2`cj?5cGW_U~Q5)s7unvSQ76!P&KIP7jw3LnrmD-lZ0q zaAo_#*wcD%@{$|fN2C0Dz1?8n45cnsYKLkpDy=B6V%zM+D($@zfN#P zpYJ|;wON0!`1!7P8i4}ttszqa|7d)!V7*tTy?xU;c_%3l?n%JNFIln#Us9VjYeu?s z>42#S+kC;X{|(uq@$0?%FH#;hY#9FO`^1S8QIp-je?Q!Yd#DlO5FME_Zy{bdOa)og zSTiJxzO-ZV+mkb2YLgvB*r`sbM;A>w)hX5T@@dypO7Bu6g=^82*T!b>pO9`^^Q6fV z$4QzzMfaZ8s#8bKHH{0yUZx@Mg6&^&JlY7s_O)t7E9sV{!M1J3Zxw8}2bI}gGdwHz zJ-q&4(3dY?(Gfa6eg3-V%$;7-JucpOaqimlou_U?Ve*>5hQm%Y8F>cchVQ^)-zzZo$%-RUX2ZT$lx1-w z&hC)9h@l#b?Xl@g8TQ74FN&~ul`(e6rp9+>t@ZU-d%Q!1U85Y^= zPjYMf*_I=Dn02S^s%X{x-W>+R+^+9EZbVSN8J6VlOL+#RFkGhCka~(q5*3 zja(u2wZP(HRvwf|rATl{K>|vBNdcr%NAhV*f%C~NXA=Hb$_lB58Y>RL5rCh$l&naf zIKh7(MgH$xI=pD5D?T7wsB!6&N0x!V(S3Tqv0b)ppG7(Vd-u%mIjZCAB_n`Wt(#c0 zTb-I+>x`P-H^|O+$a*ErcdkhNryKX2{k;ZWR*a(RtwEFhvsb**px1*rt5J%@PFO=J zHf~;@G){hwW$+Pdkf_5#|MrNPcSg<%$X)Z6^Q23)x|}OqA2r;oEeC>+1&3$v$1#TS z`Sa&^)$pJ}gHT!>FrYtP-}m6beNkpj+{G{|~_~p-^A8!JL^B<2e!ablDt=qOwoHSX2go(s<*QimW6wDIqAJ;TK1G5Y(l5$AF zr5g)cC>26Ewe^!ZjD=h-Oz=;t;e3O(EHFK&wKYCzkTugd zvgjJhvZI#z;XTH0-+u;)qn7hgytTM|??a7;pP1`@5#N)IQ*K@C()L=DjhvMjQ=O-b z4$Yxc_A)Emwrz`qh=MG(xZ>r**x8DIQARst&H08bJS0w>c>DJ4s6mT;vf$LMTUUov z>)(V8K4aL?^``%Lg>Q>U_0wlBlH{xsHACs7|ErcVcTMwuY4X&#cmL6VB@;8XF8Aog zQ$t|!(i*C+;)kND*bi$EL^14sP5g@iqV|ftu_(gg!2a1(1s!6*+Nz<4b`P5J# zk(uFzlwYZwO7?;ykzk60>k|$IQg^)0xHah2;I}$|44vEyBIgO+TMTF>>40oKs70GW zEdX3+_Wxg*gz9RL74WpD|;`hYt-!*cUIJ<;am^ z%9P2$W!A4K$j0xu`q?7)JFP~%J>_$|ejJAKK3N6TX>Cz>4?%Z$RzJ}rT z>(|n!Prq^FMmRSXiBbR#XG)|oKb-%~%|ZMG6PN>u?e#>q6fGi5J!AI)E z(HD0}{&K0~$ZE-FluC2CMKlA9_st=kl$W_?Ya-C4Mk(HtM7(@8X}gX*BA7 z;jZ`z9bhHk3L37sNE$3b;*3L_xw0`FIV+82MwK5qE47~`RFkI7#I9J}$x)EKdi5&y z#^Qy;+qP{RGGvJP1zEhx7zJFkk|eO`W?xVX8oHYNp|Hv8K;QkKuIeFHDuIlg&FWkLF)E!E?R0N4L4si}^Ps8gm zAVQvD!rED`Z{5YpCA29HfCWiRhcFzN8sZQ(z#K@VhF@E_wP}PGE~5X;auhnq^1{yf zgw0Hya-jf+GbPd-x48Ul;Z|!-sJ3wZi;1k9vx1}Ko71n5wFRm!q3QtQ2L`|o9M)Ye zEegyQ?l|Ff_mmPKO+Z1487j__zByz>J+YV*8`r_bZwo7lGS6ZZC{&3gz6PL$ngd{o z)bJ3#qW{cY(#*8j$P|#S96{oYL!8a*4yjpb6|#i|minj-uxN-wQsYdHNiD>TW?--& ztW5GIfT}qcN%|m-nFxM}ZDtm(ZsX06GX0 zAdwk><_iHB5hh^LlTWH5*x&lpeV0@=qKb-Lu6XV6ivy=F*Xib!uz=VM8<3|a z_Pst_wEq3on__4_J$&+D{us9~;=&T~UO6`39frHXPUQzQWsy2haDJwEEniyRUj* ze2N{iLUh>kzGJ;DkDk2;iJC3;%;F=nsK&-9y{7j}&-8V-B(JpISi5+N6Cwd5l8cOa zQ1Yd*6AG$Kr7dwHXJuG#1k$|ICMnO_fJRNI5h;K~YP%vSuF?p3mY@L42c0{2jvqh1 zD9FZ)857mj4<9~En>Nk-f^3Hl9p1coBU;4g9xh$FRHsfIkYOsw3UlNQfS&~^afGso zvrG8jnnjCxKVz8ar$KBZ*Beb15i*eiNTeCv5?u>Xj zhD`bV8ULH0a*%Tsnbla-XgGq1x^$cSy9+P~lFIFz$ zzszEah<*vc&)|y*B!EyecD99Eo3Yr!i~pZljzY&A4zsN_s$VWR1|El)8OUW$4M(#LtXB0ppMNf!nR>u_cQCL|vE2+hZdSamf%m+5I zl2F1`^G{L&=5$bXxmGfXV~)=s(fQBZCCy2KjZ6W$UVTVuY zJ!WSA9Xn<_wXD#fcZ25rn|2u5`tX6pQx^;on!~2_I(%SJcbE3nI@jtvybaWrt{RKi z7rRXBv(bIp&GWmtLm9h-`TvO!GMtFB0ES+Kj+B9e|AG$!pa>HPQ8NCASAu*u`;JHL z^=i|84;QYz-fjKit0m^6+1G$1l8GuLr&fYpBd7$ba^K)ou-(^y%qy z1oQRdr^l5cI?;=4z`~d z3rI>Pkpd9O&BaL3cmarmbd-Nn4UYH;9gfLL8=#3r%T}PMnj&?Y7}26MC=$=TPfFJY zi61S<_-H|f$8$0rZtFDi;$C@^`8CZdw#v>clLqzKxAQakjZYgrdbAX&Qg`gq z4X(7?vRG>Mxh6&CV!Kn1M`}mYkcS6-&0YSl6) zHc2N&sWn*|ZX3PafBT7Bxti^$KkWF~tIz%kd>opmZ+K;~|K+Dd5;)=eaP%_&YjTOBcOv*VWGh#${PpYCBuSEp##~)pPn0J+S3A z+s3#V)g8N>{MphCj&qNA9B##}#2vVE{kViJujL%xaO2D0mJ4S5(nY*Mp$+3|s z5PAvxJEIMkN@xcNgfa|&n!K(oScSNMRcs>*tZHmZrZmx%3gBqya1qB!Kax};xxT7M zm8l&Y`Bauuf1E?kuLo=&KBX6`v8RqMzjk&j_Q~Q)vcK0WUZ7E_mIIqjo;O%%u3S5z z{g76Lo0P$8jf*uaJ8`b_InVX@p^`gdYVQCKquYNB<}Shq1IC!4ibxkAodpOL8vcZs ze#ECqM1Vxb0QSy5+jh_^alx~{Rlhxa#+8P>@D14yx9*AY66en^U%xuz^Jv+oYptA7 ze#O^gueKN{biTZMZ`cVNC(q^D-EIw;dZBE~2eVgRYdH|FGJdjt_u1SvjJ0b4f84ln z_*~kjPamk33Xng4zUkAa$pzWWtg$DX$U+lN)VrQN=1sUCApiozw7CIALu0$_$7rpGRvre0`+hCl6S8uG9s@RGA& z2AMOm-}UbMfwpW)MAWLqJ7Olri$TO2hSSvAJbL-r%6$(bW5<0SeE1Zy&*<5!4}sSW z{}hKG8xP-@zxk4Qlkv_|w`&YMx_sxA-ZMP&wb|Wl)G56BSon;tS&-%BSLvZn1W!ys zA^-q73&6VxG5v^7BS?TmsvvS!Dif=kC}Kv=O6_L}N|gBk@3kvlytpXH#*Q5uhMhWf z!nmOPnkrSQO`A5&nKK79*`7Unq6mu(u)_22zyCgX@L=qy1&M#7h3YMeuw}}WK^=DT z)dgDwLBa27zA3mnY*cVZC}I+7@)QJ0WE|Ggc9p~?(ZH0RFSMKYd=KJCMhP3Slqx#=X%fd6Gt~EYf7-&W?Yn@& zLZHk1P&NH8Ek}Gwr_OSwa-Bzhph;%|$krg@L@)`C_$j5|>l&qOz@Wi zb(pl7=n52s4(pbY<;5jbg+M67%s=&5EzJytsoBUK$AY`37&tmB$B`x@pQnTguwZZjjSY6o?tKO|)l`i#i)-IN#W|3UAi}iNxFTj~^$_`#flDZZ02qV`fEjwA zn}Fghc%tK>@_*N1K5+;WAbn%NJ6YkENB>4e)vy6JQ9*2vz2!XR+n12PfftQ_{rnmG zWbqc_M@u(7-*ptPFZPU=FR*CCr;#rQE%#%V6%Gts)j2c)QtW+~vC6 zjkRk5zeS4{4I4J(wN&87jT_^g!*W4(?H;KhTWA12>a{Qew4%p&+ z>dfET4OuMJW3EZTxrEXLz#vQj%+SO1*pX%^z@Ms@0h616b~FunPa^P=lcold0!XBY z+5C|W(GTsa#!L@YG5Tjjty)F{GA=;zbi@+BoXvNjggShY@8mUsYqwu`G;_7@#V4NU zAD=$^@VNK=XUn%({TNoC?*%i4)hTQ6p{Iw7|Gub7PcfGi1nsFUWHyaDoI0 zI(F>1efxH?yB6Pl_~Va1#EXk1O;u7%H;DMWQ!2uf{Pym_x1g;L z?p@q;WaraYA^$E&a`TV(xm0;-qV~Gy(CNodo|mcDgV#)lj9akZ`(%n{CFbv3bMbOe z)kZxl8TqBlSBo10$IeoI|FOSa*UZb>q0(Q0zJo{2B-n@EFX;dMs8h zq2Uk!gD?RwLl2W9MT5vSl}zGHkU#*5{9e~6Wh1v*qwz6;EnNRJIs))BA|;a4IFq^pDOXTmUR*-e34}7t z{8NwB(#%kpnvL9Xq&p*#1Q0UEAjOdJfisLEpRJ+Yq?u^2Qe%elO#c~CPb{V*Q)t-8 zNtuRCqfGdv4vj(t{1y&ihwavsTex zYZU{Df^4NO4VG+PJDB z$`=8N3BLGoD<$^-wF>I0q97~Ik5+7^774sKaMCYR+4H5Ee|qxl_1}Jmnrxgrczy93 zuXCSYyt-VwE8b>&d-zQMY!%4W#men(^c6! z=|8T_R3&d5Lpe4|lyn&!6D3aaI;Q%1x?q(jJ`xddO{2>p zf}`YfDX?T7(uzySpWprU9hibI0Fe%69TD@4VMb^+au=XQPppLEjPN-iOx@z+D~6Ip z0$?Q$U5rB{L@I$~t4$i3`|#{r;LLCPN`7;T@oi(0lP8zOt(QM`-F(ISH(j)AEjFL> z@cNCM>5#r;PN$~$r(#D=dL_&{dWN9@%m+FxRxY6taR4kx0f=-6IkZQLE`FiS zmBEq7P?suy+QO|(B`o7CL&tyO<;a3{o?i@x?9u%oILWk1h^0fEA>n|q@nQK+Vk5WO z?_x4S*uwQM28G5&0uo96;Cx^rLlj&>6*&MFqyR)Zn04s1TACHhcS<&L$B}M}L~;O3 zr04?;T<{pm<49AF0IUcD(C@p9Xc7_i#G)CLy3j^e5=yejyf`Cb4hU0Ev`5xp9{JGz z{rhnK^AGKGZ3sZu3<1Mc5vl}0zfhjxPwneUT3(3c0GLSb*%-Ew1=d)2NbM1tg zOGeh|QLkbDw$3v~7ie6zP}B0xGe$KU(5_sK-W0nL2IRij}__nT9{usmQsekw80| zhSUq&zvL*?2n2StYDFuxrcBR+jYgcvSa(aSv1eB9x%TDd8x&;EIpoLhV%mz=OSUfE zatrFPC;T3+I~WwN{JJv%kHj4T=l-+3uyo+)Io$(an?2%nf7Yf8vC6D%;d%<54KE(C zwP+s?;k#X{P-&Pc>n(WfddCnlRbO(Y^hSE zR5KDidUW_y71=e@W}h+a>w2@1YXDdE*U#_19ju0b&JpqpDaaOZsGSGDD7EvH8QAMvM$4V`nKhcE$>PG`Ug7p;DbRTKbarA3mu*s!O_7Wj=lWY^ z7u(|+BJYwWQ)fq0z+_)^P_WYl788LEDNBN{%7lpcs%plhs>*`N zeHt?-J^`{-nhO!v1Qu#snK%R_6G1{M6hJOmF{;m)&Yq|Kt*%m;74I>|i;MBr;wgX5 z-FN!%|LPXUR@t7TI+6kbY?Yldf5@DrBdIw%0(kTA!v$-piVE=J;AxQ}?K9p~?31Ph zDzJFJ@$F&LVHnhP)cMja$QAa_-o-y155EKVN4#6Od-rbq=j7z{+i$}mfi&%S>A^mOj}C$rbS*tq|?Q=4aN_QWl} z4h7l%bG)kbKQd)aAiqaUUw2-R>kr=WyZrQ+&x6^UE<|w(`7W(J7Gxu5Wdu$ft2S*% zvl4j-{~lnKFJ*TBHQ&!0bI-c6V=0WUGemtpZZgi`FSTet8Dq{ojRtJY+5AoZ)@YI7Gx7PE;@GYylHb+{q1=c`qLMz zMPW2|xmI3&=Y9My#B?kp)k#4vSnfV{-GV5!a(iAntJ+NzYU{NdEE#4g+VI$4Ud8%1 zEz-9UO1<3BdGuUKIi_RjExV6(o;@N-lVVR_8eXl;^}`q2;~gq|Gaz}hqh}bKU96;( zT9veyTU+FEWYxWw71bwoiL<{|_fA&isrx?4k^y}E`uXK6R9(M*{P^Ma{decD zz74$c>EV+%-sez|y-=ae*H53YPZl0-_8ot&U_HOg<-AiA^NgD}uz2HJgQtdL$MG4p zL4yW`?sdgiZVkU)y?T`>Q9>@ruH23~?Cs`5QAhZ`Ap0e6-n@$!FOr<#8*Qyyw+_cp z^>>B8m37RV)$jq?#L*JPjoPkE{1J5%XGj*kYlQ^!+a}ALG6t1m31DOFpqhzF<%}&j znX?%_Aba?zVSltW;*Xqb8dWtJc3yK2C0UW${s;2jWKX_3gW> z`5Fh6>-hZT2h?g&ki{#Dvo+oZuUVHxN`TLzGZ{N80`t#?n$9*1nUwE?i z!1ZbC&O=B1G`=Alfup0{bmXkm&X4^{?Pyja$#LVx9XfQVlC&bC{{BglB#~@8ckY}rWlD+pA0Tb^8No;!;Rc?>kXx|Ytaq$lu zzfh`^3bJh7?)$w?C2CY;=GH$|ySc`FU%CQyCEHO`mhAUDnYu-(Y3|FoRnX151r;BV zZO~!ZX+NLzZOV6%vDnv2Vhe*Cd6zV26zpgUnA06=>)87OEB+EyoJFoU zhhr&|+(Z(Al%(7b$4W!Nk<5*$QA1pxFf}C9_?dJhCOIU)HT#e2I&Strs;hF~wtiCn zh9$=>nZ9xVHur-&7Q3&^Rj1hM^%J=c;W0D&Pg@}WjTu_B{lhn{(~ASAP+EPy`{=VB zhw$OodlMIn6yf8rFAkl)(S6jz#q00S{PVn1Q$NSD-bo94Cn=1=>-o~nz2fJ)J9a** zwC4&p@JUhZj_W*>bRRC+@MP_dD-C*GYvp{c#lUdP0BWXn>eP{HsSO%5Xx+M%T#)@U zxFFkV#ET94L_zlVAzPis?1F9O%9Z=|>nAxWS+b<7t7|xhsD#dajHqAzh7A;-IObHVue)#CIm4c6)YZ{5QqiHC5 zVHcO2M#6Oy+0m*co_u1JU5gUxutmNLw_X-Ef}3^v;+4fOHXnNb@r&5;>T&)_i_xc{ z)_Kz3X==IG8+yF)h!ZHermEqdq3)IvUH1PK@Tm7p&yh>~pcA{CVN-21JA7qv+f%hIdGk@3GD7Ajy=W(1XTLatO z9m*O>;6Cl>8OCN8E1pjsu;1G%8SR-}XYLZkU;a17vZD~un zroddEW6_XwCKKWd07DK)P4GbuoX~y39A~Plaxipq&m1+2RO{BbiF1cqJ)2eQ-WX)3 zVQsGYZ{=zNyUyr0ZNU)XpP!}3l_H8nh=jg$=2jY*tdu%Jq~wF+880v1QH%|(cSg^? zRI`h(W0}jfy1u`D`~Hj-=L*#IN>sonb#dQxC835hKFIEuwY+D%e1`WD$IExAR+mqY zpFLT-6BsqwyWmP;L>ZMv-b`j& z!&cc4IOaH1H59g!rcOsuHB;uyIUEzmPmmx%!US2;B}$nrVZ8VWO#b30NSHcp`nYl9 z{ozy^f4gg}l^^6s_*|3Xr-XAL=@=t52G^uWRl$y?p~wk(q1z>=nlTDPLkb;jsd9WZ z^o0m#ZbeKExPtzx7H>UFII5Fdu}=HuxnIoRX7~7&=W010MW$q;CI@65IV&j@N)Xmm3lEfMr9%yl$+p63Ye%zE zbS-PvtUY`7R-?{g&LZjYP=j8ZA6;;|Y^}0*d)o2+@Z`^Ts=GK+i?)v)O zTdC=Q3s>W3t3W;h;HP4v-X{Y*b9AmYX6<($gnjYyb+M`)xH52-q78!X-6=D;b=46a z-+g#5`44we|2vczP}Nb>5NUK=Sg9(Qbf~n|{~1O#a&ws0UaXYKp{OiKEZM384Tl;c z;Yzn#n`-3dFn_k?$mErynlue7ReizKureuvg3`18w_0TkVdCg^{hQ3EM%Ws*s#Y5M zLWHx@P(x(x)lwOZnH>G^I6s(M)yx~~><_l3bgTapi!uf?Ir^_8CbO*?xv&b;u)>eY zwlo~7+Wu^JN!771hpGP*P#rH3st`$IO-v5V=^Au|iK;SrQ%W^N`Y*7`@P3@b)55Wa zXN{aFMXEkknW9Avk!na>pRfQp!$dlB9jQgKA`=0i)^}`|kyCs7{DmPOTC;yLZo9ylVWO-SfQ9xM7>^ zj77twj!?T2AEXd*AasbYG|}deApz1C9Gr>6foJ@D_ogll$X6R%T(5T+dT+wQvpK8Y zpT5HXmx|(Ru)g^B;Z6EH-+SUi(49|Dp1tus@0+2tUzYNB$IL@D_WhL`=ZZAIR@s|< z#$Bw`4jXK*wHV-&@(bz=EBo=@erPfsHd-(19&$*iK%-L*5P3NOmZ@&sE z+ffu`C(Sr<>E_EN+pnMki;u(p-f~xrGHcJAeU!B7#+rkUj#%s$rKH>6fsgaH+Eua7 zp?fR?;jGjlhXj;5;7HQQS*e;ON>o@= zP3a|I%s=M~WsSB}MZ$wITRWPSl!~@(+on&Sp2(XwZ&L37P=`gC6)*b0yNGAZn6YEW zj-a5RM~@!i4aO^1uEd-1gdw)acI(zHYSgIYhXZoRnF3oTQu-l|1rCJ?c~AnYK4U1G zGoPdL^`?U=1siA~KhJZrOPxE8F5)v|6V(fvdhN$kzIO?COR8E8T+E zL!+cCi7l(Q?>^`}a1!|0OEg)repkG#<+%>9v+F#Mi~bHZf7|aV?_iy^c)g^Y=-0{% zS8nOIWMcZ(We@tC;&Eatu0vWUt{*L9nO?(Y{CQw=nwF)voIZf=bA4-Io$pX$K+zEb z)G6W+Advfu9%pqM%1b7oV-)ec&7GoW*f6G!WdZb~i+GP!W8ZrXpfj9(6 z1Yp(Gk~b7qtn(d5BnM|@oRl{Lq@(1JNCOBfoRvD{kO1irhX9EHbbeytO@|fhypo7? z;jE0)qzERe*;cv|oF8#$%=V|cOBze8IeeX`fU)sHsC3N`P>o+(%1tb5i~JMdK6PGT zdD9kP)h4Q{_P4YuJ#0TKE#8)zjBRK&d$N1R;dyVec z-L+e<3C@e%S9KlPUKCr89$Z|aMFkXOdyVc?r$@b#ttyV1-WO!
q_od6wFY$whi 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 literal 0 HcmV?d00001 diff --git a/feature_titles/__MACOSX/._sports_team_stats.png b/feature_titles/__MACOSX/._sports_team_stats.png new file mode 100644 index 0000000000000000000000000000000000000000..35dfa9639878380025c8daa2146b7ad72e2c1f6a GIT binary patch literal 233 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@pd2v@m~Tl5x_AdBnYYuq~ib(YeM-j z3S`;=AQoU?kV?+a)k`cW$Vt`9Nh~fYEly2INi0cK4hV)Sz5t{p85l$n>IzE}ixTrn tGV@XyGPhk!0I3VxD-EI;3iS;PER3wp3{nh}%*+z41Bz11GE>W~8326gCPn}N literal 0 HcmV?d00001 diff --git a/feature_titles/sports_future.png b/feature_titles/sports_future.png new file mode 100644 index 0000000000000000000000000000000000000000..78ed2182e04e80552a308181ac0319b140955370 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^*+8to#0(@e{PGNd6k~CayA$KhlREW44rhT!WHAE+ zw=f7ZGR&GI0Tkp3@Ck7R(*N!3{{R0EWIT~Lrvs!|N`m}?8Gu5Ybsai@1_^q)IEGZr z*?ZA3>xcmlYrxeDz2A2_7wBDdHfeoXSHu^e^ev9ptx-mSxp)EJ7Y5#zfBO8MnZD&~ z#W+88tDYA8xjdulNbpoSkH5uN<<9=vCENCSL1}he`}D_xymOZ=2y_zL6C!H)resm& zS;xsM4hiv87F&EzbG#L{$=mLcs%~+_%9~u`H6hsRsV?nJdyR3R&XXh?^-p;_buRBZ#FXZ5(swd%rL_Lz-+$POXV{8$n@lf%{3gkC z?#wM~D(7B5oAa&2{LSuj!u!wYY`H5rZ|=Qgoo&J&lCKs`KeN04w$a9A*FCuJ9KJd6 u{pY_t@oRqFuQyJgvN}v}%dL0*kA*)SofoEaHk=a}SPY)7elF{r5}E+Km#P{7 literal 0 HcmV?d00001 diff --git a/feature_titles/sports_live.png b/feature_titles/sports_live.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f4101d9e3930a6e2733fde4a65fb3c4b07e6d7 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G#0(^t`^?w|q!^2X+?^P2p46!aaySb-B8wRq zxP?KOkzv*x36NlbPlzj!{tra||EEi)$N@RbB|(0{K)y@BHANuzhNp{TNX49|mmK*H zDG0D$(Bzc%zm~6XRp|d3-)P{o1#D zhULoH(`{JALtX6{A1p9_JWuNYgTuX3k|~~^%cK`RR_eSN&TJ~>QS;=&-3{h5la+5| z-HEPl7I0xWx4E}~WY|L{QE9W|GnCl=?{+!8%_0y||43e(AOxGsPV2p}v z2(=cuD*l2c?;b<9&~L8v27l&_^BP4>=P|fFel8dK`RgVFsqHJ*-EaKK)l}AW=B^Ic f&!6_6p1)?@rkB)h6q>RU=tl-mS3j3^P6#%_U>xGpH(r;_omE#w+uMj_H*Lu%sdcgHtB2x^1Fz`Kb;Qhj2I^&N%>+&s& zc9)5XEmqGo*>u9*^|G?u>Mstj=C9gz`r7qe`9p!ud+!u*Bsw@QzPM6+I!p5^rTn(% z&StAmW{QMHv?%6(Tc59QqMoaL(&e?G$LT$i5*xxS68Cmi&a-^GW9C*RgX+zfoUhJ# zc7S#N%->07&#G=l@c&F(G{fU)h5wVgMN!L2TP?rHW#&x2nq)rjSpQGivmdKI;Vst062=R AfB*mh literal 0 HcmV?d00001 diff --git a/feature_titles/sports_team_stats.png b/feature_titles/sports_team_stats.png new file mode 100644 index 0000000000000000000000000000000000000000..cb56437f2cdac513fa510dccdfa289781048b37b GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!VDxecyh&n6k~CayA$KhlREW44rhT!WHAE+ zw=f7ZGR&GI0TdJs@Ck7R(hOq%L4bh)j;3f;lmNxqOM?7@8UFw0{LjoWcad5j(9m#C z7srr_Id3O>7aca>XzN^lGu*22%nJ_7M)v!QzuUV$V7HxBb*bv2Yg$vPVAGEl0kx{r zuTQATo_x;fkT&(|y(yNeva1*(zWDnb?R82tJo1;(gJA>X0tN&3$PL$c*$bEt_;VU= z+wQj~t>+2ni)gXC;nQa(p3=?uUf$rl+RkDEv)Am>mCx~2b@4}owmbCkoVj)v+!U9+` z&P^-3BKYl{VXDgMzrWn%7qrQXN%X8`^Vs*|d{V=!i?RXd8T+2FJkb5GQEquTA^$^K R;CoPXc)I$ztaD0e0svbnyRiTO literal 0 HcmV?d00001 diff --git a/stockTicker.py b/stockTicker.py index 810b6c3..0986201 100644 --- a/stockTicker.py +++ b/stockTicker.py @@ -163,11 +163,7 @@ class StockTicker(): time.sleep(self.delay) kill = self.checkKilled() - - - - - + if kill: break return kill @@ -383,7 +379,7 @@ class StockTicker(): update_process.join() i+=1 - + def scrollMultiple(self, animation = 'down'): # scrolls trhough all functions with animation. Updates functions and remakes images when each function not being dispplayed @@ -1935,8 +1931,119 @@ class StockTicker(): if kill: break - - + def scrollProfessionalAnimated(self, options, animation = 'on'): + + # scrolls trhough all functions with animation. Updates functions and remakes images when each function not being dispplayed + + + print(options[0:2]) + self.updateMultiple(options[0:2]) + + kill = False + i1 = 0 # keep track of which image we are displaying + i2 = 1 # keep track of which image we are displaying + + self.double_buffer = self.matrix.CreateFrameCanvas() + update_process = Process(target = self.updateMultiple, args = ([options[(max(i1,i2)+1) % len(options)]],)) + update_process.start() + + image1 = self.openImage('./display_images/' + options[i1 % len(options)] +'.ppm') + image1 = image1.convert('RGB') + + print(options[i2 % len(options)]) + image2 = self.openImage('./display_images/' + options[i2 % len(options)] +'.ppm') + image2 = image2.convert('RGB') + + + + offset_x1 = 0 + offset_x2 = 0 + + offset_y1 = -16 + offset_y2 = 32 + + frame_skip = int((1/15)/self.delay) #controls how fast gifs run + self.frame = 0 + + img_width1, img_height1 = image1.size + img_width2, img_height2 = image2.size + kill = False + + delay_t1 = 0.02 + delay_t2 = 0.025 + update_t1 = time.time() + update_t2 = time.time() + while True: + + if offset_x1 < -(img_width1+1): + + i1 = max(i1, i2) + 1 + offset_x1 = 0 + offset_y1 = -16 + update_process.join() + update_process = Process(target = self.updateMultiple, args = ([options[(max(i1,i2)+1) % len(options)]],)) + update_process.start() + image1 = self.openImage('./display_images/' + options[i1 % len(options)] +'.ppm') + image1 = image1.convert('RGB') + img_width1, img_height1 = image1.size + + + + if offset_x2 < -(img_width2+1): + + i2 = max(i1, i2) + 1 + offset_x2 = 0 + offset_y2 = 32 + update_process.join() + update_process = Process(target = self.updateMultiple, args = ([options[(max(i1,i2)+1) % len(options)]],)) + update_process.start() + image2 = self.openImage('./display_images/' + options[i2 % len(options)] +'.ppm') + image2 = image2.convert('RGB') + img_width2, img_height2 = image2.size + + if time.time() - update_t1 > delay_t1: + update_t1 = time.time() + if offset_y1 < 0: + offset_y1+=1 + else: + offset_x1 -= 1 + + if time.time() - update_t2 > delay_t2: + update_t2 = time.time() + if offset_y2 > 16: + offset_y2-=1 + else: + offset_x2 -= 1 + + if kill: break + + #image = image.convert('RGB') + + + + self.double_buffer.SetImage(image1, offset_x1, offset_y1) + self.double_buffer.SetImage(image2, offset_x2, offset_y2) + + buff = 0 + + # remove the ppixels behind the image, to stop trailing + self.double_buffer = self.matrix.SwapOnVSync(self.double_buffer) + for y in range(16): + self.matrix.SetPixel(offset_x1 + img_width1 +1 , y , 0,0,0) + self.matrix.SetPixel(offset_x1 + img_width1 , y , 0,0,0) + for y in range(16,32): + self.matrix.SetPixel(offset_x2 + img_width2 +1 , y , 0,0,0) + self.matrix.SetPixel(offset_x2 + img_width2 , y , 0,0,0) + + + + kill = self.checkKilled() + + if kill: break + + + if kill: break + def process_msg(self, msg): if msg == 'S': # stocks @@ -2007,10 +2114,10 @@ class StockTicker(): self.scrollFunctionsAnimated(userSettings, animation = 'down') elif msg == 'b': - #userSettings = ['stocks_prof', 'crypto_prof', 'forex_prof', 'today_weather_prof'] + userSettings = ['stocks_prof', 'forex_prof', 'crypto_prof', 'today_weather_prof'] - #self.scrollFunctionsAnimatedProf(userSettings) - self.displayProfessional() + self.scrollProfessionalAnimated(userSettings) + #self.displayProfessional() elif msg == '+': stock_ticker.scrollMultiple() @@ -2031,7 +2138,7 @@ if __name__ == '__main__': # - #stock_ticker.process_msg('G') + #stock_ticker.process_msg('G') #stock_ticker.process_msg('f') #stock_ticker.process_msg('W')