• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zeroonnet

[PHP] Class Programação da TV da ZON

9 mensagens neste tópico

Bem hoje fiz uma class que busca todos os canais, programacao dos mesmos e as infos de cada programa no 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> ') !== false)
	{
		$de = explode('<p><strong>De:</strong> ',$site);
		$de = explode('</p>',$de[1]);
		$de = $de[0];
		$info['DePrograma'] = $de;
	}

	if (stripos($site,'<p><strong>Com:</strong> ') !== false)
	{
		$com = explode('<p><strong>Com:</strong> ',$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.

Bem se virem algum erro ou bug ou se quizerem dar uma sugestão digam xD

Fiquem Bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cool, mas com regex eras capaz de poupar trabalho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

tentei usar isto com o seguinte codigo:

<?php

include("zon.php");

$lista = new zon();

$lista->getProgramas(5,0);

?>

mas o resultado é uma pagina em branco  :)

Alguma dica?

Cumprimentos,

Femajocri

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Provavelmente a class já está desactualizada o site da Zon pode ter mudado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora