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

see-tv

Actualização de capas de revistas

22 mensagens neste tópico

Olá viva

Gostaria de saber como é possivel fazer com que estás revistas (http://noticias.sapo.pt/banca/) possam actualizar sozinhas no meu site. Já sei de uma forma de colocar a actualizar, mas é, diariamente. Infelizmente não é isso que procuro, pois estou interessado em colocar apenas algumas revistas, e estas actualizam 1vez por semana, como por exemplo às 2feiras.

O código que me foi disponibilizado foi:

script type="text/javascript">	<!--
var currentTime = new Date();
var hora = currentTime.getHours();
var dia = currentTime.getDate();
var mes = currentTime.getMonth() +1;
var ano = currentTime.getFullYear();

if (hora < 8) {
dia = dia - 1;
}
if (mes < 10) {
mes = "0" + mes;
}
if (dia < 10) {
dia = "0" + dia;
}
document.write("<img src='http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ano + mes + dia +"/thumb_min.jpg' alt='' />");
//-->
</script>

Por exemplo nessa revista "Lux", como ele vai actualizar todos os dias... a revista deixa de aparecer no dia seguinte.

E o que pretendia era algo que fizesse actualizar, apenas às 2feiras.

Espero que me possam dar umas dicas!

Obrigado a todos e Forte Abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tendo em conta que isso está alojado num servidor remoto e é processado pelo cliente porque não simplesmente carregar a imagem que lá está no momento?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

pedrotuga, acho que a imagem tem dias específicos para apararecer, isto é, às 2as feiras, logo o endereço vai ter lá a data apenas de uma 2a feira: se no cliente for por exemplo, uma 3a, para que funcione correctamente, a data deve ser trocada para a 2a feira anterior.

Eu ontem ainda tentei andar de volta disto, mas não obtive grandes resultados. É uma questão de subtracção de datas para que a data seja sempre a 2ª feira anterior, ou no próprio dia (no caso de ser 2ª feira)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha, andava eu a tentar subtrair datas para tentar resolver este problema, quando encontro uma biblioteca de javascript chamada Datejs, que vai isto tudo numa única linha :)

Vais buscar o ficheiro date.js aqui, no menu do lado direito, e depois do download, renomeias para date.js:

http://code.google.com/p/datejs/

Depois no teu código tens de fazer upload e chamar o script:

<script src="/caminho/para/onde/esta/o/ficheiro/date.js"></script>

Por fim, no teu script será tão fácil como:

var ultima2a = Date.today().last().friday();
// ca esta a linha milagrosa que nos evita um monte de ifs e for's 
var diaCompleto = ultima2a.toString("yyyyMMdd");

document.write("<img src='http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + diaCompleto +"/thumb_min.jpg' alt='Revista Lux' />");

Código testado, porém tive de alterar para sexta feira, para que funcionasse.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

softclean

Obrigadíssimo já consegui colocar a revista lux, mas agora eu queria colocar mais revistas.

Consegui colocar todas que actualizam às 6feiras, ou seja, a lux, a maria, a tv guia etc...

Mas precisava de colocar as que actualizam as 2 e 4feiras, o que preciso de alterar?

Forte Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta linha:

var ultima2a = Date.today().last().friday();

Ondes tens friday, deves mudar para o dia da semana que queres, em inglês. No caso, será ....last().monday() ou ....last().wednesday(), para 2ª ou 4ª feira respectivamente

Neste endereço

http://code.google.com/p/datejs/

tens lá vários exemplos bem elucidativos de como trabalhar com as datas :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigadíssimo mais uma vez! :) Para mim isto já está mais que perfeito, mas sem querer abusar da tua ajuda que tem sido espectacular, como é que faço para quando se clica na imagem da revista abrir um link com a imagem em grande e algumas informações que lá posso colocar.

Isso é possivel?

Forte abraço

E mais uma vez muito obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, quanto à imagem, o esquema é o mesmo. Não sei se sabes PHP ou não, mas se trabalhares apenas com HTML, tens de criar uma página por cada revista pretendida. Vamos continuar com o exemplo da lux:

No teu código actual, tens de alterar para:

document.write("<a href='link/para/a/tua/pagina/da/lux.html' target='_blank'><img src='http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + diaCompleto +"/thumb_min.jpg' alt='Revista Lux' /></a>");

No código da tua nova página (seja lux.html), tens de escrever o seguinte script:

<script src="date.js"></script>
<script>
var ultima2a = Date.today().last().friday();
// ca esta a linha milagrosa que nos evita um monte de ifs e for's 
var diaCompleto = ultima2a.toString("yyyy/MM/dd");
document.write("<img src='http://bancadejornais.sapo.pt/" + diaCompleto + "/lux.jpg' alt='Revista Lux' />");
</script>

E depois disso, escreves a página normalmente em código HTML com as informações adicionais que queiras.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já testei tudo e está perfeito! Mas esqueci-me de dizer que era em pop up!

Então fui pesquisar e encontrei uns codigos... mas como não percebo muito de Javascript eu acho que ha aqui qualquer coisa mal...

<div style="text-align: center;"><script src="/datejsrev/date.js"></script>

<script type="text/javascript">
var ultima2a = Date.today().last().friday();
var diaCompleto = ultima2a.toString("yyyyMMdd");

document.write("<a href="" onClick="window.open('http://site.com/capas/lux.html','Janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=600,height=300,left=25,top=25'); return false;"></a><img src='http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + diaCompleto +"/thumb_min.jpg' alt='Revista Lux' /></a>");
</script>

Coloquei o codigo ai no meio onde era o link... mas não dá  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que seja problemas de aspas e plicas. Escapei alguns caracteres com \" e parece estar a funcionar:

var ultima2a = Date.today().last().friday();
// ca esta a linha milagrosa que nos evita um monte de ifs e for's 
var diaCompleto = ultima2a.toString("yyyyMMdd");
document.write("<a href=\"#\" onClick=\"");
document.write("window.open('http://site.com/capas/lux.html','Janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=600,height=300,left=25,top=25'); return false;\">");
document.write("<img src=\"http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + diaCompleto +"/thumb_min.jpg\" alt=\"Revista Lux\" /></a>");

Separei as linhas geradas para não ficarem tão longas e se perceber mais ou menos onde estão as coisas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá pessoal!

Estou aqui com um ligeiro problema... o Sr. Sapo decide não actualizar sempre ao mesmo dia...

Ou seja quando eu colocava para actualizar às 6feiras... (friday), o Sapo as vezes actualiza às 5feiras...

O que gostaria de saber, é se ha alguma forma de mudar aqui no codigo:

<div style="text-align: center;"><script src="/datejsrev/date.js"></script>

<script type="text/javascript">
var ultima2a = Date.today().last().friday();
var diaCompleto = ultima2a.toString("yyyyMMdd");
document.write("<a href=\"#\" onClick=\"");
document.write("window.open('http://sitecom/capas/lux.html','Janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=760,height=585,left=25,top=25'); return false;\">");
document.write("<img src='http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + diaCompleto +"/thumb_min.jpg' alt='Revista Lux2' /></a>");
</script>

de forma a ele actualizar todos os dias, ou pelo menos, mais um ou outro dia à minha escolha, por exemplo 5f e 6f para a mesma revista...

é possível?

Agradece-vos a todos

Muito obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não há forma certa, tens de ir por tentativa erro. Lembrei-me que no caso do caminho não ser válido, ele mostra um 404 Not found. Então, isso não é uma imagem, e se passarmos a uma função de imagem a dimensão desta será 0x0.

Assumindo que tens 5ª e 6ª feira como possibilidade:

<script type="text/javascript">
var ultima6a = Date.today().last().friday();
var ultima5a = Date.today().last().thursday();

var ultima6a = ultima6a.toString("yyyyMMdd");
var ultima5a = ultima5a.toString("yyyyMMdd");

//construir objectos de imagem. O que tiver 0x0 de medidas é inválido
var img6a = new Image();
img6a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima6a +"/thumb_min.jpg";
var img5a = new Image();
img5a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima6a +"/thumb_min.jpg";
var theDay = "";

if (img6a.width == 0 || img5a.heigth == 0) {
    //retornamos o de 5ª feira
    theDay = img5a.src;
} else {
    //retornamos o de 6ª feira
    theDay = img6a.src;
}
document.write("<a href=\"#\" onClick=\"");
document.write("window.open('http://sitecom/capas/lux.html','Janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=760,height=585,left=25,top=25'); return false;\">");
document.write("<img src='" + theDay + "' alt='Revista Lux2' /></a>");
</script>

Agora, chega à 6ª feira, e se a dimensão da imagem for inválida (0x0), retorna a imagem de 5ª e vice-versa.

Testado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado!!!

Tentei aqui inventar uma coisa mas não consegui lololol mas assim já ajuda mais, porque quando não aparecia lá a imagem ficava esse tal erro... assim já não aparece nada!

Perfeito!

Obrigadíssimo mais uma vez por toda a ajuda!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tive a testar aqui numa revista e acontece o seguinte:

Essa revista é actualizada às 2feiras (Dia 23 foi a data da ultima capa) mas não foi actualizada na 2feira (dia 30) e o dia passou para 3feira (dia 31) e ainda não foi actualizada. Assumindo que ela actualiza essa 3feira (dia 31), eu fiz o seguinte:

<script type="text/javascript">
var ultima3a = Date.today().last().tuesday();
var ultima2a = Date.today().last().monday();

var ultima3a = ultima3a.toString("yyyyMMdd");
var ultima2a = ultima2a.toString("yyyyMMdd");

//construir objectos de imagem. O que tiver 0x0 de medidas é inválido
var img3a = new Image();
img3a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima3a +"/thumb_min.jpg";
var img2a = new Image();
img2a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima3a +"/thumb_min.jpg";
var theDay = "";

if (img3a.width == 0 || img2a.heigth == 0) {
    //retornamos o de 2ª feira
    theDay = img2a.src;
} else {
    //retornamos o de 3ª feira
    theDay = img3a.src;
}
document.write("<a href=\"#\" onClick=\"");
document.write("window.open('http://site.com/capas/lux.html','Janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=760,height=585,left=25,top=25'); return false;\">");
document.write("<img src='" + theDay + "' alt='Revista lux' /></a>");
</script>

Mas a imagem não fica 0x0, fica na mesma o titulo da revista escrito... enquanto ela não é actualizada não devia de estar a 0x0 sem titulo?

Abraço a todos

Obrigado mais uma vez

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na tua variável img2a tens

img2a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima3a +"/thumb_min.jpg";

(reparar no ultima3a)

que suponho que seja

img2a.src = "http://imgs.sapo.pt/images/NOTICIAS2008/2.5.6/banca/lux/" + ultima2a +"/thumb_min.jpg";

E na condição if, tens

if (img3a.width == 0 || img2a.heigth == 0) {

tens de por o dia que queres testar, que suponho eu, pelo resto do código, ser isto (3ª feira):

if (img3a.width == 0 || img3a.heigth == 0) {

Se não der, põe aqui exemplos concretos dos links e das imagens que queres para se ver o problema. Não consegui perceber bem o problema, mas em principio estas correcções devem resolver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funcionou!

Agora tentei fazer o mesmo para as imagens que tenho dentro dos .html

Como é o caso do vip.html deveria ter a seguinte imagem (http://bancadejornais.sapo.pt/2009/03/31/vip.jpg) a aparecer dentro dessa página e coloquei o seguinte:

<script src="/datejsrev/date.js"></script>
          <script type="text/javascript">
var ultima3a = Date.today().last().tuesday();
var ultima2a = Date.today().last().monday();

var ultima3a = ultima3a.toString("yyyyMMdd");
var ultima2a = ultima2a.toString("yyyyMMdd");

//construir objectos de imagem. O que tiver 0x0 de medidas é inválido
var img3a = new Image();
img3a.src = "http://bancadejornais.sapo.pt/" + ultima3a +"/vip.jpg";
var img2a = new Image();
img2a.src = "http://bancadejornais.sapo.pt/" + ultima2a +"/vip.jpg";
var theDay = "";

if (img3a.width == 0 || img3a.heigth == 0) {
    //retornamos o de 2ª feira
    theDay = img2a.src;
} else {
    //retornamos o de 3ª feira
    theDay = img3a.src;
}

          </script>

Mas a coisa não está a funcionar :/

Alguém sabe o que está a falhar?

Obrigadíssimo mais uma vez!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque falta o escrever o caminho. E para além disso, necessitas de modificar o formato da data:

var ultima3a = Date.today().last().tuesday().toString("yyyy/MM/dd");

para as outras datas é igual, mudando o dia. No fim, falta "despejar" a imagem:

document.write("<img src=\"" + theDay + "\" alt=\"revista\" />");

Não testado.

Tb podes ver como mudar estes pequenos pormenores na reference do DateJS: http://code.google.com/p/datejs/ (links Get Started)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiz o seguinte, mas continua a não dar:

<script src="/pasta/date.js"></script>
          <script type="text/javascript">
var ultima3a = Date.today().last().tuesday();
var ultima2a = Date.today().last().monday();

var ultima3a = ultima3a.toString("yyyy/MM/dd");
var ultima2a = ultima2a.toString("yyyy/MM/dd");

//construir objectos de imagem. O que tiver 0x0 de medidas é inválido
var img3a = new Image();
img3a.src = "http://bancadejornais.sapo.pt/" + ultima3a +"/vip.jpg";
var img2a = new Image();
img2a.src = "http://bancadejornais.sapo.pt/" + ultima2a +"/vip.jpg";
var theDay = "";

if (img3a.width == 0 || img3a.heigth == 0) {
    //retornamos o de 2ª feira
    theDay = img2a.src;
} else {
    //retornamos o de 3ª feira
    theDay = img3a.src;
}
document.write("<img src='http://bancadejornais.sapo.pt/" + theDay + "/vip.jpg' alt='Revista vip' />");
          </script>

Supostamente dia 31 foi terça feira... devia de dar não? Acho que o código já está certo...

:wallbash:

Obrigado mais uma vez!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só tens o caminho mal, basta veres no meu post imediatamente anterior, já lá está a resposta na 2ª caixa de código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, eu usei esse e mexi, supostamente não teria que colocar o link lá dentro? lolol

Assim também não funciona:

<script src="/pasta/date.js"></script>
          <script type="text/javascript">
var ultima3a = Date.today().last().tuesday();
var ultima2a = Date.today().last().monday();

var ultima3a = ultima3a.toString("yyyy/MM/dd");
var ultima2a = ultima2a.toString("yyyy/MM/dd");

//construir objectos de imagem. O que tiver 0x0 de medidas é inválido
var img3a = new Image();
img3a.src = "http://bancadejornais.sapo.pt/" + ultima3a +"/vip.jpg";
var img2a = new Image();
img2a.src = "http://bancadejornais.sapo.pt/" + ultima2a +"/vip.jpg";
var theDay = "";

if (img3a.width == 0 || img3a.heigth == 0) {
    //retornamos o de 2ª feira
    theDay = img2a.src;
} else {
    //retornamos o de 3ª feira
    theDay = img3a.src;
}
document.write("<img src=\"" + theDay + "\" alt=\"Revista Vip\" />");          </script>

Eu pensava que teria que alterar algo aqui:

document.write("<img src=\"" + theDay + "\" alt=\"Revista Vip\" />");

Mas não dá tambem

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