Ir para o conteúdo

Programação da TV (from ZON.pt)

Esta class serve para se ir buscar toda a inforamação da programação da tv ao site da zon.

<?php
/**
 * @author zeroonnet
 * @version 1.0
 * Programação da TV do site da zon.
 */
class zon
{
    protected $zonurl = 'http://www.zon.pt';
    protected $mainurl = 'http://www.zon.pt/Televisao/Programacao.aspx';
    protected $url = 'http://www.zon.pt/Televisao/ListaProgramas.aspx?cat=&package=9';

    function getInfo($programa)
    {
        $info = array();
        $site = file_get_contents($this->mainurl.'?programId='.$programa);

        $site = explode('<div id="EPG_right_content_deta" class="EPG_right_content_deta">',$site);
        $site = explode('<!--END Right Epg Content-->',$site[1]);
        $site = $site[0];

        if (stripos($site,'class="EPG_dest_photo"><img src="') !== false)
        {
            $imagem = explode('class="EPG_dest_photo"><img src="',$site);
            $imagem = explode('"',$imagem[1]);
            $imagem = $imagem[0];
            $imagem = $this->zonurl.$imagem;
            $info['ImagemPrograma'] = $imagem;
        }

        if (stripos($site,'<param name="src" value="') !== false)
        {
            $trailer = explode('<param name="src" value="',$site);
            $trailer = explode('">',$trailer[1]);
            $trailer = $trailer[0];
            if (strlen($trailer) > 2)
            {
                $info['TrailerPrograma'] = $trailer;
            }
        }

        if (stripos($site,'<p><strong>De:</strong>&nbsp;') !== false)
        {
            $de = explode('<p><strong>De:</strong>&nbsp;',$site);
            $de = explode('</p>',$de[1]);
            $de = $de[0];
            $info['DePrograma'] = $de;
        }

        if (stripos($site,'<p><strong>Com:</strong>&nbsp;') !== false)
        {
            $com = explode('<p><strong>Com:</strong>&nbsp;',$site);
            $com = explode('</p>',$com[1]);
            $com = $com[0];
            $info['ComPrograma'] = $com;
        }

        $nome = explode('<h4 class="EPG_dest_tit">',$site);
        $nome = explode('</h4>',$nome[1]);
        $nome = $nome[0];

        $ptags = explode('</h4>',$site);
        $ptags = explode('<p>',$ptags[1]);
        unset($ptags[0]);
        $encontrado = false;
        foreach ($ptags as $ptag)
        {
            if (stripos($ptag,'<strong>') === false && !$encontrado)
            {
                $descricao = explode('</p>',$ptag);
                $descricao = $descricao[0];
                $encontrado = true;
            }
        }

        if (stripos($site,'<div class="sep_linha_content">') !== false)
        {
            $proximas = explode('<div class="sep_linha_content">',$site);
            $proximas = explode('<p>',$proximas[1]);
            $proximas = explode('</p>',$proximas[1]);
            $proximas = explode('<br />',$proximas[0]);
            unset($proximas[count($proximas) - 1]);
            $sessoes = array();
            foreach ($proximas as $proxima)
            {
                $sessoes[] = trim($proxima);
            }
            $info['SessoesPrograma'] = $sessoes;
        }

        $info['NomePrograma'] = $nome;
        $info['CodigoPrograma'] = $programa;
        $info['DescricaoPrograma'] = $descricao;

        return $info;
    }

    function getProgramas($canal,$dia)
    {
        $site = file_get_contents($this->url.'&channelSigla='.$canal.'&dia='.$dia);

        $data = explode('<td width="80%" nowrap="nowrap" height="20" align="left"><strong>',$site);
        $data = explode('</strong></td>',$data[1]);
        $data = $data[0];

        $programas = explode('<td align="center" class="epgPos epgTime" >',$site);
        unset($programas[0]);

        $programa = array();
        $indice = 0;
        foreach ($programas as $program)
        {
            $hora = explode('</td>',$program);
            $hora = $hora[0];

            $tipo = explode('<td class="',$program);
            $tipo = explode('">',$tipo[1]);
            $tipo = $tipo[0];

            $codigo = explode('PreviewProgram("',$program);
            $codigo = explode('")',$codigo[1]);
            $codigo = $codigo[0];

            $nome = explode('");'>',$program);
            $nome = explode('</a>',$nome[1]);
            $nome = $nome[0];

            $programa[$indice]['HoraPrograma'] = $hora;
            $programa[$indice]['TipoPrograma'] = $tipo;
            $programa[$indice]['CodigoPrograma'] = $codigo;
            $programa[$indice]['NomePrograma'] = $nome;

            $indice++;
        }
        return $programa;
    }

    function getCanais()
    {
        $site = file_get_contents($this->mainurl);

        $site = explode('<option selected="selected" value="ALL">Todos os canais</option>',$site);
        $site = explode('</select>',$site[1]);
        $site = $site[0];

        $options = explode('<option',$site);
        unset($options[0]);

        $canal = array();
        $indice = 0;
        foreach ($options as $option)
        {
            $option = explode('">',$option);

            $codigo = explode('value="',$option[0]);
            $codigo = str_replace('+','%2b',str_replace(' ','%20',$codigo[1]));

            $nome = explode('</option>',$option[1]);
            $nome = $nome[0];

            $imagem = file_get_contents($this->url.'&channelSigla='.$codigo.'&dia=0');
            $imagem = explode('<td class="logo"><img src="..',$imagem);
            $imagem = explode('"',$imagem[1]); 
            $imagem = $imagem[0];
            $imagem = $this->zonurl.$imagem;

            $canal[$indice]['CodigoCanal'] = $codigo;
            $canal[$indice]['NomeCanal'] = $nome;
            $canal[$indice]['ImagemCanal'] = $imagem;

            $indice++;
        }
        return $canal;
    }
}

?>

Exitem tres funçoes.

getCanais retorna todos os canais e os respectivos codigos.

getProgramas tem de se colocar o codigo do canal e o dia (-1,0,1,2,3,4,5,6) sendo que 0 = hoje. e retorna a programacao desse dia para esse canal.

getInfo retorna toda a informação de um determinado programa. tem de se enviar o codigo do programa.