2017-02-28 4 views
0

Je télécharge des images en utilisant googliser dans un Mac. J'ai un googliser.sh étaient je peux demander une phrase:Googliser et la liste des fichiers

$ ./googliser.sh --phrase "Mona Lisa – Leonardo da Vinci" --title 'Mona Lisa_Leonardo_da_Vinci' --upper-size 100000 --lower-size 2000 

Il fonctionne, mais je veux télécharger +100 images images, donc je voudrais relier le script avec un fichier csv avec la liste des images et les noms des fichiers, comme ceci:

Mona Lisa – Leonardo da Vinci, 103784 
The scream - Munch, 78332 
The Starry Night - Vincent van Gogh, 34763 
etc. 

Quelqu'un peut-il me dire si cela est possible avec le Darwin?

Merci! PD: comme indiqué dans les commentaires, des problèmes résolus ont été résolus avec googliser sur Mac: https://gist.github.com/dardo82/567eac882b678badfd097bae501b64e2. Le script proposé par @sbarzowski fonctionne parfaitement sur linux:

#!/bin/bash 
mkdir output 
while read line; do 
    phrase="$(echo $line | cut -d ',' -f1)" 
    filename="$(echo $line | cut -d ',' -f2)" 
    echo "phrase: $phrase" 
    echo "filename: $filename" 
    # googliser uses phrase with spaces replaced with underscores 
    # as image directory 
    image_dir="$(echo "$phrase" | sed 's/ /_/g')" 
    # in case it already exists 
    rm -rf "./$image_dir" 

    ./googliser.sh --phrase "$phrase" --upper-size 100000 --lower-size 2000 -g -n1 
    mv "./$image_dir"/* "output/$filename" 
done <data.csv 

Mais sur Mac cela ne fonctionne pas; peut-être parce qu'il n'y a pas de commande read line sur Darwin. Une idée de la commande relative?

+0

Veuillez fournir le résultat souhaité. Voulez-vous produire un certain nombre de mosaïques de googlisers séparées (exécutant essentiellement googliser.sh séparément pour chaque phrase)? Ou peut-être que vous voulez avoir un fichier de sortie avec différentes images? La première variante est def. très facile, l'autre pas nécessairement. Et que signifient ces nombres dans csv? – sbarzowski

+0

Salut, je n'ai pas besoin de la mosaïque (j'ai oublié l'option pour cela, "-g"). La sortie parfaite serait des images séparées avec les numéros de csv comme noms des fichiers - "103784" -. – Nik

+0

Bonjour à nouveau, j'ai vérifié sur un Mac. Il me semble que le googliser lui-même (au moins c'est la version actuelle) ne fonctionne pas sur un Mac. Il y a peu de choses que vous pouvez faire sans modifier le script googliser. – sbarzowski

Répondre

0

Oui, c'est facile. Juste itérer à travers le fichier et pour chaque appel de ligne googliser.

solution complète (je l'ai vérifié fonctionne):

mkdir output 
while read line; do 
    phrase="$(echo $line | cut -d ',' -f1)" 
    filename="$(echo $line | cut -d ',' -f2)" 
    echo "phrase: $phrase" 
    echo "filename: $filename" 

    # googliser uses phrase with spaces replaced with underscores 
    # as image directory 
    image_dir="$(echo "$phrase" | sed 's/ /_/g')" 
    # in case it already exists 
    rm -rf "./$image_dir" 

    ./googliser.sh --phrase "$phrase" --upper-size 100000 --lower-size 2000 -g -n1 
    mv "./$image_dir"/* "output/$filename" 
done <data.csv 

Bien sûr, il est rapide & sale, mais cela devrait être suffisant si vous avez juste besoin de courir à quelques reprises. Si vous en avez besoin plus solide, vous devez analyser le csv correctement (avec échapper) et gérer les erreurs. Dans ce cas, Python/Perl/Ruby serait probablement un meilleur outil.

+0

là, il crée les dossiers, mais pas les fichiers, je reçois une "option illégale - f", et une "option illégale - p." ¿Peut-être est-ce parce que je suis sur Darwin ... – Nik

+0

C'est tout, dans Ubuntu cela fonctionne, mais pas dans Darwin ... – Nik

0

Ok, le script de @sbarzowski fonctionne parfaitement sur mon linux. J'ai des problèmes en cours d'exécution sur mac:

usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...] 
ls: illegal option -- I 

Mais cela a à voir avec la configuration de Darwin. Donc, je vais ouvrir une autre question.

Merci!

+0

Résolu des problèmes de fonctionnement googliser dans Mac, trouvé la réponse ici: https: //gist.github.com/dardo82/567eac882b678badfd097bae501b64e2. Script pour lire les fichiers sous Linux, mais comme la question portait sur Darwin , Je mets à jour. – Nik