Script "allocine" - wget & Cie

Bonsoir à tous,

J’aimerai faire un script qui me listerai certaines infos du site allocine.fr

Ces infos concernent la rubrique “Agenda DVD”.

Je voudrais afficher en console les sorties DVD de la semaine courante avec les infos du film qui vont avec.

Pour commencer, je récupère le code source de la page avec wget -qO- http://www.allocine.fr/dvd/agenda/

Mais après?? Peut être à coup de sed, ou autre??
Je me dis que le code source récupéré est la matière mais comment aborder la suite??

Merci d’avance

J’ai aucune idée de comment tu voudras formater la sortie, mais avec lynx tu peux faire quelquechose dans le genre :$ lynx -dump http://www.allocine.fr/dvd/agenda/ |sed '1,/Sorties/d' |sed '/DVD\ &\ Blu-ray/q' |less

w3m le fait aussi, comme la plupart des navigateurs textes.
Après comme le dit eol, tout dépend ce que tu veux récupérer exactement comme info.

Sais-tu que allociné a un flux rss consacré aux sorties dvd?

Merci pour vos réponse!!

Allociné propose effectivement des flux rss mais pas pour leur rubrique “agenda sorties DVD”

C’est vrai, j’ai oublié l’option “dump” de lynx et w3m

Je vais voir cette piste, merci

Je laisse le post en suspens, m’étonnerai qeu je trouve du premier coup :033

En tout cas Sed est ton ami sur ce coup là.
on pourraît remplacer les sed de mon premier post par :sed '1,/Sorties/d;/DVD\ &\ Blu-ray/q'C’est plus compact et évite un pipe.

Merci beaucoup!!

je suis quelques tutos par ci par là sur sed mais ça n’est pas très évident!

Un coup de main est toujours appréciable, en tout cas je profite de ton “sed compacte” pour comprendre ton fonctionnement :115

A noter que le résultat est plus propre avec w3m (pas de numéros de liens par exemple)

Problème résolue ? (tu clique sur la coche :slightly_smiling: ?)

Bah pas vraiment, je teste, je tente, je tatonne…j’apprend!!

Je le laisse ouvert un peu :115

Bonsoir,
j’avais zapé ce sujet :unamused:

#!/bin/bash
film=false
titre=""
while read
do
  [[ ${REPLY} == *picturezone* ]] && film=true
  [[ ${REPLY} == De\ \<a* ]] && auteur=$(IFS='<>' infos=( ${REPLY} ); echo ${infos[2]})
  [[ ${REPLY} == Avec\ \<a* ]] && acteurs="$(sed 's/<a[^<]*>//g; s#</a>##g' <<< "${REPLY#Avec }")"
  [[ ${REPLY} == *Date\ de\ sortie* ]] && dateSortie="${REPLY#*: }"  || {
	  ${film} && [[ ${REPLY} != *\<*\>* ]] && {
		  if [[ ! ${titre} ]] 
		  then
			titre="${REPLY}"
		  else
			if [[ ! ${typeFilm} ]] 
			then
				typeFilm="${REPLY}"
			else
			   cat <<EOF
Titre=${titre}
Type=${typeFilm}
Date Sortie=${dateSortie}
De=${auteur}
Avec=${acteurs}
Résumé=${REPLY}
EOF
				film=false
				titre=""
				typeFilm=""
			fi
		  fi 
	}
}
done < <(wget -qO- http://www.allocine.fr/dvd/agenda/)

Sortie :

Je rajouterais juste une ligne vide avant l’EOF, histoire de séparer les films, mais bon ça reste cosmétique …

Ce script est impressionnant, eol merci pour tes infos complémentaires!

Je teste cette solution ASAP et clos le post par la suite je pense!

Ok, donc le script de totor avec l’idée de eol pour espace me convient tout à fait

Petite remarque: j’utilise zsh/urxvt et à la fin du script, j’ai zsh: exit 1 ./allocine.sh

Que signifie t-il??

c’est bien étrange effectivement…
j’utilise également zsh et urxvt mais pour faire le script, je m’étais mis en bash…
comment lances-tu le script : juste par son nom (./allocine.sh) ou via l’interpréteur zsh (zsh ./allocine.sh) ?
as-tu mis un shebang bash ou zsh ?

Peux-tu lancer le script ainsi :

bash -x allocine.sh 2>allocine.trc

et mettre à disposition le fichier allocine.trc (normalement il est très volumineux, ce n’est donc pas la peine de le mettre sous balise quote ou code mais donne plutôt un lien pour le downloader)

[quote=“M3t4linux”]Petite remarque: j’utilise zsh/urxvt et à la fin du script, j’ai zsh: exit 1 ./allocine.sh

Que signifie t-il??[/quote]
Que le programme à finis avec un code de retour à 1, met un true en dernière ligne pour vérifier que ça n’apparaît plus (en fait je viens de vérifier ça marche).

Je pense que le dernier read échoue (c’est normal il faut bien finir de lire le fichier un jour) et bash va renvoyer le status de celui-ci.

Je ne sais pas comment faire plus simple/propre que rajouter une ligne true.

[quote=“MisterFreez”]
Je ne sais pas comment faire plus simple/propre que rajouter une ligne true.[/quote]
un simple exit, ou une ligne contenant juste “:” (ce qui revient au true) :wink:

[quote=“Totor”]c’est bien étrange effectivement…
j’utilise également zsh et urxvt mais pour faire le script, je m’étais mis en bash…
comment lances-tu le script : juste par son nom (./allocine.sh) ou via l’interpréteur zsh (zsh ./allocine.sh) ?
as-tu mis un shebang bash ou zsh ?

Peux-tu lancer le script ainsi :

bash -x allocine.sh 2>allocine.trc

et mettre à disposition le fichier allocine.trc (normalement il est très volumineux, ce n’est donc pas la peine de le mettre sous balise quote ou code mais donne plutôt un lien pour le downloader)[/quote]

Totor :

  • Je lance le script par son nom, via ./allocine.sh
  • J’ai mis un shebang “bash” (pas bien??)
  • Je lancerai le script selon tes indications et mettrai un lien pour “pomper” le fichier allocine.trc (en fin d’après midi)

Merci

@MisterFreez, merci pour ton intervention également

Je pense que MisterFreez a raison.
mais je m’étonne que zsh affiche le statut l’un process qui vient de s’arrêter et qui est en erreur. Après, tout dépend comment tu l’as configuré !

[quote=“Totor”]Je pense que MisterFreez a raison.
mais je m’étonne que zsh affiche le statut l’un process qui vient de s’arrêter et qui est en erreur. Après, tout dépend comment tu l’as configuré ![/quote]

Nan!! Chut! Faut pas le dire sinon il va se croire bon après ça :mrgreen: :mrgreen:

Pour la configuration de zsh je conseil ceci « %(?.. [%?]) » dans le prompt ça permet d’afficher le code de retour quand il est différent de 0.

Ça

c’est ce qu’il affiche quand tu lance le script en tâche de fond.