O SAPO possui vários sites de classificados, entre os quais o Auto SAPO.
Para além do portal, o SAPO disponibiliza também um serviço Open Search de consulta, em http://services.sapo.pt/Metadata/Service/Auto.
Para pesquisar por um termo basta aceder a algo como http://services.sapo.pt/Auto/RSS?q=desportivo.
Podem-se igualmente efectuar pesquisas mais específicas, como por exemplo http://services.sapo.pt/Auto/RSS?q=Brand:Renault+descapotável.
É também possível efectuar a pesquisa no formato JSON, bastando para tal usar JSON em vez de RSS; por exemplo: http://services.sapo.pt/Auto/JSON?q=Brand:Renault+descapotável.
O serviço permite ainda funcionalidades como ordenação por preço e paginação.
A descrição completa encontra-se disponível em http://services.sapo.pt/Metadata/Service/Auto.
Update: este serviço deixou de estar disponível.
Em http://services.sapo.pt/Metadata/Service/Sport o SAPO disponibiliza um serviço que permite, entre outras funcionalidades, aceder a resultados e calendários desportivos bem como aos resultados de diversos jogos.
Uma lista dos resultados disponíveis pode ser consultada em http://services.sapo.pt/Sport/Scores:
<Scores xmlns="http://services.sapo.pt/Metadata/Sport"> <Score> <File>EuroMilhoesUltimo.xml</File> <Description>Última Chave do EuroMilhões</Description> </Score> <Score> <File>EuroMilhoesAno.xml</File> <Description>Todas as Chaves do EuroMilhões nos últimos 12 meses</Description> </Score> <Score> <File>NoticiasEuro2008.rss</File> <Description>Noticias Completas do Euro 2008</Description> </Score> <Score> <File>CalendFutebolCampEuropaGrupoA.xml</File> <Description>Euro2008 Fase Qualificação Calend. Grupo A</Description> </Score> <Score> <File>ClassifFutebolCampEuropaGrupoA.xml</File> <Description>Euro2008 Fase Qualificação Classif. Grupo A</Description> </Score> ... </Scores>
Depois, sabendo qual o File que pretendemos, podemos aceder-lhe através de, por exemplo, http://services.sapo.pt/Sport/Score/EuroMilhoesUltimo.xml:
<Score xmlns="http://services.sapo.pt/Metadata/Sport"> <Item> <Id_EuroMilhoes>238</Id_EuroMilhoes> <Concurso>15</Concurso> <Data>2009-04-10T00:00:00.0000000+01:00</Data> <Num_1>9</Num_1> <Num_2>14</Num_2> <Num_3>16</Num_3> <Num_4>37</Num_4> <Num_5>46</Num_5> <Est_1>2</Est_1> <Est_2>4</Est_2> ... </Item> </Score>
A descrição completa do serviço encontra-se em http://services.sapo.pt/Metadata/Service/Sport.
Boas consultas!
Update: este serviço deixou de estar disponível.
Update: este serviço deixou de estar disponível.
Em http://services.sapo.pt/Metadata/Service/Exchange, o SAPO disponibiliza um Web Service para consulta de taxas de câmbio.
Para consultar a lista das moedas suportadas basta aceder a http://services.sapo.pt/Exchange/Currencies, sendo a mesma retornada como:
<Currencies xmlns="http://services.sapo.pt/Metadata/Exchange"> <Currency> <Code>AFA</Code> <Country>Afghanistan Afghani</Country> </Currency> <Currency> <Code>ALL</Code> <Country>Albanian Lek</Country> </Currency> ... </Currencies>
Para sabermos quantos dólares vale um euro podemos aceder a http://services.sapo.pt/Exchange/LastRate/EUR/USD.
Também podemos consultar o valor de uma determinada quantidade de moeda. Por exemplo, para consultar o câmbio de 1,000 dólares em euros acedemos a http://services.sapo.pt/Exchange/LastRate/USD/EUR/1000.
<LastRate xmlns="http://services.sapo.pt/Metadata/Exchange"> <Code>USD</Code> <Amount>1000</Amount> <Date>29-03-2009 21:00:00</Date> <Days>1</Days> <To> <Currency> <Code>EUR</Code> <Ask>752.8000</Ask> <Bid>752.3000</Bid> </Currency> </To> </LastRate>
A descrição completa do serviço encontra-se disponível em http://services.sapo.pt/Metadata/Service/Exchange.
Update: este serviço deixou de estar disponível.
O SAPO disponibiliza um Open Search RSS do seu motor de pesquisa em http://services.sapo.pt/Metadata/Service/Search.
Para efectuar uma pesquisa pelo termo "sapo", por exemplo, basta aceder a http://services.sapo.pt/Search/RSS?q=sapo, recebendo-se uma resposta algo como:
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:products="http://www.sapo.pt/RSS/Modules/Search/Products" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:sapo="http://www.sapo.pt/RSS/Modules/Search" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
<link>http://pesquisa.sapo.pt/?q=sapo&rss=1</link>
<language>pt-pt</language>
<copyright>2008, PT.COM</copyright>
<description>sapo</description>
<title>sapo - Pesquisa SAPO</title>
<openSearch:totalResults>625000</openSearch:totalResults>
<openSearch:itemsPerPage>10</openSearch:itemsPerPage>
<openSearch:startIndex>0</openSearch:startIndex>
<item>
<link>http://adsl.sapo.pt/</link>
<title>SAPO ADSL</title>
<description>Banda Larga Móvel. Se já é Cliente SAPO ADSL, aproveite a Banda Larga Móvel Grátis!</description>
<guid>http://adsl.sapo.pt/</guid>
<author>crawlersapo <crawler@co.sapo.pt></author>
</item>
...
</channel>
</rss>
Para efectuar uma pesquisa pelos termos "software" e "livre", limitando o número de resultados a 5 e usando um offset de 10, por exemplo, basta aceder a http://services.sapo.pt/Search/RSS?q=software+livre&limit=5&offset=10.
Boas pesquisas!
O SAPO sempre se prezou pela inovação e experimentação e esta semana lança um novo serviço: o Puny URL.
Apesar de à primeira vista o Puny URL parecer apenas um outro compactador de URLs, traz uma inovação excelente: Unicode.
O Puny URL compacta um URL de duas formas diferentes, retornando um URL compacto típico e um outro mais compacto ainda, fazendo uso de caracteres Unicode.
Para uma melhor compreensão do serviço colocamos algumas questões à equipa da Pesquisa do SAPO, que desenvolveu este sistema:
Q: Quantos URLs conseguem ter na plataforma?
R: Os que quiseres :) As PunyURLs em Unicode permitem ter aproximadamente 41,000 URLs únicas comprimidas num único caracter; com dois caracteres existem 1,7 mil milhões de combinações possíveis.
Q: Este serviço fornece alguma API para developers que queiram integrar este serviço nas suas aplicações?
R: Sim! Fornecemos uma API nos Web Services do SAPO em http://services.sapo.pt/Metadata/Service/PunyURL e fornecemos uma "Bookmarklet" que os utilizadores podem acrescentar à sua barra de favoritos para criar automaticamente uma PunyURL para a página que estejam a ver.
Q: Que casos práticos de utilização prevêem?
R: O Twitter, o envio de URLs por SMS, dizer um endereço na internet que é complicado pelo telefone... as URLs no formato http://br3.sl.pt são bastante práticas para soletrar - não há maiúsculas nem minúsculas. Essencialmente situações em que a brevidade seja importante. No caso da PunyURL em Unicode poupamos *imenso* espaço, e pode ser útil em serviços como o Twitter, em que se clica na URL.
Q: Como é que isto funciona por baixo e que tecnologia está envolvida?
R: Os serviços de compressão existentes de URLs têm uma base de dados por detrás que mapeia a URL enviada para um número. A URL comprimida é o número convertido de base 10 - o nosso sistema de algarismos - para base 62 - 26 letras maíusculas + 26 letras minúsculas mais os dez algarismos.
O número 500,000 é assim convertido para '264w' em base 62.
No PunyURL funcionamos de forma ligeiramente diferente em *ambas* as URLs comprimidas que fornecemos.
Os browsers modernos permitem caracteres acentuados, como é o caso do domínio da Força Aérea Portuguesa, http://www.forçaaérea.pt/.
Na realidade, o domínio 'forçaaérea.pt' é convertido em 'xn--foraarea-u0aw.pt', através dum sistema de codificação chamado "Punycode", definido no RFC 3492.
Estas regras de conversão permitem que caracteres Unicode europeus, russos e asiáticos possam ser utilizados em domínios.
No PunyURL utilizamos os caracteres dos diversos planos asiáticos, o que nos permite definir o número 500,000 em apenas dois caracteres: 㐋촔.
Assim o serviço pode armazenar milhões de endereços dos nossos utilizadores e continuar a fornecer domínios curtos sem termos de reciclar endereços, o que significa que ficam sempre permanentes.
No caso dos endereços em ASCII, http://b.oi.sl.pt/, utilizamos um truque de DNS chamado "Wildcarding" que permite que endereços não criados vão parar a determinado site. É o que acontece há já alguns anos com o SAPO: http://perl.sapo.pt/ resulta numa pesquisa pela palavra 'perl', porque o domínio .sapo.pt aponta para a Pesquisa do SAPO quando não existe um hostname definido.
No caso do www.sapo.pt, este está definido e não vai à pesquisa do SAPO.
Q: Que protecções contra spam foram implementadas?
R: Verificamos quais os hosts de destino, não permitimos referências circulares e monitorizamos a sua utilização. No entanto, disponibilizamos o serviço de "preview"; se se acrescentar um '-' ao final de uma PunyURL consegue-se ver qual o destino da mesma sem ter de visitar o destino.
Por exemplo: http://b.kp.sl.pt/-.
Para gerar uma Puny URL a partir de qualquer página na Internet arraste o seguinte link para a sua barra de favoritos: PunyURL.
O SAPO disponibiliza um Web Service com a programação de TV (incluindo actualmente todos os canais da oferta MEO).
Para consultar a lista de canais incluidos no sistema basta invocar o serviço em http://services.sapo.pt/EPG/GetChannelList.
A resposta será semelhante a:
<GetChannelListResponse xmlns="http://services.sapo.pt/Metadata/EPG">
<GetChannelListResult>
<Channel>
<Name>RTP1</Name>
<Sigla>RTP1</Sigla>
</Channel>
<Channel>
<Name>RTP2</Name>
<Sigla>RTP2</Sigla>
</Channel>
...
</GetChannelListResult>
</GetChannelListResponse>
Após termos a lista de canais podemos aceder à programação para um canal específico dentro de um intervalo temporal.
Para acedermos à programação do canal RTP2, por exemplo, usamos o serviço em http://services.sapo.pt/EPG/GetChannelByDateInterval.
O resultado será algo como:
<GetChannelByDateIntervalResponse xmlns="http://services.sapo.pt/Metadata/EPG">
<GetChannelByDateIntervalResult>
<Name>RTP2</Name>
<Sigla>RTP2</Sigla>
<Programs>
<Program>
<Id>1600303</Id>
<Title>Os Simpsons T17</Title>
<Description>Homer trabalha como inspector de segurança na fábrica nuclear local; Marge tenta manter a paz na família; Bart é um rapaz endiabrado de 10 anos; Lisa, com 8, é inteligente, toca saxofone e segue a dieta vegetariana; e a bebé Maggie manifesta as emoções sugando desesperadamente a chucha.</Description>
...
<StartTime>2009-03-08 20:00:00</StartTime>
<Duration>3600</Duration>
<EndTime>2009-03-08 21:00:00</EndTime>
</Program>
</Programs>
</GetChannelByDateIntervalResult>
</GetChannelByDateIntervalResponse>
Também podemos aceder a informação mais detalhada sobre um programa acedendo directamente ao mesmo (usando o identificador Id dentro de Program): http://services.sapo.pt/EPG/GetProgramById?programId=1600303.
A descrição do serviço e dos seus métodos encontra-se disponível em http://services.sapo.pt/Metadata/Service/EPG.
O SAPO disponibiliza um Web Service para consulta de feriados portugueses (nacionais, regionais e municipais).
Para consultar os feriados nacionais de 2009, por exemplo, basta invocar o serviço em http://services.sapo.pt/Holiday/GetNationalHolidays?year=2009.
A resposta do serviço é semelhante a (mas mais extensa):
<GetNationalHolidaysResponse xmlns="http://services.sapo.pt/Metadata/Holiday">
<GetNationalHolidaysResult>
<Holiday>
<Name>Ano Novo</Name>
<Date>2009-01-01T00:00:00</Date>
<Description>O Ano-Novo é um evento que acontece quando uma cultura celebra o fim dd
e um ano e o começo do próximo. Todas culturas que têm calendários anuais celebram o ""
Ano-Novo". A celebração do evento é também chamada réveillon, termo oriundo do verbo
réveiller, que em francês significa "despertar".</Description>
<Type>National</Type>
</Holiday>
<Holiday>
<Name>Carnaval</Name>
<Date>2009-02-24T00:00:00</Date>
<Description>Feriado facultativo, sendo rara a sua não utilização na prática. A
data tem origem na tradição pagã de celebrar o final do inverno e foi depois adaptada pp
ela Igreja Católica marcando agora o período de 40 dias antes da Semana Santa (Quaresma))
, ou 47 dias antes da Páscoa, sendo conhecido também por Entrudo</Description>
<Type>Optional</Type>
</Holiday>
...
</GetNationalHolidaysResult>
</GetNationalHolidaysResponse>
Mais exemplos de utilização deste método podem ser consultados em http://services.sapo.pt/Metadata/Service/Holiday/GetNationalHolidays.
Portugal possui 14 feriados:
Para estes últimos feriados móveis existem também métodos específicos (caso não desejemos uma lista exaustiva de feriados): GetEaster, GetCorpusChristi, GetGoodFriday e GetCarnival.
O serviço suporta o cálculo dos feriados para os anos entre 1582 e 2299.
A descrição do serviço e dos seus métodos encontra-se disponível em http://services.sapo.pt/Metadata/Service/Holiday.
Um CAPTCHA é um "Completely Automated Public Turing test to tell Computers and Humans Apart."
Um tipo usual consiste em pedir ao utilizador que identifique os caracteres de uma imagem distorcida.
O SAPO disponibiliza esta funcionalidade através de um Web Service disponível em http://services.sapo.pt/Captcha/.
Gerar um novo CAPTCHA é tão simples como fazer um pedido a http://services.sapo.pt/Captcha/Get.
O serviço retorna uma resposta como:
<Captcha>
<id>b853bd89516e650be2bba45fed191319f8387ed2</id>
<code>sader441</code>
<msg>ok</msg>
</Captcha>
Onde id é o identificador do CAPTCHA gerado e code é a mensagem distorcida.
A partir daqui pode-se exibir a imagem recorrendo apenas a HTML:
<img src="http://services.sapo.pt/Captcha/Show?id=
b853bd89516e650be2bba45fed191319f8387ed2" />
Resta apenas comparar a resposta do utilizador com o parâmetro recebido em code e podemos assim distinguir um bot de um utilizador.
O serviço possui ainda mais uma série de parâmetros que permitem costumizar o aspecto da imagem e o tempo de vida e tamanho do CAPTCHA.
Por exemplo, gerar um CAPTCHA de 9 caracteres numéricos:
http://services.sapo.pt/Captcha/Get?mode=numeric&length=9
Mostrar o CAPTCHA com o texto a vermelho sob fundo azul e fonte tamanho 14:
http://services.sapo.pt/Captcha/Show
?id=401b4f9820a2ce4c0177f2010ded67bf04757a23
&textcolor=ff0000&size=14&background=0000ff
E aqui está uma forma simples de implementar CAPTCHAs nas suas soluções sem que tenha que desenvolver esta funcionalidade.
A descrição do serviço encontra-se em http://services.sapo.pt/Metadata/Service/Captcha.