Como baixar uma imagem com wget e salvá-la com o hash md5 como nome?

2

Como posso fazer um download de uma imagem, md5 hash a imagem e salvar essa imagem com o hash md5 como nome para um diretório usando o wget?

# An example of the image link...
http://31.media.tumblr.com/e1b8907c78b46099fd9611c2ab4b69ef/tumblr_n8rul3oJO91txb5tdo1_500.jpg

# Save the image linked with for name the MD5 hash

d494ba8ec8d4500cd28fbcecf38083ba.jpg

# Save the image with the new name to another directory

~/Users/TheGrayFox/Images/d494ba8ec8d4500cd28fbcecf38083ba.jpg
    
por TheGrayFox 19.07.2014 / 01:58

2 respostas

1

Você pode fazer isso de maneiras diferentes. Um pequeno script ajudará. Você pode ligar com %código%. O diretório de destino é opcional:

#!/bin/bash
MyLink=${1}
DestDir=${2:-"~/Users/TheGrayFox/Images/"}   # fix destination directory
MyPath=$(dirname $MyLink)                    # strip the dirname  (Not used)
MyFile=$(basename $MyLink)                   # strip the filename
Extension="${MyFile##*.}"                    # strip the extension 

wget $MyLink                                 # get the file
MyMd5=$(md5sum $MyFile | awk '{print $1}')   # calculate md5sum
mv $MyFile  ${DestDir}/${MyMd5}.${Extension} # mv and rename the file
echo $MyMd5                                  # print the md5sum if wanted

O comando /bin/bash myscript.sh http://yourhost/yourimage.ext where_to_save retira o último componente do nome do arquivo e o comando dirname retira o diretório e o sufixo dos nomes de arquivo.

Você pode até mesmo decidir salvar diretamente o arquivo do wget no diretório de destino e depois calcular o md5sum e renomeá-lo. Nesse caso, você precisa usar basename . Nota é um capital o wget From_where/what.jpg -O destpath e não um zero.

    
por 19.07.2014 / 02:28
0

Isso é um pouco complexo para o wget fazer, já que seu único propósito é simplesmente extrair material das redes de intar. Você provavelmente terá que embaralhar as coisas um pouco.

$ wget -O tmp.jpg http://31.media.tumblr.com/e1b8907c78b46099fd9611c2ab4b69ef/tumblr_n8rul3oJO91txb5tdo1_500.jpg; mv tmp.jpg $(md5sum tmp.jpg | cut -d' ' -f1).jpg
$ ls *jpg
fdef5ed6533af93d712b92fa7bf98ed8.jpg

Como isso é um pouco desagradável para copypasta o tempo todo, você pode apenas fazer um script de shell e chamá-lo com o link "./fetch.sh "

$ cat fetch.sh 
#! /bin/bash

url=$1
ext=${url##*.}
wget -O /tmp/tmp.fetch $url
sum=$(md5sum /tmp/tmp.fetch | cut -d' ' -f1)
mv /tmp/tmp.fetch ${HOME}/Images/${sum}.${ext}

Eu fiz uma edição rápida para fazer o trabalho acima para todos os tipos de arquivo, não apenas para jpg.

    
por 19.07.2014 / 02:21

Tags