Comment télécharger une image avec wget et la sauvegarder avec le nom hash md5?

2

Comment puis-je télécharger une image, md5 hacher l'image et enregistrer cette image avec le hachage md5 comme nom dans un répertoire utilisant 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
TheGrayFox
la source

Réponses:

1

Vous pouvez le faire de différentes manières. Un petit script aidera. Vous pouvez l'appeler avec /bin/bash myscript.sh http://yourhost/yourimage.ext where_to_save. Le répertoire de destination est une option:

#!/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

La commande dirnamesupprime le dernier composant du nom de fichier, ainsi que le basenamerépertoire et le suffixe des noms de fichiers.

Vous pouvez même décider de sauvegarder directement le fichier de wget dans le répertoire de destination, puis de calculer le montant md5 et de le renommer. Dans ce cas, vous devez utiliser wget From_where/what.jpg -O destpath. La note est un capital o Oet non un zéro.

Hastur
la source
Appréciez l'explication, merci! Certains fichiers image contiennent des extensions * .png. Sur un Mac, md5 équivaut à notre somme md5.
TheGrayFox
0

C’est un peu complexe à faire, car son seul but est de tirer des choses de l’intarwebs. Vous devrez probablement mélanger un peu les choses.

$ 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

Comme c'est un peu odieux de copier constamment tout le temps, vous pouvez simplement créer un script shell et l'appeler avec "./fetch.sh http://example.com/image.jpg "

$ 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}

J'ai fait un montage rapide pour que ce qui précède fonctionne pour tous les types de fichiers, pas seulement jpg.

Faux noms
la source
Aucun problème. Si vous utilisez un Mac, je ne suis pas sûr à 100% si ce qui précède fonctionnera. Je ne pouvais que tester cela sur une machine Linux.
Falsenames