From 55262d4cf0ac84eb33fafca62bdcae22a4d478b3 Mon Sep 17 00:00:00 2001 From: Roman Bazalevskiy Date: Wed, 27 Dec 2017 22:51:27 +0300 Subject: [PATCH 1/1] =?utf8?q?"=D0=A0=D0=B5=D0=B7=D0=B8=D0=BD=D0=BE=D0=B2?= =?utf8?q?=D0=B0=D1=8F"=20=D0=B2=D0=B5=D1=80=D1=81=D1=82=D0=BA=D0=B0=20?= =?utf8?q?=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= =?utf8?q?=20=D1=81=D1=82=D0=B8=D0=BB=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ajax/mpd.js | 182 +++++++++++++++++++++----------------- css/general.css | 156 +++++++++++++------------------- images/addselected.png | Bin 1699 -> 0 bytes images/bg.png | Bin 22211 -> 0 bytes images/control_bg.png | Bin 414 -> 0 bytes images/highlight.png | Bin 430 -> 0 bytes images/left.png | Bin 1306 -> 0 bytes images/playing_bg.png | Bin 19970 -> 0 bytes images/prev.png | Bin 1390 -> 0 bytes images/remall.png | Bin 1459 -> 0 bytes images/removeselected.png | Bin 1664 -> 0 bytes images/right.png | Bin 1352 -> 0 bytes index.html | 36 ++------ mpd.lua | 54 ++++++++--- 14 files changed, 211 insertions(+), 217 deletions(-) delete mode 100755 images/addselected.png delete mode 100755 images/bg.png delete mode 100755 images/control_bg.png delete mode 100755 images/highlight.png delete mode 100755 images/left.png delete mode 100755 images/playing_bg.png delete mode 100755 images/prev.png delete mode 100755 images/remall.png delete mode 100755 images/removeselected.png delete mode 100755 images/right.png diff --git a/ajax/mpd.js b/ajax/mpd.js index 9cd2667..ccee6fb 100644 --- a/ajax/mpd.js +++ b/ajax/mpd.js @@ -1,4 +1,5 @@ urlbase="mpd.lua?" +minScrollHeight=200 function GetFilename(url) { @@ -11,6 +12,21 @@ function EscapeStr(str) { return res; } +function SetSize() { + var w = window, + d = document, + e = d.documentElement, + g = d.getElementsByTagName('body')[0], + body_h = g.clientHeight, + window_h = w.innerHeight|| e.clientHeight|| g.clientHeight, + items = d.getElementById('items'), + current_h = items.clientHeight, + new_h=(window_h-body_h)+current_h; + if (new_h>minScrollHeight) { + items.style.height=new_h+"px"; + } +} + function RefreshPageStatus() { var req = new XMLHttpRequest(); @@ -18,9 +34,10 @@ function RefreshPageStatus() { req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - nowPlaying = GetFilename(returnedData['current_playing']) - document.title='MPD Player: '+nowPlaying; - nowPlaying = (1+Number(returnedData['song'])) + '/' + returnedData['playlistlength'] + ' '+nowPlaying; + trackName = GetFilename(returnedData['current_playing']); + trackNo = returnedData['song']; + document.title='MPD Player: '+trackName; + nowPlaying = (1+Number(trackNo)) + '/' + returnedData['playlistlength'] + ' '+trackName; if (returnedData['state']=='stop') { nowPlaying = '' + nowPlaying+ '' } @@ -36,12 +53,24 @@ function RefreshPageStatus() { document.getElementById('repeatstate').innerHTML=""; } document.getElementById('volume_total').innerHTML="
"; + + var items = document.getElementById('items'); + var table = items.getElementsByClassName('track'); + var current_track="track_"+trackNo; + for (var i = 0; i < table.length; i++) { + console.log(table[i].id); + if (table[i].id==current_track) { + table[i].classList.add("itemActive"); + } else { + table[i].classList.remove("itemActive") + } + } + }; req.open("GET", urlbase+"status", true); req.send(); - } function RefreshPlaylist() { @@ -52,20 +81,18 @@ req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - var text = "
\ - \ + var playlistMenuText = "
\ \ \ -
\ \ \ \
\ -
\ -
\ - \ +
"; + + var itemsText="\ \ - \ + \ "; var even = 0; @@ -82,39 +109,30 @@ req.onreadystatechange = function () { even = ! even; - text = text + "\ - \ + itemsText = itemsText + "\ + \ \ - \ - \ - \ - \ "; } - text = text + "
TitleControlsTitleControls
\ -
\ + "+(Number(id)+1)+"\ + \ "+name+"\ \ + \ \ \ + \ \ \ + \ \
\ -
\ -
\ - \ - \ - \ -
\ - \ - \ - \ -
\ -
"; + itemsText = itemsText + ""; - document.getElementById('playlist').innerHTML=text; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; req.open("GET", urlbase+"playlist", true); @@ -130,20 +148,19 @@ req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - var text = "
\ - \ + var playlistMenuText = "
\ \ \ -
\ \
\ -
\ -
\ - \ +
"; + + var itemsText= "\ \ - \ + \ "; + var even = 0; if (dir) { var lastSlash=dir.lastIndexOf("/"); if (lastSlash>0) { @@ -151,13 +168,13 @@ req.onreadystatechange = function () { } else { var upperLevel=""; } - var text = text + "\ - \ - \ + even = ! even; + var itemsText = itemsText + "\ + \ + \ "; } - var even = 0; var i = 0; for (var key in returnedData) { var rec=returnedData[key]; @@ -180,39 +197,33 @@ req.onreadystatechange = function () { i = i + 1; even = ! even; - text = text + "\ - \ + \ "; if (type == "directory") { - text = text + ""; }; if (type == "file") { - text = text + ""; }; - text = text + ""; + itemsText = itemsText + ""; } } - var text = text+"
TitleControlsTitleControls
..
\ + itemsText = itemsText + "
\ \ + itemsText = itemsText + "\ "+tailName+"\ \ + itemsText = itemsText + "\ "+tailName+"\
\ -
\ - \ - \ - \ -
\ - \ -
\ -
"; - document.getElementById('playlist').innerHTML=text; + var itemsText = itemsText+""; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; if (!dir) { dir = ''; }; @@ -229,18 +240,15 @@ var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - text="
\ - \ + playlistMenuText="
\ \ \ -
\ \
\ -
\ -
\ - \ +
"; + itemsText="\ \ - \ + \ "; var even = 0; @@ -255,23 +263,17 @@ req.onreadystatechange = function () { even = ! even; - text = text + "\ - \ - \ - \ + itemsText = itemsText + "\ + \ + \ + \ "; } - text=text+"
NameControlsNameControls
"+name+"
"+name+"
\ - \ - \ - \ -
\ - \ -
\ -
"; - - document.getElementById('playlist').innerHTML=text; + itemsText=itemsText+""; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; req.open("GET", urlbase+"lists|load", true); @@ -303,8 +305,8 @@ var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; - RefreshPageStatus(); LoadPlayList(); + RefreshPageStatus(); }; req.open("GET", urlbase+"lists|delete|"+item, true); @@ -313,10 +315,8 @@ req.send(); } function RefreshPageContent() { - - RefreshPageStatus(); RefreshPlaylist(); - + RefreshPageStatus(); } function Command(cmd) { @@ -389,4 +389,20 @@ req.send(); } -setInterval(RefreshPageStatus, 10000); +function subscribe_status() { + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (this.readyState != 4) return; + if (this.status == 200) { + RefreshPageStatus() + setTimeout(subscribe_status,1000) + } else { + setTimeout(subscribe_status,15000) + } + } + xhr.open("GET", urlbase+"idle", true); + xhr.send(); +} + +setTimeout(subscribe_status,5000) diff --git a/css/general.css b/css/general.css index 6bb13cc..62e4e56 100644 --- a/css/general.css +++ b/css/general.css @@ -1,24 +1,13 @@ -/* -#525356 -*/ - - - -* { - margin:0; -} - body { + margin: 0px; text-align: center; font-family: arial,sans-serif; - margin-top: 15px; - margin-bottom: 15px; - color: #AEAEAE; + color: Snow; } a { text-decoration: none; - color: #AEAEAE; + color: White; } table @@ -48,154 +37,133 @@ button cursor: pointer; } -.trackno -{ - text-align: right; - vertical-align: top; - padding: 0px 0px 5px 0px; -} - -#heading_tbl { - width: 400px -} - #frame { text-align: left; - border: 1px solid #000; - width: 400px; - background: url(../images/bg.png) no-repeat #251616; - margin: 0 auto; + border: 1px solid Black; + background: DarkSlateGray; + margin: 0; } - #nowplaying_heading { font-size: 1.3em; - font-wieght: bold; - height: 30px; - background: url(../images/control_bg.png) repeat-x; - border-bottom: 1px solid #525356; + font-weight: bold; + padding: 5px; + background: linear-gradient(DarkSlateGray,Black); + border-bottom: 1px solid Black; + border-top: 1px solid Black; +} + +#heading_tbl { + width: 100%; } #nowplaying_content { - margin: 10px 5px 10px 5px; + margin: 10px 10% 10px 10%; text-align: center; - border: 1px solid #525356; - width: 380px; - height: 60px; + border: 1px solid LightGray; + height: 3em; padding: 10px 0px 5px 0px; - background: url(../images/playing_bg.png); + background: SaddleBrown; font-weight: bold; - color: #fff; + color: White; } #control_buttons { text-align: center; - width: 390px; margin: 10px 5px 10px 5px; } #control_buttons table { margin-left: auto; - margin-right: auto; + margin-right: auto; } #control_volume { text-align: center; - width: 390px; margin: 10px 5px 10px 5px; } #control_volume table { margin-left: auto; - margin-right: auto; + margin-right: auto; } -#playlist_menu { - font-wieght: bold; - height: 24px; - background: url(../images/control_bg.png) repeat-x; - border-top: 2px solid #525356; - margin-top: 5px; - margin-bottom: 5px; +.playlist_menu { + font-weight: bold; + height: 24px; + padding: 5px; + background: linear-gradient(DarkSlateGray,Black); + border-bottom: 1px solid Black; + border-top: 1px solid Black; } +.home { + text-align: left; + font-size: 1.0em; + font-weight: bold; + background: linear-gradient(DarkSlateGray,Black); + border-bottom: 2px solid Black; + border-top: 2px solid DarkSlateGray; +} + + #items_heading { text-align: center; + width: 100%; font-size: 1.0em; font-weight:bold; - border-bottom: 1px solid #525356; - border-top: 1px solid #525356; - background-color: #333; -} - -#home { - text-align: left; - font-size: 1.0em; - font-weight: bold; - border-bottom: 3px solid #525356; - background-color: #251616; + border-bottom: 1px solid DimGray; + border-top: 1px solid DimGray; + background: DarkSlateGray; } #items { font-size: 0.9em; text-align: center; - min-height: 400px; - max-height: 600px; - background: url(../images/playing_bg.png); overflow-y: scroll; } #items table { - width: 380px; - margin: 0px 5px 0px 5px; - border: 1px solid #525356; + border: 1px solid DimGray; } -#file { +.file { text-align: left; width: 100%; - } -#itemEven{ - background-color: #251616; - -} - -#itemOdd{ - background-color: #333; +.itemEven{ + background-color: DarkSlateGray; } -#itemActive { - background: url(../images/playing_bg.png); - color: #fff; +.itemOdd{ + background-color: DimGray; } -#itemActive a { - color: #fff; +.itemActive { + background: LightGray; + color: DarkSlateGray; } - -#move img { - margin: 1px 1px 1px 1px; +.itemActive a { + color: DarkSlateGray; } -#remove img { - margin: 1px 1px 1px 1px; +.track_number { + text-align: right; } - #volume_total { - width: 100px; - border: 1px solid #525356; - height: 5px; + margin: 10px; + width: 200px; + border: 1px solid LightGray; + height: 0.6em; } #volume_actual { - background-color: #d9600c; - height:5px; + background-color: DarkOrange; + height: 0.6em; } - diff --git a/images/addselected.png b/images/addselected.png deleted file mode 100755 index 52fbb786f130d3feb9974abe62ac336451672f01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1699 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 WE!2iqN4B~E0000 diff --git a/images/control_bg.png b/images/control_bg.png deleted file mode 100755 index 685abbb544e988011461ec299e0b13dd1271501d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^AhsL_6Of!GE|CtT7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>lS|xv6<2KrRD=b5UwyNotBh zd1gt5g1e`0K#E=}JJ4`;PZ!4!jq|mW9gA2DIhdoP{}_hueDc3uB7iU9{Ejl=`5Sb( z8++>Z?cX3MfBp5HE=H~v&Tz&Z{Cf+INhp2a%5$i0lWQ7Ra%HTygn`gQpYv;Zgtktd zb>fUKkIBwJ`~EXhhm>D3EHc`7F(vQdWI3hJvo?H8Sg6^%Vs%yeJ02skh>26v{YsQY zr|x{hr5GICayK{g%f_fRvQtz4q)pv8;qj^N#LJN)?{>AWIw^2>pQ@VHYftmAtY2a? zD>a-rcApLli8fNbue4QmcFyObK#78oWwzEcg}h~7)a~_&ICds|)f(N>iPh2)H|xId zJaR3)AtJ)Q?$Z3^59g=M`2M4`-T!2EOkB;peU^V%P4ymjZF{y_1{7AFu6{1-oD!M< DZE2k~ diff --git a/images/highlight.png b/images/highlight.png deleted file mode 100755 index 3710d7192232fd072f0ae1c5d36ee2503b56bf9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 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 diff --git a/images/remall.png b/images/remall.png deleted file mode 100755 index ffb546aca744ac78c90ad4e228d8592bd0591542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1459 zcmV;k1x)&hP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8 z5f&x3A!u;`0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~000FF zNkl9(E6vuz}%~wCBEtJnHv?#RTw1I+%r1V20YDh?vhDDdM(2WZhhJ`Lz zxzMn1f$U63+-QoLE@Y!1T3bj2jevA0NrROJDlKK`$IQ?-^X_r+KIYAvDKxy~X5KsZ zp7THFf6lr0j$(z6p1momW(`;=u;xJ?0|pqCVAMc(HL@^^QNLZS#NJaEi8(D~uYt7) zDDqc_Kq*^QDbGx}{WV(_s)34^P?5FjnSiayAu+1{18bh#pBF*I22w^r)pY=T?~2IF zJrJrvr|Stl-=S6vESXUu^&O}Xx!*4bK!QLNF(4=u5ZQOYmeszEs%%zI1(x|=h140$ zOMeFp2cmq6OgZ0?{rjNq5GwwvS{7IqhJ~pUm>2&kiR6jEWg_>liFWLSweOP_?mu(T6}4uqp9K@y)#$ubW3*i*hqu^>`!5|-3C z9$W}0OBtS|;I#@ep_Zpu;jDEWzkdNXtUre#b0g$6SmF!~THC*6hd_Ay5jGwdB0G+F zIvbCR_wJ5{<5IBg)0amhge5zH4pkA|w4chB!$j7#5^X$yUc66!?qAHiSCD*`^ynG% zOcDfQ&Anu9{Xj)?FX_?m3;VnF)qoSBCBCR#CbAQRMFW-VsM>XuSW_pV>h-8d6`|EH z5USlocufmv3stqA*|YD15u#%2TTFe~LBo5Ouq0$B4#?}$6uHh6i3JQ|TgYWnWG05m z&5mQGXY2|Sjp#g9<{|lod!)yI!qO1k)PXs3lcm%I=FAw8%^g^dVXX_p(gk2IjbhJ9 zbPHi>JIO7bX8!sB>D#{`0u|5g##)+3Y0c8~4Mb~nb`}IGxA#)@;_Gbt#J2qSZZC_s zhdmH+DqZ~a2O2}wb)u}P0m)tK=k`!>yC`3-#7EuM568Ik)nRh8<3#GW(RlPM zfY~&NQPG-aPZmw z!UUhGzXoO1Y7_I`Idan@Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8 z6CpaNsuA7*0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~000Ho zNkl}+-u)^29S8d^)Nrm-o6YQU3jmu5i3u*#)zo9A*>5RG;JehD3T}9Ufh)FyDapQvF%{O_bJ#5bUU>Qr zvu;I2(*!W50)(Ju0urdD3!2fbLR6h#XzSOBC$ELHMdN4Jk{fjV-V+WW&Vkh@;m_t# zDQKHjK&cFAGgOU&rZ^4ESkdX~8GP?&8MyR15Kl7u3L;6yj`mYM|La@K3cBT5MnmJ2 z)?9|RW{IjbO4UiUbpl^M7@mt_{9F6bTz3QCH=o|y?UWNg*G z(RML_N*b~*0K1`a2Cw=Y<;g9WrnpiCH#mm*MQm|CRGPL}*!vy)(HB95(nyWr5AVWN zR%5=y;=g}MT0hh?TP_a}&pol-)F&BTy{cWV8-Q7#^Q|yY@t99g6^7q`8q*FiF;V;JCEs3R7i;!J{0-S!F8_{L#6^Kal( zNY5Ulb>O#vAq&UR#nYGubDhZZx?^Lq{ z0?oN0)D%B=5N9bWf-4Q6X#yxtgzBc-S#|jhn53LL_$+5$dIS;aNn=YFjabs8*Nd6X z(W1k%B@Acc7FDP}@t-3J)i`~_TG!7t2m@^|;*8#7A`VHt7`9;>9? zbv19Jkqz5fz4`O_v&T8L=YHD9_V=`x%p~fGN8iOeKJ_qBWi^_#n48{3r#{ow(Yc-x zodtBu?#11OLwwg@@z}d54XvfLYMkLKZ=!Yhg`m6mY%>Vswb$&RGI15ALgVj`bLQ12 z1Fe=-XW20OHV00_IFd9$(**G;>JudGQ2*Oc(ar)cDpB3=NlMjqh!4+*rif1|*RE!4 z%bmEmjBlP`?ytL%b`v$ir68IuW(HzGQOV{b@hRdHyd+4Lz_}wYQ{Vp>>Jv&sYgx1P zE2tYle1dvUY4lQRH~)yzV4!&Rxm_gnnJ&nME-8#7@d=WqNRr^Qu}?e9z4&9=Ctt-y zCB`=0!tiC=P%~_x%J@gV#^A*JF!j{;KThLcPllkJ2bNVVg>imA+IaslCz7C&B9dm6 zr?gKUVs`pLBxw;*1f^pcT6GMm3k zSgXBHf?NAe9Y*886xDzHg7GbPFnGxZ)_vmJ4AnLgm4}g}$?>TNXxC>7)-A55nX`Ld zD^B%#`lYYN794AREm&Ezo-20zhN0TVY+G}n!rZ>cIP&y;NYdaG=3UOT4N+0}Q zxE*y@GV!QcaAHP_DYWY|9G!X)^9fO0!IcJR*WcjSp53IKX3xPnoh+lRg*{0NC3k^8 z^bl@|3kiRoKQK+wINB}g%xiz7U2w4!!19){JR!23R$=QyxCNTmJZIMZs7q znk(+0u74lB?)$il9&i70PrzWA_!l}O|F360`UBjG5A=Wf(s?dh!Hdaqk8S%Q?rpuo zOz-Tke%YPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr8 z5;g*a=||xJ0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~000D^ zNklrD#@@Cf(Ux4ULp!YG%>15Bea2q6GCJLB<(B24^&#bM{)RhrRbX``)?cG;O%teec8$3Am&vFEN2xXny`Fl6 zUcgsJwpq7VmV2v$nc&iM6^umA2Vy1+J@vhtGw_vzTPzvw_Qq6kD3-`*0+-GRXncln z!!y6S>jGc?@;R$L3L$nGi5e(8GxLE=6%mg!4eQm1D2T9V%Q1IN;7eaTYqh~ToS5KZ zUQIn_0f^=R6w?)83cYDfGVL`L7H|K{%>thO{Ashwqg*rr%&7pusF{EWu73zObTfMX zSe^d_ih|UlOafiHbKC*660rIrY&MTdmfOsOq~?$U!To)ef!iOU@CADAk02=Z6+!ZF zYZPi64S>l5kDEw|`We)hn3kxNs4oK{jq|do)~GKLUrdmr!22TII`P=$AhEDXp7UGjr-FQ-}B9FC4G;Cf%eu$H1VazNif5jiE8H zgx2B}@qYtiw=%_4fiQ0_SdQy!)97n6aLWc3ZrsD;bT~%+m<{+-G9R$-i#K6jpEZX!clOwzE=T8Q>ylA7oS}Fx5 zq3bx+NWg<@(rho`zm7)#FzwqO!XDVm`GYSa7f*$Nbv2Ealtq=>lxH(R#WUa0=pSb2 zj)##elbrkNC2Zzmh?T3sTPh{BxZ=0QI{Y6)u3qHwiBZa#so02V?>a8y33ZT(!Gq`*${?b{-M_=RIj~S@- zK#udqn%$?Jq#i3JUJ9fvk=W+Udjw0p162?MwJ`5rwg!`evC-F=_-;Qc8qNw0VO7G~ ze9xV4;aULR7a&|t4DE*V^>9&(pEu0G$s5UM5t=aEf6EbBgI(Q@{DR%o*&_r8m}=4J2bjtJhP zF<5T3`^<=h%z9WhxbHpOb+5NyZ|{iQtQzcfRsFX$_wU2a`9gpA`OKEh<(;GVvQ6*f z=Jg75Xj`ZEd8t$eT$ct69{hm$y~1>lk*#&7?j^RQi_QDzX7eAk6JhH3`5$Wl0000< KMNUMnLSTZs5`B#T diff --git a/index.html b/index.html index 5df6090..6a7c78a 100644 --- a/index.html +++ b/index.html @@ -6,12 +6,10 @@ - +
- -
- + - -
-
- - - -
- - - - -
+
+
+
- -
- - - -
- - - - -
+
-
- diff --git a/mpd.lua b/mpd.lua index 0200a8a..31275b6 100755 --- a/mpd.lua +++ b/mpd.lua @@ -1,5 +1,9 @@ #!/usr/bin/lua +require "uci" +require("socket") +json=require("json") + function url_decode(str) if not str then return nil end str = string.gsub (str, "+", " ") @@ -65,9 +69,6 @@ function process_directory(directory) return res end -require "uci" -require("socket") - function mpd_new(settings) local client = {} if settings == nil then settings = {} end @@ -82,7 +83,6 @@ function mpd_new(settings) return client end - function mpd_send(mpd,action,raw) local command = string.format("%s\n", action) @@ -160,13 +160,15 @@ function mpd_send(mpd,action,raw) return values end - -json=require("json") - x = uci.cursor() + settings = {} settings['host'] = x.get("mpd","server","host") or "localhost" settings['port'] = x.get("mpd","server","port") or 6600 +settings['timeout'] = x.get("mpd","server","timeout") or 1 + +volstep = x.get("mpd","control","volume_step") or 3 + password = x.get("mpd","server","password") if password then settings["password"] = password @@ -177,62 +179,89 @@ m = mpd_new(settings) command = url_decode(os.getenv('QUERY_STRING')) if not command or command=="" then - command="status" + command="idle" end if command=="play" or command=="pause" or command=="stop" or command=="previous" or command=="next" then + res=mpd_send(m,command) + +elseif command=="idle" then + + m.timeout=30 + res=mpd_send(m,command) + elseif command=="vold" then + status=mpd_send(m,"status") volume=tonumber(status["volume"]) - res=mpd_send(m,"setvol "..(volume-3)) + res=mpd_send(m,"setvol "..(volume-volstep)) + elseif command=="volu" then + status=mpd_send(m,"status") volume=tonumber(status["volume"]) - res=mpd_send(m,"setvol "..(volume+3)) + res=mpd_send(m,"setvol "..(volume+volstep)) + elseif command=="status" then + res=mpd_send(m,"status") song=res["song"] playlist=mpd_send(m,"playlist",1) pl=process_playlist(playlist) + if song then res['current_playing']=pl[song]['name'] else res['current_playing']="No songs selected" end + elseif command=="playlist" then + playlist=mpd_send(m,"playlist",1) res=process_playlist(playlist) + elseif command=="repeat" then + status=mpd_send(m,"status") rep=1-status["repeat"] res=mpd_send(m,"repeat "..rep) + elseif string.starts(command,"cpl") then + cmd=split(command,"|") id=cmd[3] command=cmd[2] + if command=="playitem" then command="play "..id res=mpd_send(m,command) end + if command=="clear" then res=mpd_send(m,"clear") end + if command=="remove" then command="delete "..id res=mpd_send(m,command) end + if command=="moveup" then command="swap "..id.." "..(id-1) res=mpd_send(m,command) end + if command=="movedown" then command="swap "..id.." "..(id+1) res=mpd_send(m,command) end + elseif string.starts(command,"lists") then + cmd=split(command,"|") command=cmd[2] + if command=="load" then if not cmd[3] then lists=mpd_send(m,"listplaylists",1) @@ -241,12 +270,15 @@ elseif string.starts(command,"lists") then res=mpd_send(m,"load "..cmd[3],1) end end + if command=="save" and cmd[3] then res=mpd_send(m,"save "..cmd[3],1) end + if command=="delete" and cmd[3] then res=mpd_send(m,"rm "..cmd[3],1) end + if command=="edit" then if cmd[3] then dir=mpd_send(m,"lsinfo \""..cmd[3].."\"",1) @@ -255,12 +287,14 @@ elseif string.starts(command,"lists") then end res=process_directory(dir) end + if command=="add" then res={} if cmd[3] then res=mpd_send(m,"add \""..cmd[3].."\"") end end + end if not res then -- 2.34.1