source: plugins_spip/spip2liquidsoap/liquidsoap_fonctions.php @ 3922

Last change on this file since 3922 was 3922, checked in by kent1, 10 years ago

On enregistre en base ce qui est joué

File size: 2.5 KB
Line 
1<?php
2/**
3 * Transforme les metadatas récupérées via Telnet en un array
4 * d'informations utilisables
5 *
6 * @param string $metadatas
7 * @return array $metas
8 */
9function liquidsoap_get_infos_track($metadatas){
10        $metadatas_array = explode("\n", $metadatas);
11        foreach($metadatas_array as $metadonnee){
12                if(preg_match('/([a-z]*)="(.*)"/s',$metadonnee,$meta)){
13                        $metas[$meta[1]] = $meta[2];
14                }
15        }
16        return $metas;
17}
18
19/**
20 * RécupÚre les informations de ce qui se joue en ce moment
21 *
22 * @param string string|array $retour le format de retour
23 */
24function liquidsoap_on_air($retour='string'){
25        include_spip('classes/savonet');
26
27        /**
28         * La config du serveur
29         */
30        $config = lire_config('liquidsoap');
31        $hostname = $config['serveur'] ? $config['serveur'] : '127.0.0.1';
32        $port = $config['port'] ? $config['port'] : '1234';
33
34        $sav = new savonet($hostname,$port);
35
36        $sav->connect();
37        if($sav->is_connected() == 1){
38                $metadatas = $sav->now_playing($retour);
39        }
40
41        return $metadatas;
42}
43
44/**
45 * #LS_ON_AIR
46 * Afficher ce qui se lit actuellement
47 */
48function balise_LS_ON_AIR($p){
49        $p->code = 'liquidsoap_on_air()';
50        return $p;
51}
52
53/**
54 * Balise #ICECAST_FLUX{url_du_flux}
55 * Retourne true / false
56 */
57function balise_ICECAST_FLUX($p){
58        $_flux = interprete_argument_balise(1,$p);
59        $p->code = 'ls_icecast_flux('.$_flux.')';
60        return $p;
61}
62
63function ls_icecast_flux($url=null){
64
65        if(function_exists('fsockopen') && $url){
66                $parts=parse_url($url);
67                $fp = fsockopen($parts['host'],
68                isset($parts['port'])?$parts['port']:8000,
69                $errno, $errstr, 30);
70                if ($fp) {
71                $out = "GET ".$parts['path']." HTTP/1.1\r\n";
72                $out.= "Host: ".$parts['host']."\r\n";
73                $out.= "Connection: Close\r\n\r\n";
74
75                    fwrite($fp, $out);
76                    $test = fgets($fp, 4096);
77                    fclose($fp);
78                    if(!preg_match('/404/',$test)){
79                        return true;
80                    }else{
81                        return '';
82                    }
83                }else{
84                        return '';
85                }
86        }
87        return '';
88}
89
90/**
91 * liquidsoap_streams
92 *
93 * On récupÚre les différents streams dispos du serveur liquidsoap
94 * que l'on écrit dans les métas
95 *
96 * @return bool true/false
97 */
98function liquidsoap_streams(){
99        include_spip('classes/savonet');
100        $config = lire_config('liquidsoap');
101        $hostname = $config['serveur'] ? $config['serveur'] : '127.0.0.1';
102        $port = $config['port'] ? $config['port'] : '1234';
103
104        $sav = new savonet($hostname,$port);
105        $sav->connect();
106        if($sav->is_connected() == 1){
107                $streams = $sav->stream_list();
108                ecrire_meta('liquidsoap_streams',serialize($streams));
109                return true;
110        }else{
111                return false;
112        }
113}
114?>
Note: See TracBrowser for help on using the repository browser.