From 8151ec6429cf4ce902cae81cced059290d2b43fe Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 26 Jan 2011 20:59:56 -0500 Subject: [PATCH 1/5] -added now-playing bar with new design! --- application/Bootstrap.php | 2 + application/layouts/scripts/library.phtml | 3 +- application/layouts/scripts/search.phtml | 2 +- .../views/scripts/nowplaying/index.phtml | 2 +- .../views/scripts/partialviews/header.phtml | 38 +++++++ public/js/playlist/playlist.js | 103 +++++++++++------- pypo/scripts/ls_script.liq | 2 +- 7 files changed, 108 insertions(+), 44 deletions(-) diff --git a/application/Bootstrap.php b/application/Bootstrap.php index f7405c561..979db159f 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -56,6 +56,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendFile('/js/libs/stuHover.js','text/javascript'); $view->headScript()->appendFile('/js/progressbar/jquery.progressbar.min.js','text/javascript'); $view->headScript()->appendFile('/js/playlist/playlist.js','text/javascript'); + + $view->headLink()->appendStylesheet('/css/styles.css'); } } diff --git a/application/layouts/scripts/library.phtml b/application/layouts/scripts/library.phtml index 13ab089e0..c64a9d832 100644 --- a/application/layouts/scripts/library.phtml +++ b/application/layouts/scripts/library.phtml @@ -9,10 +9,9 @@ +
partial('partialviews/header.phtml') ?>
-
- navigation()->menu()->setPartial($partial); ?> diff --git a/application/layouts/scripts/search.phtml b/application/layouts/scripts/search.phtml index 2145a32e2..1d9ac2a37 100644 --- a/application/layouts/scripts/search.phtml +++ b/application/layouts/scripts/search.phtml @@ -8,7 +8,7 @@ headLink() ?> - +
partial('partialviews/header.phtml') ?>
diff --git a/application/views/scripts/nowplaying/index.phtml b/application/views/scripts/nowplaying/index.phtml index cc05408eb..78ee78b5f 100644 --- a/application/views/scripts/nowplaying/index.phtml +++ b/application/views/scripts/nowplaying/index.phtml @@ -58,7 +58,7 @@ function createDataGrid(){ $('#example').dataTable( { "bSort" : false, "bJQueryUI": true, - "bFilter": true, + "bFilter": false, "bInfo": false, "bLengthChange": false, "aaData": datagridData.rows, diff --git a/application/views/scripts/partialviews/header.phtml b/application/views/scripts/partialviews/header.phtml index 2bb4e380d..b1d2b8506 100644 --- a/application/views/scripts/partialviews/header.phtml +++ b/application/views/scripts/partialviews/header.phtml @@ -1,3 +1,4 @@ + +
+
+
Previous: 04:45
+
+
03:0501:05
+ Engl - Rammstein 04:10
+
+
+
+
Next: Engl - Rammstein 03:56
+
+
+
 
+
The Fast Show 16:00 - 17:00
+
+
+
+
+
+
ON AIR
+
+
+
    +
  • Station time
  • +
  • 16:45:16
  • +
  • CET
  • +
+
+
+
    +
  • Signed in:
  • +
  • Vladimir Stefanovic
  • +
  • Logout
  • +
+
+
diff --git a/application/views/scripts/partialviews/header.phtml b/application/views/scripts/partialviews/header.phtml index 5be1a98e8..e2011330d 100644 --- a/application/views/scripts/partialviews/header.phtml +++ b/application/views/scripts/partialviews/header.phtml @@ -34,24 +34,3 @@ - - - - diff --git a/application/views/scripts/schedule/view-playlist.phtml b/application/views/scripts/schedule/view-playlist.phtml deleted file mode 100644 index a940ce285..000000000 --- a/application/views/scripts/schedule/view-playlist.phtml +++ /dev/null @@ -1,22 +0,0 @@ -
-
Listen
-
Volume
-
- -
-
Show:
-
Playlist:
-
Host:
-
- -
-
Previous:
-
Current:
-
Upcoming:
-
- -
-
Start:
-
End:
-
|
- diff --git a/public/js/playlist/nowplayingdatagrid.js b/public/js/playlist/nowplayingdatagrid.js new file mode 100644 index 000000000..b2b47f9c6 --- /dev/null +++ b/public/js/playlist/nowplayingdatagrid.js @@ -0,0 +1,94 @@ +function getDateText(obj){ + //var str = ""; + //for (s in obj.oSettings) + // str += s + ", "; + //alert(str); + var str = obj.aData[ obj.iDataColumn ]; + if (str.indexOf(" ") != -1){ + return changeTimePrecision(str.substring(0, str.indexOf(" "))); + } + return str; +} + +function getTimeText(obj){ + var str = obj.aData[ obj.iDataColumn ]; + if (str.indexOf(" ") != -1){ + return changeTimePrecision(str.substring(str.indexOf(" ")+1)); + } + return str; +} + +function changeTimePrecisionInit(obj){ + var str = obj.aData[ obj.iDataColumn ]; + return changeTimePrecision(str); +} + +function changeTimePrecision(str){ + if (str.indexOf(".") != -1){ + if (str.length - str.indexOf(".") > 2) + var extraLength = str.length - str.indexOf(".") -3; + return str.substring(0, str.length - extraLength); + } + return str; +} + +function notifySongEnd(){ + for (row in datagridData.rows){ + if (row[0] == "c") + row[0] = "p"; + if (row[0] == "n"){ + row[0] = "c"; + break; + } + } + + createDataGrid(); +} + +function createDataGrid(){ + + datagridData.columnHeaders[1]["fnRender"] = getDateText; + datagridData.columnHeaders[2]["fnRender"] = getTimeText; + datagridData.columnHeaders[3]["fnRender"] = getTimeText; + datagridData.columnHeaders[4]["fnRender"] = changeTimePrecisionInit; + + $('#demo').html( '
' ); + $('#nowplayingtable').dataTable( { + "bSort" : false, + "bJQueryUI": true, + "bFilter": false, + "bInfo": false, + "bLengthChange": false, + "aaData": datagridData.rows, + "aoColumns": datagridData.columnHeaders, + "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { + if (aData[0] == "p"){ + //$(nRow).attr("style", "background-color:blue;"); + } else if (aData[0] == "c"){ + $(nRow).attr("style", "background-color:#61B329;"); + } else if (aData[0] == "n"){ + } + return nRow; + } + } ); +} + +var registered = false + +function init2(){ + $.ajax({ url: "/Nowplaying/get-data-grid-data/format/json", dataType:"json", success:function(data){ + datagridData = data.entries; + createDataGrid(); + }}); + + if (typeof registerSongEndListener == 'function' && !registered){ + registered = true; + registerSongEndListener(notifySongEnd); + } + + setTimeout(init2, 5000); +} + +$(document).ready(function() { + init2(); +}); diff --git a/public/js/playlist/playlist.js b/public/js/playlist/playlist.js index 83ffb6096..56a76300b 100644 --- a/public/js/playlist/playlist.js +++ b/public/js/playlist/playlist.js @@ -165,11 +165,11 @@ function updateProgressBarValue(){ function updatePlaybar(){ /* Column 0 update */ - $('#previous').text("none,"); + $('#previous').text("Prev Song: N/A"); $('#prev-length').text("n/a,"); - $('#current').text("none,"); - $('#next').text("none,"); - $('#next-length').text("n/a"); + $('#current').text("Current Song: N/A"); + $('#next').text("Next Song: N/A"); + $('#next-length').empty(); if (previousSongs.length > 0){ $('#previous').text(getTrackInfo(previousSongs[previousSongs.length-1])); $('#prev-length').text(previousSongs[previousSongs.length-1].clip_length); @@ -204,7 +204,7 @@ function updatePlaybar(){ } /* Column 1 update */ - $('#playlist').text("Unknown"); + $('#playlist').text("Current Show: N/A"); for (var i=0; i zT!5*|?GK}zlnMie-n{z{hT=$;rU?ky$+qqbpGZvC_U+C1&iA733kq?-q4CHnBA3kE astJWEqtqebP|XTcn2Prc4vQz30suSWax&ro diff --git a/public/js/progressbar/images/progressbg_black.gif b/public/js/progressbar/images/progressbg_black.gif deleted file mode 100644 index 74fd1f9b3e052e2ca18058526c39f6eaef580cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1626 zcmZ?wbhEHb{J_A&(9XcX%*^cP=jZS5KWEOIsZ*!+_xJbq_I7u7Po6xvt*x!5rlz8z zqNJpxtgNh|p`od%simc*s;a84uI|&PPaPc{A3uIfN=iydNQjM%jgODd%*;$nOG{5r zPf1CMh=_=aihB3%-TU|Nqobqm-@kwF-n}bVu3Wx+`ND+@=g*&K7zLvtFwh~O19AW; zFR*j`V_@Wv@z}87U^9oXR?LYF3lFz5DtXQE*tqCuw*)hXz=S}h<9!PDO?xyhJz`*D z4O(VWut2qOI!B0{$ASb#W;WiUS0x`FFt*GWkh>7GVDmxWIW~>o{;X7R3Y^O$!xGE2 zW!c5m?n{|?xfGc$uC^@nda-j$I@9_@X`hJG+t%LRUhw$TT<`7c?(VMOl(=zv(^Ez+ z)_`?6KN~d8Ei#|{Pv!T4mx&vAmrRO{u~_?biJiK1T}`Ob;|2cRNy~11T^2Z}B6xM& z*CcuP@U=g>N5ZM( z98XO4{d0SF-`>Bu_McUQ?(C+o7Z$Cay|*u7P0;2Y7oUIeF+2F_aKB{FS6)TOnlC~c zqEl)=t$cd7kwZ;GJb=$cqcL72V8Vg?Igw^z`NDPucLOi6M%>SzPmaB8WhqTXBHCGO?JoqBI#G|eBVX^Ka zj+=FR|BB4-cvr|8TafA5@OXN{y0n9=5-AfJS*3CoJY$n7xX{QhU-N)*PT{#q$JyCM z8ywk-E?KJ2Enj!?*}TG2kr@lcpX^-5T5v8iV{YfGndJrM*oLi{Ib!fRl z3&X1wOQvP5TDho8>eb5StGrgN{l-8QXmriN1DRn$(WUcyk>e=jGJ1cdzed|0k z=eHi}Y+O{ul)Yl9e2Rj`yc)LK&o@*&JGo+hU)6@3*^}Pw)Lbs-arz*~i$&f}yI!rc zZrc53nK#p(kDI*L@A`VrI)BgaYuW4fGu*D$-~WHn>g+9-|DDp@R5;6e#jLAgvvf8d z?aF?;_0p!7uV%0&F4){+iX5-{rS(P3m*4tN-o%)USoX0Uz*qCoZ;!28)r=_D=;|B%iXp0TKlh^ zMTe@p4wNoDlGU@EHO;z8<51l6xjDx()1$x5&pW;Ijne}4FTGCp8`$4%f6(wh*5aXt zL|xOvE@i!n$1U!4KORkBKeyw_MDxBw&U4D&{d~T_+2xXlWMRmq7fbw0etE23elO60 G!5RRh`|ElD diff --git a/public/js/progressbar/images/progressbg_green.gif b/public/js/progressbar/images/progressbg_green.gif deleted file mode 100644 index f3f3bf681141982dc72429b21b4c8af7dbfd2b70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmZ?wbhEHb{J_A&(9Xb+l$vz#b;JHwRXbng?Rb&B?RnasS0x*s#jbelz3h?O(udAV z9y+ak61L%K)Yq?HH$P8Y{Uo6GmT=cio{6`mr`}bWa!0ZCI#bJahEJb9wclWS_Uzf+ zyLWHhy2UUGMnhmIgn$mnk)XW5&hd|dkweB~!-9j&9Ku>LCpIiR+%BN(HOFIP(jf*W zwhS4E28YIeHYceEFFrCfv2cm4h}qfT*gV}pdWOr%qNS&2=%+7Rb5kh&++^$Qdq+5@ zr2Ege3b%?lwPoeyib#-+FZ^@S*8xJ(IGrLXtbE9F|#f27UKe5 ze|J*~xABYU9Yq^o-95d1ef*l(y>+$)4F@6)^1Qisbmol}Ub}dutlM;c>fAZiotzZ* zYy0Ns=NHVbt9AIH+I(O!zd^woA*M@L*Tg;!Ia}5EX2zD}{nu=zw_Ut&pqYDq)d3S` zHUT*fwcK6ba%Y~ceBSf!N9D&8=L&-4Me zP3E%uP5-?5zPkJV`T6-R96~G>jI5#}84p;*Vir7T;&w}T(9B_^v9Ot6Ok!aRZ&*fR zlZ2K>Vyk%455*RlvKI<$8p~EZ>eAWv;!(H3F^$JPCf76^*(4(j9yO{aX*9Npw!BcD z;NcrZz&%;MSPv^WQ~ z{>*hd6K7|Xy-1r7pts`*Tg9`L&*#;Ad-;5R1Dn>11ubG#YLk*?Sw3g!Jms0P*jb5d y`I5e%sLV#0lvOX6%_)2Ja`}Qbtye3SOv_s3x?NSD+|H4{TcmQQK=FDE)AcBZPoF;Bh+}*9?AhJB zcW>Rg#V`s+LtrR`fDXu!puE7&@sEL#L&jsnf`iQ*!dfvWHY_~cE}-l+$75sCAqFP4 z3>k+8hsJ(3C#eT7J~A}1aEYym+1cROJl#NghReyKrKe};r!QM`Qz-r1Wb5pEM>waX z`_H!uw~9EmW##4N0gJundTm{Gb#(-9$(J7+4>YqgyG{CYqhZ;_g%)Q&xkv}E4VbTg zcT){F>Okb+!c!2O@x`_~7tAX8S&wrq>5&iEggpEB^fJ^sDeq z=Cb=u|GfIXy8Hh5`S~pzLM#@HtfC?r4_L%v7CdO;c1w8B%weRlu$f;>Vqpt!SVm%# zgqBBQt9a56#TJ>e7Yb||%T_$<(%JUnQMbV{jmJGE*EAg2BqIzSHL50QG`5MhyilIt zcNYT3{5OtVk=^HHaIplm6UjSaxxt#o13T(!py3=Ih_x zl)`QNB6>&B##eVwZ(kq3CU$R~Z9&6j7-=kQ<`8D%fhCIsm1c*0ikY~}NLHQ!!7pWncy^ wFDNRrQ6^>8%Vl%QUcFqtpiS%5iY3#sR=KWNw(8ZYHQQdjTFuPH%EDj`0N~Rv?EnA( diff --git a/public/js/progressbar/images/progressbg_yellow.gif b/public/js/progressbar/images/progressbg_yellow.gif deleted file mode 100644 index fdb0dfc981cbbfbca4e80f4ff5ccfac247b3be91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmZ?wbhEHb{J_A&(9Xb+nws?bX~U~0RWBaqy?B`Y{6X5Q$0g71#Xi36{phCK!yC>I zZ#X@<6ZZ6O)Yq?HpFc=^awp){dEuMqcy3>izI$2a&Lzd`r?arL;I#qs z_3v&<;WmB|y`yO3tGlPSua937ySL7^py5EoL7q4Fj?TQX!fO|=ly#fVPn|obx|5T_ zer@0U{QQF1b+ryZRGSYh<~JxYCWcA!n-^-^|#Oy#Jc5^tOu^4m5MmuR37D z%qAemp_aSrTkg!WmCt+L{iytS;#^_y^UPZ7^A8^!{>N-&c3vKR-Xeg+qwNf{|5JB;x^#Sj>V4P26q?51KiQG!{1Vi%BeO;SI}3 zY?9FONNg2P`k~k&Q}#lEO=H=LM_oGGUOehHIHvKq$K;xZBb#J|!J|giB#p*4(Uup= z6P&z$EN*i(s!-{$)$&Z4>=(A+;FOTC%%@W$(pEm57E|`}>GXuO1rH{vlvzBRoEGPx z)}Ogh1UM^qIruAyYl4)71Tvsex^=j3cZLeOfW@ck$VXy`OH^w~^ diff --git a/public/js/progressbar/jquery.progressbar.min.js b/public/js/progressbar/jquery.progressbar.min.js deleted file mode 100644 index 4689bc4d2..000000000 --- a/public/js/progressbar/jquery.progressbar.min.js +++ /dev/null @@ -1,9 +0,0 @@ - -(function($){$.extend({progressBar:new function(){this.defaults={increment:2,speed:15,showText:true,width:120,boxImage:'/js/progressbar/images/progressbar.gif',barImage:'/js/progressbar/images/progressbg_green.gif',height:12};this.construct=function(arg1,arg2){var argpercentage=null;var argconfig=null;if(arg1!=null){if(!isNaN(arg1)){argpercentage=arg1;if(arg2!=null){argconfig=arg2;}}else{argconfig=arg1;}} -return this.each(function(child){var pb=this;if(argpercentage!=null&&this.bar!=null&&this.config!=null){this.config.tpercentage=argpercentage;if(argconfig!=null) -pb.config=$.extend(this.config,argconfig);}else{var $this=$(this);var config=$.extend({},$.progressBar.defaults,argconfig);var percentage=argpercentage;if(argpercentage==null) -var percentage=$this.html().replace("%","");$this.html("");var bar=document.createElement('img');var text=document.createElement('span');bar.id=this.id+"_percentImage";text.id=this.id+"_percentText";bar.src=config.boxImage;bar.width=config.width;var $bar=$(bar);var $text=$(text);this.bar=$bar;this.ntext=$text;this.config=config;this.config.cpercentage=0;this.config.tpercentage=percentage;$bar.css("width",config.width+"px");$bar.css("height",config.height+"px");$bar.css("background-image","url("+config.barImage+")");$bar.css("padding","0");$bar.css("margin","0");$this.append($bar);$this.append($text);bar.alt=this.tpercentage;bar.title=this.tpercentage;} -var t=setInterval(function(){var config=pb.config;var cpercentage=parseInt(config.cpercentage);var tpercentage=parseInt(config.tpercentage);var increment=parseInt(config.increment);var bar=pb.bar;var text=pb.ntext;var pixels=config.width/100;bar.css("background-position",(((config.width*-1))+(cpercentage*pixels))+'px 50%');if(config.showText) -text.html(" "+Math.round(cpercentage)+"%");if(cpercentage>tpercentage){if(cpercentage-incrementtpercentage){pb.config.cpercentage=tpercentage}else{pb.config.cpercentage+=increment;}} -else{clearInterval(t);}},pb.config.speed);});};}});$.fn.extend({progressBar:$.progressBar.construct});})(jQuery); From 881bb042a3c2e511806178597e18217938ebae5e Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 27 Jan 2011 10:07:30 -0500 Subject: [PATCH 5/5] -made pypo not schedule playlists more than 5 seconds old. -fixed up some time formatting on the now playing bar -now-playing datagrid should switch much faster between songs -updated menu --- application/configs/navigation.php | 83 +++++++++++++++--------- public/js/playlist/nowplayingdatagrid.js | 20 +++--- public/js/playlist/playlist.js | 56 ++++++++++++++-- pypo/pypo-cli.py | 15 ++++- 4 files changed, 123 insertions(+), 51 deletions(-) diff --git a/application/configs/navigation.php b/application/configs/navigation.php index f08d48139..c6a66b77e 100644 --- a/application/configs/navigation.php +++ b/application/configs/navigation.php @@ -9,12 +9,43 @@ */ $pages = array( array( - 'label' => 'Home', - 'module' => 'default', + 'label' => 'Now Playing', + 'module' => 'Nowplaying', 'controller' => 'index', 'action' => 'index', 'order' => -100 // make sure home is the first page ), + array( + 'label' => 'Schedule', + 'module' => 'default', + 'controller' => 'Schedule', + 'action' => 'index', + 'resource' => 'schedule', + 'pages' => array( + array( + 'label' => 'Add Show', + 'module' => 'default', + 'controller' => 'Schedule', + 'action' => 'add-show-dialog', + 'resource' => 'schedule' + ) + ) + ), + array( + 'label' => 'Playlist Builder', + 'module' => 'default', + 'controller' => 'Library', + 'action' => 'index', + 'resource' => 'library' + ), + array( + 'label' => 'Add Audio', + 'module' => 'default', + 'controller' => 'Plupload', + 'action' => 'plupload', + 'resource' => 'plupload' + ), + array( 'label' => 'Add User', 'module' => 'default', @@ -22,6 +53,24 @@ $pages = array( 'action' => 'add-user', 'resource' => 'user' ), + array( + 'label' => 'Configure', + 'module' => 'default', + 'controller' => 'Nowplaying', + 'pages' => array( + array( + 'label' => 'Preferences', + 'module' => 'default', + 'controller' => 'Nowplaying' + ), + array( + 'label' => 'Manage Users', + 'module' => 'default', + 'controller' => 'Nowplaying' + ) + ) + ) + /* array( 'label' => 'Media Library', 'module' => 'default', @@ -44,36 +93,8 @@ $pages = array( 'resource' => 'search' ) ) - ), - array( - 'label' => 'Now Playing', - 'module' => 'default', - 'controller' => 'Nowplaying', - 'action' => 'index' - ), - array( - 'label' => 'Schedule', - 'module' => 'default', - 'controller' => 'Schedule', - 'action' => 'index', - 'resource' => 'schedule', - 'pages' => array( - array( - 'label' => 'Add Show', - 'module' => 'default', - 'controller' => 'Schedule', - 'action' => 'add-show-dialog', - 'resource' => 'schedule' - ) - ) - ), - array( - 'label' => 'Logout', - 'module' => 'default', - 'controller' => 'Login', - 'action' => 'logout', - 'resource' => 'login' ) + */ ); // Create container from array diff --git a/public/js/playlist/nowplayingdatagrid.js b/public/js/playlist/nowplayingdatagrid.js index b2b47f9c6..2ffbfc858 100644 --- a/public/js/playlist/nowplayingdatagrid.js +++ b/public/js/playlist/nowplayingdatagrid.js @@ -1,8 +1,7 @@ +var registered = false; +var datagridData; + function getDateText(obj){ - //var str = ""; - //for (s in obj.oSettings) - // str += s + ", "; - //alert(str); var str = obj.aData[ obj.iDataColumn ]; if (str.indexOf(" ") != -1){ return changeTimePrecision(str.substring(0, str.indexOf(" "))); @@ -33,11 +32,12 @@ function changeTimePrecision(str){ } function notifySongEnd(){ - for (row in datagridData.rows){ - if (row[0] == "c") - row[0] = "p"; - if (row[0] == "n"){ - row[0] = "c"; + //alert("length " + datagridData.rows.length); + for (var i=0; i 0){ $('#previous').text(getTrackInfo(previousSongs[previousSongs.length-1])); - $('#prev-length').text(previousSongs[previousSongs.length-1].clip_length); + $('#prev-length').text(convertToHHMMSSmm(previousSongs[previousSongs.length-1].songLengthMs)); } if (currentSong.length > 0){ $('#current').text(getTrackInfo(currentSong[0])); } if (nextSongs.length > 0){ $('#next').text(getTrackInfo(nextSongs[0])); - $('#next-length').text(previousSongs[previousSongs.length-1].clip_length); + $('#next-length').text(convertToHHMMSSmm(nextSongs[0].songLengthMs)); } $('#start').empty(); @@ -200,7 +242,7 @@ function updatePlaybar(){ $('#time-elapsed').text(convertToHHMMSS(estimatedSchedulePosixTime - songStartRoughly)); $('#time-remaining').text(convertToHHMMSS(songEndRoughly - estimatedSchedulePosixTime)); - $('#song-length').text(currentSong[i].clip_length); + $('#song-length').text(convertToHHMMSSmm(currentSong[i].songLengthMs)); } /* Column 1 update */ diff --git a/pypo/pypo-cli.py b/pypo/pypo-cli.py index fb518b554..98e61c42e 100755 --- a/pypo/pypo-cli.py +++ b/pypo/pypo-cli.py @@ -117,7 +117,15 @@ class Playout: self.api_client = api_client.api_client_factory(config) self.cue_file = CueFile() self.silence_file = config["file_dir"] + 'basic/silence.mp3' + + """ + push_ahead2 MUST be < push_ahead. The difference in these two values + gives the number of seconds of the window of opportunity for the scheduler + to catch when a playlist is to be played. + """ self.push_ahead = 15 + self.push_ahead2 = 10 + self.range_updated = False @@ -578,10 +586,13 @@ class Playout: playedItems = self.load_schedule_tracker() tcoming = time.localtime(time.time() + self.push_ahead) + tcoming2 = time.localtime(time.time() + self.push_ahead2) tnow = time.localtime(time.time()) + str_tcoming_s = "%04d-%02d-%02d-%02d-%02d-%02d" % (tcoming[0], tcoming[1], tcoming[2], tcoming[3], tcoming[4], tcoming[5]) - + str_tcoming2_s = "%04d-%02d-%02d-%02d-%02d-%02d" % (tcoming2[0], tcoming2[1], tcoming2[2], tcoming2[3], tcoming2[4], tcoming2[5]) + if self.schedule == None: logger.warn('Unable to loop schedule - maybe write in progress?') logger.warn('Will try again in next loop.') @@ -589,7 +600,7 @@ class Playout: else: for pkey in self.schedule: playedFlag = (pkey in playedItems) and playedItems[pkey].get("played", 0) - if pkey[0:19] <= str_tcoming_s and not playedFlag: + if pkey[0:19] == str_tcoming_s or (pkey[0:19] < str_tcoming_s and pkey[0:19] > str_tcoming2_s and not playedFlag): logger.debug('Preparing to push playlist scheduled at: %s', pkey) playlist = self.schedule[pkey]