identificando IMAGENS a partir de URLS [RESOLVIDO]

1. identificando IMAGENS a partir de URLS [RESOLVIDO]

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 15/10/2010 - 22:33h

Ola a todos...

Bem estou tentando a partir de uma url qualquer saber se ela tem uma imagem...

Por exemplo, usando wget no endereco dessa foto "http://images.balcao.com/2010/06/16/4303466/9276004.jpg", teremos:

wget http://images.balcao.com/2010/06/16/4303466/9276004.jpg

--2010-10-15 22:28:52-- http://images.balcao.com/2010/06/16/4303466/9276004.jpg
Resolvendo images.balcao.com... 200.157.208.241, 200.157.208.240
Conectando-se a images.balcao.com|200.157.208.241|:80... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 13192 (13K) [image/jpeg]
9276004.jpg.1: Permissão negada

Não foi possível escrever em `9276004.jpg.1' (Permissão negada).


Por essa linha "Tamanho: 13192 (13K) [image/jpeg]" podemos saber que estamos fazendo o download de uma imagem...

Pois bem essa seria uma maneira alternativa meio que disperdiciosa para se fazer isso, pois eu teria que baixar a url dps fazer uma busca de string e tudo mais...

alguem poderia me dizer uma forma mais interessante, sem ter que baixar efetivamente a url, com o wget, ? ou ate mesmo, me dizer como so pego essa informacao "Tamanho: 13192 (13K) [image/jpeg]" do wget e ignoro todo o resto?

OBS: o processamento de string para achar o padrao JPEG eh ate que admitivel, mas haveria uma forma sem baixar a url?

Ou seja, dada uma url como saber se ela eh uma imagem?

obrigao,desde ja =)


  


2. obs

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 16/10/2010 - 07:39h

obs: qualquer dica eh util, mesmo que pense que nao vai muito ao cencotnro ao problema... qualqeur coisa faço umas gambiarras :P


3. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2010 - 07:44h

C ?


4. C?

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 16/10/2010 - 08:13h

como assim? :P

Liguagem C?


5. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2010 - 08:26h

isso C/C++


6. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 16/10/2010 - 08:40h

humm... eu pensei em procurar alguma funcao em python que fizesse isso, afinal ja tem td feito em python...

mas em c++? nao tinha pensando...

como vc faria?
Editar


7. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2010 - 08:42h

Se tiver algum conhecimento de C/C++ eh so jogar a saida do comando numa string e bsucar o termo `.jpg` na string.
de uma olhada no header cstring


8. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 16/10/2010 - 08:51h

ahh.. isso tenho... a busca por string tah de boa...

preciso mesmo eh de comando como "wget" que nao faca o download da pagina... que tipo reotorne so o tipo (ou algumas poucas informacoes a mais) do tipo representado pela url...

Oh so... deixa eu ver se me expresso melhor... quando agente da "file" ele retorna que tipo eh aquele arquivo... Ele retorna basicamente o que eu quero... no entanto nao tem como usar "file" para uma url!

Entende? o pro mesmo eh o comando que eu vou usar para saber o que a URL representa


9. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2010 - 08:58h

o wget n'ao tem nenhuma opcao que faca ele somente simular tipo o
apt-get instal batata -s
?
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...

Mandatory arguments to long options are mandatory for short options too.

Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc'-style command.

Logging and input file:
-o, --output-file=FILE log messages to FILE.
-a, --append-output=FILE append messages to FILE.
-d, --debug print lots of debugging information.
-q, --quiet quiet (no output).
-v, --verbose be verbose (this is the default).
-nv, --no-verbose turn off verboseness, without being quiet.
-i, --input-file=FILE download URLs found in local or external FILE.
-F, --force-html treat input file as HTML.
-B, --base=URL resolves HTML input-file links (-i -F)
relative to URL.

Download:
-t, --tries=NUMBER set number of retries to NUMBER (0 unlimits).
--retry-connrefused retry even if connection is refused.
-O, --output-document=FILE write documents to FILE.
-nc, --no-clobber skip downloads that would download to
existing files.
-c, --continue resume getting a partially-downloaded file.
--progress=TYPE select progress gauge type.
-N, --timestamping don't re-retrieve files unless newer than
local.
-S, --server-response print server response.
--spider don't download anything.
-T, --timeout=SECONDS set all timeout values to SECONDS.
--dns-timeout=SECS set the DNS lookup timeout to SECS.
--connect-timeout=SECS set the connect timeout to SECS.
--read-timeout=SECS set the read timeout to SECS.
-w, --wait=SECONDS wait SECONDS between retrievals.
--waitretry=SECONDS wait 1..SECONDS between retries of a retrieval.
--random-wait wait from 0...2*WAIT secs between retrievals.
--no-proxy explicitly turn off proxy.
-Q, --quota=NUMBER set retrieval quota to NUMBER.
--bind-address=ADDRESS bind to ADDRESS (hostname or IP) on local host.
--limit-rate=RATE limit download rate to RATE.
--no-dns-cache disable caching DNS lookups.
--restrict-file-names=OS restrict chars in file names to ones OS allows.
--ignore-case ignore case when matching files/directories.
-4, --inet4-only connect only to IPv4 addresses.
-6, --inet6-only connect only to IPv6 addresses.
--prefer-family=FAMILY connect first to addresses of specified family,
one of IPv6, IPv4, or none.
--user=USER set both ftp and http user to USER.
--password=PASS set both ftp and http password to PASS.
--ask-password prompt for passwords.
--no-iri turn off IRI support.
--local-encoding=ENC use ENC as the local encoding for IRIs.
--remote-encoding=ENC use ENC as the default remote encoding.

Directories:
-nd, --no-directories don't create directories.
-x, --force-directories force creation of directories.
-nH, --no-host-directories don't create host directories.
--protocol-directories use protocol name in directories.
-P, --directory-prefix=PREFIX save files to PREFIX/...
--cut-dirs=NUMBER ignore NUMBER remote directory components.

HTTP options:
--http-user=USER set http user to USER.
--http-password=PASS set http password to PASS.
--no-cache disallow server-cached data.
--default-page=NAME Change the default page name (normally
this is 'index.html'.).
-E, --adjust-extension save HTML/CSS documents with proper extensions.
--ignore-length ignore 'Content-Length' header field.
--header=STRING insert STRING among the headers.
--max-redirect maximum redirections allowed per page.
--proxy-user=USER set USER as proxy username.
--proxy-password=PASS set PASS as proxy password.
--referer=URL include 'Referer: URL' header in HTTP request.
--save-headers save the HTTP headers to file.
-U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.
--no-http-keep-alive disable HTTP keep-alive (persistent connections).
--no-cookies don't use cookies.
--load-cookies=FILE load cookies from FILE before session.
--save-cookies=FILE save cookies to FILE after session.
--keep-session-cookies load and save session (non-permanent) cookies.
--post-data=STRING use the POST method; send STRING as the data.
--post-file=FILE use the POST method; send contents of FILE.
--content-disposition honor the Content-Disposition header when
choosing local file names (EXPERIMENTAL).
--auth-no-challenge send Basic HTTP authentication information
without first waiting for the server's
challenge.

HTTPS (SSL/TLS) options:
--secure-protocol=PR choose secure protocol, one of auto, SSLv2,
SSLv3, and TLSv1.
--no-check-certificate don't validate the server's certificate.
--certificate=FILE client certificate file.
--certificate-type=TYPE client certificate type, PEM or DER.
--private-key=FILE private key file.
--private-key-type=TYPE private key type, PEM or DER.
--ca-certificate=FILE file with the bundle of CA's.
--ca-directory=DIR directory where hash list of CA's is stored.
--random-file=FILE file with random data for seeding the SSL PRNG.
--egd-file=FILE file naming the EGD socket with random data.

FTP options:
--ftp-user=USER set ftp user to USER.
--ftp-password=PASS set ftp password to PASS.
--no-remove-listing don't remove '.listing' files.
--no-glob turn off FTP file name globbing.
--no-passive-ftp disable the "passive" transfer mode.
--retr-symlinks when recursing, get linked-to files (not dir).

Recursive download:
-r, --recursive specify recursive download.
-l, --level=NUMBER maximum recursion depth (inf or 0 for infinite).
--delete-after delete files locally after downloading them.
-k, --convert-links make links in downloaded HTML or CSS point to
local files.
-K, --backup-converted before converting file X, back up as X.orig.
-m, --mirror shortcut for -N -r -l inf --no-remove-listing.
-p, --page-requisites get all images, etc. needed to display HTML page.
--strict-comments turn on strict (SGML) handling of HTML comments.

Recursive accept/reject:
-A, --accept=LIST comma-separated list of accepted extensions.
-R, --reject=LIST comma-separated list of rejected extensions.
-D, --domains=LIST comma-separated list of accepted domains.
--exclude-domains=LIST comma-separated list of rejected domains.
--follow-ftp follow FTP links from HTML documents.
--follow-tags=LIST comma-separated list of followed HTML tags.
--ignore-tags=LIST comma-separated list of ignored HTML tags.
-H, --span-hosts go to foreign hosts when recursive.
-L, --relative follow relative links only.
-I, --include-directories=LIST list of allowed directories.
-X, --exclude-directories=LIST list of excluded directories.
-np, --no-parent don't ascend to the parent directory.

Mail bug reports and suggestions to <bug-wget@gnu.org>.


10. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 16/10/2010 - 09:03h

eu dei uma olhada no --help do wget procurando exatametne isso... e por incrivel que pareca nao axei nada a respeito...

o "incrivel", eh pq axei que fosse uma coisa tao simples (ver a informacao da url, ou retornar so parte da saida de texto padrado dele), mas pareco me inganei =/




11. Re: identificando IMAGENS a partir de URLS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2010 - 10:15h

Tentei algumas noobices do genero:

#include <stdio.h>
#include <stdlib.h>
main()
{
int saida;
saida==system("wget http://www.google.com.br | grep -i .jpg");
printf("%d",saida);
}

sem resultados (Obs. tentei coisas bem masi porcas que isso ai hahahaha).

I'm stuck I'm completely newbie!


12. Respondido, caso quera ver o cogido, ajeita a tabulacao certo?

daniel enos cavalcanti rodrigues de macedo
denosmacedo

(usa Outra)

Enviado em 24/10/2010 - 07:56h

#!/usr/bin/python -u
# -*- coding: iso-8859-1 -*-

import sys
import os
import datetime

while True:
line = sys.stdin.readline()
if not line:
break
param = line.split(' ')
url = param[0]
url = url.replace("\n", "")

s = ("echo "+url+">> /tmp/logcurl")
s = s.replace("\n", " ")
os.system(s)

#Pego a data atual para criar um arquivo no futuro
x = datetime.datetime.now()
y = str (x)
y = y.replace(' ', '')
y = "/tmp/"+y;

#Crio um novo arquivo, com o nome da data atual, contendo o cabeçalho do hatml
s = ("wget -nv -q \"" + url + "\" -O " + y)
s = s.replace("\n", "")
os.system(s)

#leio o arquivo contendo o cabeçalho do html e vejo se tem um arquivo jpg nele.
typeFile = (y+"-type")
s = ("file -b "+y+" > "+ typeFile)

os.system(s)
arq = open(typeFile, "r")
stringTrabalho = arq.read()
ehJPEG = stringTrabalho.find("JPEG")
ehjpeg = stringTrabalho.find("jpeg")
arq.close()

#caso tenha jpeg troca pela a url da logomarca do google, caso nao manda seguir
if ehjpeg != -1 or ehJPEG != -1:
print '302:http://www.dca.ufrn.br/images/DCArev3t.gif\n'
else:
sys.stdout.write('\n')







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts