Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/03/2011, à 12:20

Zakhar

Upload dl.free.fr en HTTP en script

Bonjour à tous,

est-ce que quelqu'un a déjà fait un script pour uploader sur dl.free.fr en HTTP (et veut bien le partager !).

En effet, il existe déjà des trucs en ftp comme ça http://forum.ubuntu-fr.org/viewtopic.php?id=120246

Mais cela signifie qu'il faut ensuite consulter sa boite mail pour récupérer les liens, et donc on "casse" l'automatisation par script si on veut faire un truc vraiment complet et tout automatique.

Les spécifications seraient :
- Paramètres :
= Nom du fichier à télécharger (optionnellement une liste)
= Nom du fichier résultat pour les liens

Le fichier résultat pour les liens peut se présenter ainsi

abcdejj # nom du fichier d'origine
# http/dl.free.fr/deletelink?....    <= ici le lien pour supprimer le fichier uploadé


Lors du téléchargement, le script peut utiliser le module Ajax pour indiquer la progression.

Si ça existe pas je m'y pencherais.

(J'ai déjà écrit un script qui fonctionne pour le DL en user free et user non-free)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#2 Le 22/03/2011, à 19:26

Zakhar

Re : Upload dl.free.fr en HTTP en script

Bon ben je vais m'y mettre et vous partagerai le résultat (si ça intéresse !)

Faut juste que j'apprenne mieux à utiliser curl, pour l'instant je suis plus familier de wget qui est plus "simple", mais en l'occurrence, il s'agit de poster un formulaire en "multipart" et wget ne sait pas faire.
De toute façon, curl a l'air bien plus évolué et le développement a l'air assez actif.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 27/03/2011, à 19:45

pode

Re : Upload dl.free.fr en HTTP en script

J'ai un script à base de curl et de grep/awk

$ cat dl.sh
#!/bin/sh

# initialisations
URL_FREE=http://dl.free.fr
USER_AGENT="Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15"
REFERER=${URL_FREE}
ENTETE_ACCEPT='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
ENTETE_ACCEPT_LANGUAGE='Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
ENTETE_ACCEPT_CHARSET='Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'

PATTERN_RECUPERATION_ID='<form action='
PATTERN_RESULTAT_DEPOT="The document has moved"
PATTERN_SUIVI_DEPOT_TERMINE='proc&eacute;dure termin&eacute;e avec succ&egrave;s'
PATTERN_SUIVI_DEPOT_EN_COURS='Envoi en cours'
PATTERN_SUIVI_DEPOT_EN_ATTENTE='En attente de traitement'
PATTERN_SUIVI_DEPOT_ANTIVIRUS='Test antivirus'
PATTERN_FICHIER_DEPOSE="${PATTERN_SUIVI_DEPOT_TERMINE}"
PATTERN_DEMANDE_SUPPRESSION="${PATTERN_SUIVI_DEPOT_TERMINE}"
PATTERN_DEMANDE_SUPPRESSION_EFFECTIVE='Si vous souhaitez r&eacute;element supprimer le fichier'

usage() {
  echo "usage : $(basename $0) NomCompletFichier"
}

# debut du script
FICHIER=$1
if [ ! -f "${FICHIER}" ]; then
  usage
  exit 1
fi

echo "Etape 1 - recuperation d'un identifiant de depot sur ${URL_FREE}"
FICHIER_RECUPERATION_ID=$(mktemp)
curl -A "${USER_AGENT}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" "${URL_FREE}" 1>"${FICHIER_RECUPERATION_ID}" 2>"${FICHIER_RECUPERATION_ID}.err"
if [ $? -ne 0 ]; then
  echo "Echec lors de la recuperation d'un identifiant"
  exit 1
fi
URI_DEPOT=$(grep "${PATTERN_RECUPERATION_ID}" ${FICHIER_RECUPERATION_ID} | cut -d \" -f 2)
if [ -z "${URI_DEPOT}" ]; then
  echo "Echec lors de la recuperation d'un identifiant - URI de depot vide"
  exit 1
fi
#echo "URI_DEPOT : ${URI_DEPOT}"

echo "Etape 2 - depot du fichier ${FICHIER} sur ${URL_FREE}${URI_DEPOT}"
FICHIER_RESULTAT_UPLOAD=$(mktemp)
curl -A "${USER_AGENT}" -e "${REFERER}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" -F "ufile=@${FICHIER};filename=${FICHIER};type=application/octet-stream" -F mail1="" -F mail2="" -F mail3="" -F mail4="" -F message="" -F password="" "${URL_FREE}${URI_DEPOT}" 1>"${FICHIER_RESULTAT_UPLOAD}" 2>"${FICHIER_RESULTAT_UPLOAD}.err"
if [ $? -ne 0 ]; then
  echo "Echec lors du depot du fichier"
  exit 1
fi
URL_SUIVI_DEPOT=$(grep "${PATTERN_RESULTAT_DEPOT}" ${FICHIER_RESULTAT_UPLOAD} | cut -d \" -f 2)
if [ -z "${URL_SUIVI_DEPOT}" ]; then
  echo "Echec lors du depot du fichier - URL de suivi vide"
  exit 1
fi
#echo "URL_SUIVI_DEPOT : ${URL_SUIVI_DEPOT}"

echo "Etape 3 - suivi du depot du fichier ${FICHIER} via l'URL ${URL_SUIVI_DEPOT}"
sleep 5
FICHIER_RESULTAT_SUIVI=$(mktemp)
iteration=1
while true
do
  echo "Suivi du depot - iteration numero ${iteration}"
  curl -A "${USER_AGENT}" -e "${REFERER}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" "${URL_SUIVI_DEPOT}" 1>"${FICHIER_RESULTAT_SUIVI}" 2>"${FICHIER_RESULTAT_SUIVI}.err"
  if [ $? -ne 0 ]; then
    echo "Echec lors du suivi du depot"
    exit 1
  fi
  if [ $(grep -c "${PATTERN_SUIVI_DEPOT_TERMINE}" ${FICHIER_RESULTAT_SUIVI}) -eq 1 ]; then
    break
  elif [ $(grep -c -E "(${PATTERN_SUIVI_DEPOT_EN_COURS}|${PATTERN_SUIVI_DEPOT_EN_ATTENTE}|${PATTERN_SUIVI_DEPOT_ANTIVIRUS})" ${FICHIER_RESULTAT_SUIVI}) -eq 1 ]; then
    sleep 5
  else
    echo "Echec lors du suivi du depot - fichier ni traite ni en cours de traitement"
    exit 1
  fi
  iteration=$((iteration+1))
done
URL_FICHIER_DEPOSE=$(grep "${PATTERN_FICHIER_DEPOSE}" ${FICHIER_RESULTAT_SUIVI} | awk ' BEGIN { FS="</*a[^>]*>" } { print $2 } ')
URL_DEMANDE_SUPPRESSION=$(grep "${PATTERN_DEMANDE_SUPPRESSION}" ${FICHIER_RESULTAT_SUIVI} | awk ' BEGIN { FS="</*a[^>]*>" } { print $4 } ')
if [ -z "${URL_DEMANDE_SUPPRESSION}" ]; then
  echo "Echec lors du depot du fichier - URL de demande de suppression du fichier vide"
  exit 1
fi

echo "Etape 4 - recuperation URL de suppression effective du fichier depose"
FICHIER_RESULTAT_DEMANDE_SUPPRESSION=$(mktemp)
curl -A "${USER_AGENT}" -e "${REFERER}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" "${URL_DEMANDE_SUPPRESSION}" 1>"${FICHIER_RESULTAT_DEMANDE_SUPPRESSION}" 2>"${FICHIER_RESULTAT_DEMANDE_SUPPRESSION}.err"
if [ $? -ne 0 ]; then
  echo "Echec lors de la recuperation de l'URL suppression effective du fichier depose"
  exit 1
fi
URL_SUPPRESSION_FICHIER_DEPOSE=$(grep "${PATTERN_DEMANDE_SUPPRESSION_EFFECTIVE}" ${FICHIER_RESULTAT_DEMANDE_SUPPRESSION} | awk ' BEGIN { FS="<a href=\"" } { print $2 } '| cut -d \" -f 1)
if [ -z "${URL_SUPPRESSION_FICHIER_DEPOSE}" ]; then
  echo "Echec lors de la recuperation de l'URL suppression effective du fichier depose - URL effective vide"
  exit 1
fi

echo "Etape 5 - resultats"
echo "Fichier d'origine : ${FICHIER}"
echo "URL Fichier depose : ${URL_FICHIER_DEPOSE}"
echo "URL pour suppression du fichier : ${URL_FREE}${URL_SUPPRESSION_FICHIER_DEPOSE}"

Ça donne ça :

$ ./dl.sh essai 
Etape 1 - recuperation d'un identifiant de depot sur http://dl.free.fr
Etape 2 - depot du fichier essai sur http://dl.free.fr/upload.pl?b03558010845828323205183668496327
Etape 3 - suivi du depot du fichier essai via l'URL http://dl.free.fr/mon.pl?i=11405046&amp;h=paDDA6ic
Suivi du depot - iteration numero 1
Suivi du depot - iteration numero 2
Suivi du depot - iteration numero 3
Suivi du depot - iteration numero 4
Suivi du depot - iteration numero 5
Suivi du depot - iteration numero 6
Suivi du depot - iteration numero 7
Suivi du depot - iteration numero 8
Suivi du depot - iteration numero 9
Suivi du depot - iteration numero 10
Suivi du depot - iteration numero 11
Suivi du depot - iteration numero 12
Suivi du depot - iteration numero 13
Suivi du depot - iteration numero 14
Suivi du depot - iteration numero 15
Suivi du depot - iteration numero 16
Suivi du depot - iteration numero 17
Suivi du depot - iteration numero 18
Suivi du depot - iteration numero 19
Etape 4 - recuperation URL de suppression effective du fichier depose
Etape 5 - resultats
Fichier d'origine : essai
URL Fichier depose : http://dl.free.fr/rh6zLOR4G
URL pour suppression du fichier : http://dl.free.fr/rm.pl?h=h6zLOR4G&i=29359231&s=5IWEsPg8bai5cmgsBoc8WsBCtQ7mzwvu&f=1

Hors ligne

#4 Le 28/03/2011, à 09:41

Zakhar

Re : Upload dl.free.fr en HTTP en script

Impeccable, c'est exactement ce qu'il me fallait !..

Bravo et merci bien, je le récupère et je vais l'adapter à mon besoin exact. big_smile

(Et ça va me permettre d'étudier un peu awk)

P.S.: par contre je me demandais un truc, de ce que j'imaginais, le curl n°2 (envoi) devrait afficher la progression de l'envoi, comme quand on fait un gros download... sauf que là c'est un upload !.. Et la boucle qui suit est le temps d'attente dans la file du scanner Free. Est-ce bien ainsi, ou bien est-ce que le 2ème curl rend la main immédiatement sans attendre la fin de l'upload du fichier ?

Dernière modification par Zakhar (Le 28/03/2011, à 09:51)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 28/03/2011, à 19:09

pode

Re : Upload dl.free.fr en HTTP en script

Zakhar a écrit :

de ce que j'imaginais, le curl n°2 (envoi) devrait afficher la progression de l'envoi, comme quand on fait un gros download... sauf que là c'est un upload !

Les progressions des différents curl sont stockées dans les fichier *.err.
Également, si tu veux une barre de progression avec des dièses au lieu des statistiques standards, il y a l'option -#

Zakhar a écrit :

.. Et la boucle qui suit est le temps d'attente dans la file du scanner Free. Est-ce bien ainsi, ou bien est-ce que le 2ème curl rend la main immédiatement sans attendre la fin de l'upload du fichier ?

Le deuxième curl effectue bien un upload (option -F avec un préfixe @ devant le nom du fichier). Il rend immédiatement la main dès que le serveur lui a indiqué que le POST (et donc l'upload) est terminé.

Le résultat du POST est de ce type :

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://dl.free.fr/mon.pl?i=11421137&amp;h=52kSoV8A">here</A>.<P>
<ADDRESS>Apache/DL [Jun 28 2010 15:00:09] Server at dl.free.fr Port 80</ADDRESS>
</BODY></HTML>

Ça signifie que le fichier déposé a été déplacé (code HTTP 302 : Document déplacé de façon temporaire).

J'imagine que les phases post upload curl effectuées côté serveur Free (correspondant aux messages "Envoi en cours", "En attente de traitement", "Test antivirus"), sont des étapes techniques internes à Free, i.e. le dépôt complet du fichier se fait en plusieurs étapes.
Ce sont en tout cas bien des phases postérieures à l'upload réellement effectué avec curl.

Hors ligne

#6 Le 28/03/2011, à 19:20

Zakhar

Re : Upload dl.free.fr en HTTP en script

Ok, j'ai donc bien compris le truc !..

curl n°1 => préparation
curl n°2 => upload (phase "Envoi en cours")
curl n°3 (boucle) => Attente ("En attente de traitement" + "Test Antivirus")
curl n°4 => résultat final

Et donc, par rapport à l'interface web en ligne, il manque la jauge d'avancement d'upload.
Le navigateur fait ça avec des requêtes XMLHTTPRequest.
Mais en l'occurrence ce serait fort compliqué en shell, car il faudrait faire le curl n°2 en nohup, et faire une boucle de curl correspondant aux XMLHTTPRequests.
C'est en fait totalement inutile de faire ainsi, on peut simplement laisser le curl n°2 afficher sa jauge de progression et on a l'équivalent de l'interface web sans avoir la complexité de faire des XMLHTTPRequest (ce qui de plus consomme de la bande passante !).

... d'où mon interrogation sur le curl n°2, mais tes explications sont très claires.

Encore merci.

P.S.: je teste avec les photos du chien de ma soeur, pour les lui envoyer !

Dernière modification par Zakhar (Le 28/03/2011, à 19:25)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#7 Le 28/03/2011, à 20:33

pode

Re : Upload dl.free.fr en HTTP en script

Précision : on ne peut pas uploader un fichier vide (car il y a des contrôles supplémentaires côté Free).


Sinon, passer par l'interface web peut sembler lourdingue.

Une autre solution est de passer par le serveur FTP ftp://dl.free.fr.
Il faut alors donner une adresse mail valide et choisir un mot de passe. L'adresse mail permet de recevoir une notification.
Pour éviter de recevoir un mail, on peut toujours donner une adresse mai valide (mais bidon), mais je ne sais pas si c'est très apprécié des équipes techniques de Free...

Autres différences :
[*]Via le serveur FTP, les fichiers avec des espaces sont interdits.[/*]
[*]Via l'interface web, les espaces dans les noms des fichiers sont supprimés.[/*]

Par exemple :

$ curl -v -u adresse@cach.ee:motdepassecache -T essai ftp://dl.free.fr
 * About to connect() to dl.free.fr port 21 (#0)
*   Trying 212.27.63.33...   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0connected
* Connected to dl.free.fr (212.27.63.33) port 21 (#0)
< 220 hadl10G-1 FTP server (Version 0.1 - 2007/06/11 00:49) ready.
> USER adresse@cach.ee
< 331 User name okay, need password..
> PASS motdepassecache
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0< 230 Utilisateur anonyme loggue
> PWD
< 257 "/" is current directory.
* Entry path is '/'
> EPSV
* Connect data stream passively
< 500 'EPSV': command unrecognized.
* disabling EPSV usage
> PASV
< 227 Entering Passive Mode (212,27,63,33,200,104).
*   Trying 212.27.63.33... connected
* Connecting to 212.27.63.33 (212.27.63.33) port 51304
> TYPE I
< 200 Type set to I
> STOR essai
< 150 Connexion au port 33630
} [data not shown]
* Remembering we are in dir ""
< 226-Fichier transfere sans probleme
< 226-Traitements en cours....
< 226-
< 226-Fichier "essai" uploade avec succes.
< 226-Il est disponible via http://dl.free.fr/rgcZ0yHVe
< 226-
< 226 Vous pouvez a tout moment supprimer ce fichier via: http://dl.free.fr/rm.pl?h=rgcZ0yHVe&i=29397753&s=KCRQBAKDhH5xfx1BMkPM9PIFPHdnwWqe
100     6    0     0  100     6      0      5  0:00:01  0:00:01 --:--:--     6* Connection #0 to host dl.free.fr left intact

> QUIT
< 221 Goodbye.
* Closing connection #0

L'URL de téléchargement est donnée par la commande suivante (en supposant que le résultat ait été stocké dans un fichier /tmp/toto) :

$ grep -E '^< 226-' /tmp/toto | grep -Eo 'http://dl.free.fr/[^ ]+'
http://dl.free.fr/rgcZ0yHVe

L'équivalent de la variable ${URL_DEMANDE_SUPPRESSION} du précédent script est donnée par la commande suivante (en supposant que le résultat ait été stocké dans un fichier /tmp/toto) :

$ grep -E '^< 226 ' /tmp/toto | grep -Eo 'http://dl.free.fr/[^ ]+'
http://dl.free.fr/rm.pl?h=rgcZ0yHVe&i=29397753&s=KCRQBAKDhH5xfx1BMkPM9PIFPHdnwWqe

Par contre, à partir du résultat de l'upload FTP curl, on ne peut pas avoir l'équivalent de la variable ${URL_FREE}${URL_SUPPRESSION_FICHIER_DEPOSE} du précédent script (qui permet effectivement de supprimer le fichier).
Pour l'avoir, il faut reprendre une partie du précédent script, ou bien récupérer le lien dans le mail envoyé par Free.

Hors ligne

#8 Le 28/03/2011, à 20:34

Zakhar

Re : Upload dl.free.fr en HTTP en script

Ca marche impeccable.

J'ai retiré la redirection du stderr sur le deuxième curl, et j'ai exactement les même infos que sur la page Web, avec la progression de l'upload.

Bravo !

... et oui, c'est encore plus simple en FTP. big_smile

Enfin, j'ai testé en FTP j'ai eu 2 ou 3 fois de suite "erreur de connexion", certainement le service surchargé ? Mais ensuite ça marche impeccable, avec un 2>&1 | tee toto pour avoir le résultat et suivre à l'écran.

Dernière modification par Zakhar (Le 28/03/2011, à 20:53)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 01/04/2011, à 11:20

fwed

Re : Upload dl.free.fr en HTTP en script

Merci pour ce script, c'est vraiment excellent !

Pour ceux (comme moi) qui ont du mal, petite précision à :

Zakhar a écrit :

J'ai retiré la redirection du stderr sur le deuxième curl, et j'ai exactement les même infos que sur la page Web, avec la progression de l'upload.

Il faut changer la ligne :

curl -A "${USER_AGENT}" -e "${REFERER}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" -F "ufile=@${FICHIER};filename=${FICHIER};type=application/octet-stream" -F mail1="" -F mail2="" -F mail3="" -F mail4="" -F message="" -F password="" "${URL_FREE}${URI_DEPOT}" 1>"${FICHIER_RESULTAT_UPLOAD}" 2>"${FICHIER_RESULTAT_UPLOAD}.err"

Par :

curl -A "${USER_AGENT}" -e "${REFERER}" -H "${ENTETE_ACCEPT}" -H "${ENTETE_ACCEPT_LANGUAGE}" -H "${ENTETE_ACCEPT_CHARSET}" -F "ufile=@${FICHIER};filename=${FICHIER};type=application/octet-stream" -F mail1="" -F mail2="" -F mail3="" -F mail4="" -F message="" -F password="" "${URL_FREE}${URI_DEPOT}" 1>"${FICHIER_RESULTAT_UPLOAD}"

Et pour être averti par mail, c'est très clair, il suffit de renseigner mail1, mail2 etc ... idem pour le mot de passe.

Je l'utilise avec la commande "screen" et ça me facilite maintenant la vie ! Encore merci ;-)

Dernière modification par fwed (Le 01/04/2011, à 11:20)

Hors ligne

#10 Le 08/04/2011, à 23:57

Zakhar

Re : Upload dl.free.fr en HTTP en script

PATCH !

A mes dépends... j'ai eu une erreur sur l'étape 3 où on attend que tout soit fini, car il existe un message que Pode n'a pas eu, son fichier de test étant tout petit. Avec un bon gros fichier de 1Go, j'ai eu l'erreur.

Et donc il s'agit du message : 

dl.free.fr a écrit :

Calcul de la somme de contrôle...

Pour rester dans le ton du script, il faut donc rajouter (au début dans les variables) :

PATTERN_SUIVI_DEPOT_CONTROLE='Calcul de la somme de contr&ocirc;le...'

Et à l'étape 3, remplacer  (je met en commentaire la ligne qu'on remplace, et en dessous la nouvelle)

#  elif [ $(grep -c -E  
#  "(${PATTERN_SUIVI_DEPOT_EN_COURS}|${PATTERN_SUIVI_DEPOT_EN_ATTENTE}|${PATTERN_SUIVI_DEPOT_ANTIVIRUS})"
#  ${FICHIER_RESULTAT_SUIVI}) -eq 1 ]; then

 elif [ $(grep -c -E "(${PATTERN_SUIVI_DEPOT_CONTROLE}|${PATTERN_SUIVI_DEPOT_EN_COURS}|${PATTERN_SUIVI_DEPOT_EN_ATTENTE}|${PATTERN_SUIVI_DEPOT_ANTIVIRUS})" ${FICHIER_RESULTAT_SUIVI}) -eq 1 ]; then

...voila... en espérant qu'il n'y a pas encore d'autres messages bizarres qui puissent apparaitre !

Dernière modification par Zakhar (Le 08/04/2011, à 23:58)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#11 Le 09/04/2011, à 08:38

pode

Re : Upload dl.free.fr en HTTP en script

Autre amélioration possible
A la fin du script on a :

echo "URL Fichier depose : ${URL_FICHIER_DEPOSE}"

En fait le contenu de cette variable pointe vers une page qui, si on l'ouvre dans un navigateur, redirige vers une autre page qui affiche la vrai URL où est stocké le fichier.
Si on veut récupérer l'adresse où on peut directement récupérer le fichier, il faut le scripter.

Mais si la récupération du fichier se fait manuellement (via un navigateur), ce n'est pas la peine.

Hors ligne

#12 Le 09/04/2011, à 08:47

Zakhar

Re : Upload dl.free.fr en HTTP en script

Et je me suis fait piéger par le grep !..
J'avais mis des espaces entre les options à rechercher, histoire que ce soit lisible... grave erreur !..
Eh oui, le grep prend les espaces comme des trucs à rechercher et donc ne trouve pas. hmm

Allez, on recommence les 3h d'upload. tongue

P.S.: en réalité, la dernière étape ne fait que rajouter un truc du genre : &f=1 à l'adresse de suppression. Ca sert à confirmer qu'on veut supprimer. On pourrait donc "optimiser" en rajoutant directement ceci sans faire le dernier curl. C'est juste moins portable si Free change ses pages. Mais dans ce cas je suppose que pas mal de chose seraient à revoir dans le script, c'est donc une option qui peut très valablement être prise pour optimiser !


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#13 Le 09/04/2011, à 10:13

Zakhar

Re : Upload dl.free.fr en HTTP en script

PATCH !

Et hop, un message de plus qui peut apparaitre lorsque le fichier est volumineux :

PATTERN_SUIVI_DEPOT_MISE_EN_LIGNE='Mise en ligne du fichier'

et donc comme au post #10, le test devient :

elif [ $(grep -c -E "(${PATTERN_SUIVI_DEPOT_CONTROLE}|${PATTERN_SUIVI_DEPOT_MISE_EN_LIGNE}|${PATTERN_SUIVI_DEPOT_EN_COURS}|${PATTERN_SUIVI_DEPOT_EN_ATTENTE}|${PATTERN_SUIVI_DEPOT_ANTIVIRUS})" $2) -ne 1 ]; then

... et c'est reparti pour 2h45 mad


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#14 Le 09/04/2011, à 11:19

pode

Re : Upload dl.free.fr en HTTP en script

J'avais mis des contrôles pour éviter de tomber dans une boucle infinie (possible si, pour une raisons quelconque, l'appel curl de suivi du dépôt ne fonctionnait pas bien).
Si ce contrôle pose plus de problème qu'autre chose, tu peux le supprimer.

Hors ligne

#15 Le 09/04/2011, à 11:38

Zakhar

Re : Upload dl.free.fr en HTTP en script

Si ça continue de poser des problèmes... je vais effectivement l'enlever et faire un contrôle avec un nombre d'itérations "raisonnable" en regard de la taille du fichier (et on peut toujours laisser le contrôle d'échec)

J'ai aussi fait des modifications de mon crû, du genre passer les "constantes" en "readonly" (ça devrait être un bonne pratique, à moins que ça ne "casse" la compatibilité avec d'autres shell qui ne connaissent pas le mot clé)

J'ai aussi fait les tests sur le code retour de curl avec la "technique du ou logique". C'est peut-être moins lisible que le if, mais plus compact et une technique qui m'a l'air assez habituelle donc somme toute reste lisible.

Comme j'en ai aussi fait une "fonction" pour l'appeler dans d'autres scripts, j'ai changé la façon de gérer les fichiers temporaires (qui dans ton script ne sont pas effacés du tout !... Pratique pour le debug, mais pas cool à la longue). La fonction attend un nom de fichier temporaire en 2ème argument, et c'est charge à l'appelant de le supprimer (ou pas !). Ainsi le code interne de la fonction n'a pas à se préoccuper des cas d'effacement sur erreur (lorsqu'on force un return).

Dernière modification par Zakhar (Le 09/04/2011, à 11:43)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne