{"id":579,"date":"2010-05-19T14:22:09","date_gmt":"2010-05-19T13:22:09","guid":{"rendered":"http:\/\/www.donatantonio.net\/blog\/?p=579"},"modified":"2011-07-19T09:52:29","modified_gmt":"2011-07-19T08:52:29","slug":"shuffle-playlist-con-php-e-mediaplayer","status":"publish","type":"post","link":"https:\/\/www.donatantonio.net\/blog\/guide_tutorial\/php\/shuffle-playlist-con-php-e-mediaplayer\/","title":{"rendered":"Shuffle playlist con PHP e MediaPlayer"},"content":{"rendered":"<p>In questo articolo vedremo come realizzare una pagina web che permetta l&#8217;ascolto, tramite il plugin di <em>Windows Media Player<\/em>, di una playlist in formato <em>m3u<\/em> in modalit\u00e0 shuffle cio\u00e8 in ordine casuale di brani.<br \/>\nPi\u00f9 precisamente lo script php realizzer\u00e0 una playlist diversa per ogni chiamata della pagina, in modo tale che ogni utente connesso ascolter\u00e0 la stessa playlist ma in un ordine differente di esecuzione. Potremo, con le dovute differenze, creare una sorta di <em>webradio<\/em>.<\/p>\n<p>Innanzittutto \u00e8 necessario creare un file con estensione <em>.m3u<\/em> che conterr\u00e0 semplicemente la lista degli url degli mp3 da eseguire.<br \/>\nAd esempio l&#8217;ipotetico file <strong>playlist.m3u<\/strong>:<\/p>\n<p><!--[if lt IE 9]><script>document.createElement('audio');<\/script><![endif]-->\n<audio class=\"wp-audio-shortcode\" id=\"audio-579-1\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/www.miosito.com\/musica\/canzone_0.mp3?_=1\" \/><a href=\"http:\/\/www.miosito.com\/musica\/canzone_0.mp3\">http:\/\/www.miosito.com\/musica\/canzone_0.mp3<\/a><\/audio><br \/>\n<audio class=\"wp-audio-shortcode\" id=\"audio-579-2\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/www.miosito.com\/musica\/canzone_1.mp3?_=2\" \/><a href=\"http:\/\/www.miosito.com\/musica\/canzone_1.mp3\">http:\/\/www.miosito.com\/musica\/canzone_1.mp3<\/a><\/audio><br \/>\n<audio class=\"wp-audio-shortcode\" id=\"audio-579-3\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/www.miosito.com\/musica\/canzone_2.mp3?_=3\" \/><a href=\"http:\/\/www.miosito.com\/musica\/canzone_2.mp3\">http:\/\/www.miosito.com\/musica\/canzone_2.mp3<\/a><\/audio><br \/>\n<audio class=\"wp-audio-shortcode\" id=\"audio-579-4\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/www.miosito.com\/musica\/canzone_3.mp3?_=4\" \/><a href=\"http:\/\/www.miosito.com\/musica\/canzone_3.mp3\">http:\/\/www.miosito.com\/musica\/canzone_3.mp3<\/a><\/audio><br \/>\n<audio class=\"wp-audio-shortcode\" id=\"audio-579-5\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/www.miosito.com\/musica\/canzone_4.mp3?_=5\" \/><a href=\"http:\/\/www.miosito.com\/musica\/canzone_4.mp3\">http:\/\/www.miosito.com\/musica\/canzone_4.mp3<\/a><\/audio><\/p>\n<p>Tale file sar\u00e0 locato nel nostro spazio web ad esempio nella cartella \/stream.<\/p>\n<p>Andiamo ora a vedere il codice php che implementer\u00e0 la funzione shuffle:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\n\/\/ url del file m3u originale\r\n$file_playlist = &quot;\/stream\/playlist.m3u&quot;;\r\n\r\n\/\/ url del file m3u casuale, utilizzo valore random per differenziarlo\r\n$file_playlist_shuffle = &quot;\/stream\/playlist_&quot;.rand (10,9999).&quot;.m3u&quot;;\r\n\r\n\/\/ scarico la playlist in un array, ogni elemento \u00e8 un url\r\n$lines = file($file_playlist);\r\n\r\n\/\/ ordino in modo casuale gli elementi dell'array\r\nshuffle($lines);\r\n\r\n\/\/ realizzo il file m3u con la playlist casuale\r\n$var=fopen($file_playlist_shuffle,&quot;w&quot;);\r\nfor($i=0; $i&lt;count($lines); $i++){\r\n    fwrite($var, $lines[$i]);\r\n}\r\nfclose($var);\r\n?&gt;\r\n<\/pre>\n<p>Lo script appena visto verr\u00e0 inserito all&#8217;interno della nostra pagina web prima dell&#8217;aperura del tag html. Una volta conslusa l&#8217;esecuzione del codice php, avremo nella nostra cartella <em>\/stream<\/em> il file originale &#8220;playlist.m3u&#8221; e un file tipo &#8220;playlist_153.m3u&#8221; che conterr\u00e0 la playlist in un ordine diverso. (il numero 153 \u00e8 solo di esempio)<\/p>\n<p>Il player audio andr\u00e0 quindi a leggere il flusso audio dal secondo file appena realizzato.<br \/>\nVediamo quindi il codice completo <strong>player.php<\/strong>:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\n\/\/ -- INIZIO configurazione script\r\n$url_sito = &quot;http:\/\/www.donatantonio.it\/&quot;;\r\n$file_playlist = &quot;stream\/playlist.m3u&quot;;\r\n$file_playlist_shuffle = &quot;stream\/playlist_&quot;.rand (10,9999).&quot;.m3u&quot;;\r\n\/\/ -- FINE configurazione\r\n\r\n$lines = file($file_playlist);\r\nshuffle($lines);\r\n$var=fopen($file_playlist_shuffle,&quot;w&quot;);\r\nfor($i=0; $i&lt;count($lines); $i++){\r\n    fwrite($var, $lines[$i]);\r\n}\r\nfclose($var);\r\n?&gt;\r\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=iso-8859-1&quot; \/&gt;\r\n&lt;meta name=&quot;author&quot; content=&quot;Fabio Donatantonio&quot; \/&gt;\r\n&lt;title&gt;Media Player - Shuffle Mode&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;h1&gt;Stai ascoltando la playlist&lt;\/h1&gt;\r\n&lt;!-- Codice lettore Media Player --&gt;\r\n&lt;object id=&quot;mediaplayer&quot; classid=&quot;clsid:6bf52a52-394a-11d3-b153-00c04f79faa6&quot;\r\nwidth=&quot;300&quot; height=&quot;300&quot;\r\ncodebase = &quot;http:\/\/activex.microsoft.com\/activex\/controls\/mplayer\/en\/nsmp2inf.cab#Version=5,1,52,701&quot;&gt; \r\n&lt;param name=&quot;url&quot; value=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; \/&gt; \r\n&lt;param name=&quot;autostart&quot; value=&quot;1&quot; \/&gt;\r\n&lt;param name=&quot;showcontrols&quot; value=&quot;1&quot; \/&gt;\r\n&lt;param name=&quot;stretchtofit&quot; value=&quot;0&quot; \/&gt;\r\n&lt;param name=&quot;enablecontextmenu&quot; value=&quot;0&quot; \/&gt;\r\n&lt;param name=&quot;ShowStatusBar&quot; value=&quot;1&quot; \/&gt;\r\n&lt;param name=&quot;src&quot; value=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; \/&gt;\r\n&lt;embed id=&quot;mediaplayer&quot; type=&quot;application\/x-mplayer2&quot; width=&quot;300&quot; height=&quot;300&quot; src=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; showstatusbar=&quot;1&quot; enablecontextmenu=&quot;0&quot; stretchtofit=&quot;0&quot; showcontrols=&quot;1&quot; autostart=&quot;1&quot; url=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot;&gt;\r\n&lt;\/embed&gt;&lt;\/object&gt;\r\n&lt;!-- Fine codice lettore Media Player --&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Una volta personalizzato e caricato il file sul nostro spazio web e richiamata la pagina dal browser ascolteremo la playlist in ordine casuale.<\/p>\n<p>Clicca <a href='http:\/\/www.donatantonio.net\/script\/player.rar'>qui<\/a> per scaricare lo script completo.<\/p>\n<p>Alcune osservazioni e idee in conclusione:<br \/>\n1 &#8211; La pagina richiede Media Player come player audio<br \/>\n2 &#8211; La cartella contenente le playlist andrebbe &#8220;svuotata&#8221; regolarmente in virt\u00f9 delle connessioni alla pagina. Ci\u00f2 magari \u00e8 implementabile sempre con php.<br \/>\n3 &#8211; Con un p\u00f2 di pazienza e fantasia si potrebbe utilizzare l&#8217;array degli url mp3 per realizzare un player audio implementato in javascript.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo vedremo come realizzare una pagina web che permetta l&#8217;ascolto, tramite il plugin di <em>Windows Media Player<\/em>, di una playlist in formato <em>m3u<\/em> in modalit\u00e0 shuffle cio\u00e8 in ordine casuale di brani.<br \/>\nPi\u00f9 precisamente lo script php realizzer\u00e0 una playlist diversa per ogni chiamata della pagina, in modo tale che ogni utente connesso ascolter\u00e0 la stessa playlist ma in un ordine differente di esecuzione. Potremo, con le dovute differenze, creare una sorta di <em>webradio<\/em>.<\/p>\n<p>Innanzittutto \u00e8 necessario creare un file con estensione <em>.m3u<\/em> che conterr\u00e0 semplicemente la lista degli url degli mp3 da eseguire.<br \/>\nAd esempio l&#8217;ipotetico file playlist.m3u:<\/p>\n<p>http:\/\/www.miosito.com\/musica\/canzone_0.mp3<br \/>\nhttp:\/\/www.miosito.com\/musica\/canzone_1.mp3<br \/>\nhttp:\/\/www.miosito.com\/musica\/canzone_2.mp3<br \/>\nhttp:\/\/www.miosito.com\/musica\/canzone_3.mp3<br \/>\nhttp:\/\/www.miosito.com\/musica\/canzone_4.mp3<\/p>\n<p>Tale file sar\u00e0 locato nel nostro spazio web ad esempio nella cartella \/stream.<\/p>\n<p>Andiamo ora a vedere il codice php che implementer\u00e0 la funzione shuffle:<\/p>\n<p>&lt;?php<br \/>\n\/\/ url del file m3u originale<br \/>\n$file_playlist = &quot;\/stream\/playlist.m3u&quot;;<\/p>\n<p>\/\/ url del file m3u casuale, utilizzo valore random per differenziarlo<br \/>\n$file_playlist_shuffle = &quot;\/stream\/playlist_&quot;.rand (10,9999).&quot;.m3u&quot;;<\/p>\n<p>\/\/ scarico la playlist in un array, ogni elemento \u00e8 un url<br \/>\n$lines = file($file_playlist);<\/p>\n<p>\/\/ ordino in modo casuale gli elementi dell&#8217;array<br \/>\nshuffle($lines);<\/p>\n<p>\/\/ realizzo il file m3u con la playlist casuale<br \/>\n$var=fopen($file_playlist_shuffle,&quot;w&quot;);<br \/>\nfor($i=0; $i&lt;count($lines); $i++){<br \/>\n    fwrite($var, $lines[$i]);<br \/>\n}<br \/>\nfclose($var);<br \/>\n?&gt;<\/p>\n<p>Lo script appena visto verr\u00e0 inserito all&#8217;interno della nostra pagina web prima dell&#8217;aperura del tag html. Una volta conslusa l&#8217;esecuzione del codice php, avremo nella nostra cartella <em>\/stream<\/em> il file originale &#8220;playlist.m3u&#8221; e un file tipo &#8220;playlist_153.m3u&#8221; che conterr\u00e0 la playlist in un ordine diverso. (il numero 153 \u00e8 solo di esempio)<\/p>\n<p>Il player audio andr\u00e0 quindi a leggere il flusso audio dal secondo file appena realizzato.<br \/>\nVediamo quindi il codice completo player.php:<\/p>\n<p>&lt;?php<br \/>\n\/\/ &#8212; INIZIO configurazione script<br \/>\n$url_sito = &quot;http:\/\/www.donatantonio.it\/&quot;;<br \/>\n$file_playlist = &quot;stream\/playlist.m3u&quot;;<br \/>\n$file_playlist_shuffle = &quot;stream\/playlist_&quot;.rand (10,9999).&quot;.m3u&quot;;<br \/>\n\/\/ &#8212; FINE configurazione<\/p>\n<p>$lines = file($file_playlist);<br \/>\nshuffle($lines);<br \/>\n$var=fopen($file_playlist_shuffle,&quot;w&quot;);<br \/>\nfor($i=0; $i&lt;count($lines); $i++){<br \/>\n    fwrite($var, $lines[$i]);<br \/>\n}<br \/>\nfclose($var);<br \/>\n?&gt;<br \/>\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=iso-8859-1&quot; \/&gt;<br \/>\n&lt;meta name=&quot;author&quot; content=&quot;Fabio Donatantonio&quot; \/&gt;<br \/>\n&lt;title&gt;Media Player &#8211; Shuffle Mode&lt;\/title&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;h1&gt;Stai ascoltando la playlist&lt;\/h1&gt;<br \/>\n&lt;!&#8211; Codice lettore Media Player &#8211;&gt;<br \/>\n&lt;object id=&quot;mediaplayer&quot; classid=&quot;clsid:6bf52a52-394a-11d3-b153-00c04f79faa6&quot;<br \/>\nwidth=&quot;300&quot; height=&quot;300&quot;<br \/>\ncodebase = &quot;http:\/\/activex.microsoft.com\/activex\/controls\/mplayer\/en\/nsmp2inf.cab#Version=5,1,52,701&quot;&gt;<br \/>\n&lt;param name=&quot;url&quot; value=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; \/&gt;<br \/>\n&lt;param name=&quot;autostart&quot; value=&quot;1&quot; \/&gt;<br \/>\n&lt;param name=&quot;showcontrols&quot; value=&quot;1&quot; \/&gt;<br \/>\n&lt;param name=&quot;stretchtofit&quot; value=&quot;0&quot; \/&gt;<br \/>\n&lt;param name=&quot;enablecontextmenu&quot; value=&quot;0&quot; \/&gt;<br \/>\n&lt;param name=&quot;ShowStatusBar&quot; value=&quot;1&quot; \/&gt;<br \/>\n&lt;param name=&quot;src&quot; value=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; \/&gt;<br \/>\n&lt;embed id=&quot;mediaplayer&quot; type=&quot;application\/x-mplayer2&quot; width=&quot;300&quot; height=&quot;300&quot; src=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot; showstatusbar=&quot;1&quot; enablecontextmenu=&quot;0&quot; stretchtofit=&quot;0&quot; showcontrols=&quot;1&quot; autostart=&quot;1&quot; url=&quot;&lt;?php echo $url_sito.$file_playlist_shuffle;?&gt;&quot;&gt;<br \/>\n&lt;\/embed&gt;&lt;\/object&gt;<br \/>\n&lt;!&#8211; Fine codice lettore Media Player &#8211;&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<\/p>\n<p>Una volta personalizzato e caricato il file sul nostro spazio web e richiamata la pagina dal browser ascolteremo la playlist in ordine casuale.<\/p>\n<p>Clicca qui per scaricare lo script completo.<\/p>\n<p>Alcune osservazioni e idee in conclusione:<br \/>\n1 &#8211; La pagina richiede Media Player come player audio<br \/>\n2 &#8211; La cartella contenente le playlist andrebbe &#8220;svuotata&#8221; regolarmente in virt\u00f9 delle connessioni alla pagina. Ci\u00f2 magari \u00e8 implementabile sempre con php.<br \/>\n3 &#8211; Con un p\u00f2 di pazienza e fantasia si potrebbe utilizzare l&#8217;array degli url mp3 per realizzare un player audio implementato in javascript.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27],"tags":[143,142,141,144],"_links":{"self":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts\/579"}],"collection":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/comments?post=579"}],"version-history":[{"count":0,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts\/579\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/media?parent=579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/categories?post=579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/tags?post=579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}