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 09/11/2010, à 11:40

into

recherche multi source

Bonjour,

Je voudrais passer des arguments directement à la page google, ex: supposons que je fasse une recherche sur l'histoire française, la ligne de commande serait du style:

firefox http//...google.fr "les mots à chercher" (dans notre cas: histoire de france).

L'idée générale c'est comment je peux accéder aux "portes" des applications (on m'a bien suggérer qdbus mais je n'arrive pas à le faire marcher (liste incomplète quand je demande de lister les processus), donc si quelqu'un a mieux ou mieux, sait utiliser qdbus je suis preneur.)

merci la room,

A ciao bonsoir (bonjour hum huml...)

Hors ligne

#2 Le 09/11/2010, à 17:14

chopinhauer

Re : recherche multi source

firefox http://www.google.fr/search?q=histoire+de+france

De toute manière Firefox n'a pas d'interface Dbus, mais l'interface en ligne de commande passe des arguments à l'instance de Firefox en cours d'exécution.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 09/11/2010, à 19:01

into

Re : recherche multi source

Salut chopinhauer,

Tout d'abord mici pour la réponse.

pour la suite: "mais l'interface en ligne de commande passe des arguments à l'instance de Firefox en cours d'exécution." justement ce que je voulais savoir c comment tu le fais dans un cas géné. Dans notre cas comment tu as su que c'était "firefox http://www.google.fr/search?q=histoire+de+france" et pas par exemple firefox http://www.google.fr/ entry1=histoire+de+france ou entry1 serait une variable pointant vers le champ de saisie.

L'idée (d'où le nom de multi source) serait d'étendre cette recherche sur plusieurs site comme par exemple youtube, daily motion, un moteur de recherche pdf, google images, gigapédia etc. Si je reprends notre exemple ceci donnerais:

SEARCH histoire de france

en arrière plan se lancerais les commandes (via un script):

firefox [url]http://www.google.fr/search?q=histoire+de+france[/url]
firefox http://...dayli.... histoire de france
firefox http:// ....gigépédia... histoires de france
...
.....

Voila j'espère que ça parait plus clair

Hors ligne

#4 Le 09/11/2010, à 19:25

chopinhauer

Re : recherche multi source

Tu peux trouver plein d'informations dans les plugins de recherche Firefox (sans compter aller regarder directement sur le site). Les plugins de recherche sont dans /usr/lib/firefox-addons/searchplugins et ~/.mozilla/firefox/*/searchplugins. Avec un peu de XSLT tu pourrais même faire un script qui prend n'importe que plugin de recherche Firefox et engendre la bonne ligne de commande.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#5 Le 10/11/2010, à 00:58

into

Re : recherche multi source

Je ne connais pas bien le XML et encore moins ls XSLT machin truc mais je vais m'y mettre (j'en ai toujours entendu parler mais je m'étais jamais lancé, c l'occasion XML d'abord, XSLT ensuite.)

Est ce que ça voudrais dire que je peux me façonner un firefox perso avec des affichages, taille de fenêtre, surtout couleur de fond (je le voudrais en noir, j'ai bien tester les thèmes firefox et opéra avec sa fonction contraste mais pas terrible en fin de compte) selon mes gouts?

into

Hors ligne

#6 Le 10/11/2010, à 01:24

chopinhauer

Re : recherche multi source

Une stylesheet du genre :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://www.mozilla.org/2006/browser/search/">
<xsl:output method="text"/>
<xsl:template match="s:Url">
  <xsl:value-of select="@template"/>
  <xsl:if test="s:Param">
    <xsl:text>?</xsl:text>
    <xsl:for-each select="s:Param">
      <xsl:value-of select="@name"/><xsl:text>=</xsl:text>
      <xsl:value-of select="@value"/>
      <xsl:if test="position()!=last()">
    <xsl:text disable-output-escaping="yes">&amp;</xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()"><xsl:text>
</xsl:text></xsl:if>
    </xsl:for-each>
  </xsl:if>
</xsl:template>
<xsl:template match="/">
  <xsl:apply-templates select="s:SearchPlugin/s:Url[@type='text/html']"/>
</xsl:template>
</xsl:stylesheet>

va te donner l'URI à utiliser. Tu peux la tester avec :

xsltproc nom_stylesheet.xsl /usr/lib/firefox-addons/searchplugins/*/*xml

PS: Après il ne te reste que d'inclure la stylesheet dans le script bash, trouver/écrire une fonction bash qui fait du URL encoding (cela se trouve par exemple dans awk, perl ou python; awk est celui avec moins de dépendances) et remplacer {searchTerms} par la chaîne encodée (par exemple avec sed ou si tu préfères, tu peux faire le même chose avec un paramètre xsl:param dans la stylesheet et l'utilisation de certaines fonctions XPath/XSLT).

Dernière modification par chopinhauer (Le 10/11/2010, à 02:36)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#7 Le 10/11/2010, à 02:34

chopinhauer

Re : recherche multi source

En y réfléchissant il ne faut pas beaucoup plus pour le script :

#!/bin/bash
url="$@"
xsltproc --stringparam url "$url" -\
  /usr/lib/firefox-addons/searchplugins/fr/*xml <<'EOF' | xargs firefox
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:s="http://www.mozilla.org/2006/browser/search/"
  xmlns:str="http://exslt.org/strings"
  extension-element-prefixes="str">
<xsl:output method="text"/>
<xsl:param name="url"/>
<xsl:template name="encode_replace">
  <xsl:param name="target"/>
  <xsl:variable name="resa" select="str:encode-uri($url,true())"/>
  <xsl:variable name="resb" select="str:replace($target,'{searchTerms}',$resa)"/>
  <xsl:value-of select="str:replace($resb,'{[^}]*}','')"/>
</xsl:template>
<xsl:template match="s:Url">
  <xsl:call-template name="encode_replace">
    <xsl:with-param name="target" select="@template"/>
  </xsl:call-template>
  <xsl:if test="s:Param">
    <xsl:text>?</xsl:text>
    <xsl:for-each select="s:Param">
      <xsl:value-of select="@name"/><xsl:text>=</xsl:text>
      <xsl:call-template name="encode_replace">
    <xsl:with-param name="target" select="@value"/>
      </xsl:call-template>
      <xsl:if test="position()!=last()">
    <xsl:text disable-output-escaping="yes">&amp;</xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()"><xsl:text>
</xsl:text></xsl:if>
    </xsl:for-each>
  </xsl:if>
</xsl:template>
<xsl:template match="/">
  <xsl:apply-templates select="s:SearchPlugin/s:Url[@type='text/html']"/>
</xsl:template>
</xsl:stylesheet>
EOF

Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#8 Le 16/11/2010, à 23:59

into

Re : recherche multi source

Bonsoir,

En passant, j'ai fais des recherches sur comment (et pourquoi) coder en HTML. Serait-il possible que je puisse extraire des données d'une page web "en codant", je m'explique:

Je connais une page web contenant un tableau avec des données mises à jour disons toutes les 5 min. Est-ce que je peux faire un script (ou autre support de code) permettant d'ouvrir cette page web et de récupérer des données dans ce tableau, voici comment je verrais le prog:

firefox http//adresse...

MaVariable:=? (je voudrais récupérer le contenu de la case m*n du tableau 3 contenu dans cette page...)

fin du prog

Si ça t'inspire,

Into

Hors ligne

#9 Le 17/11/2010, à 01:07

chopinhauer

Re : recherche multi source

Tu peux faire la même chose (feuille de style XSLT) pour extraire des données d'une page HTML. Le sujet Téléchargement de nombreuses pages sur un site et mise en bd pourrait t'intéresser.

Par contre c'est plutôt avec wget ou curl que tu vas récupérer la page et la passer à xsltproc. Si tu veux modifier l'affichage qu'une page a dans Firefox, tu peux regarder du côté de Greasemonkey. Dans Javascript tu peux aussi utiliser XPath via la fonction document.evaluate. Pour des cas un peu complexes elle est bien plus rapide que les fonctions DOM équivalentes.

Avec XPath tu peux récupérer la case (m,n} d'un tableau avec l'expression <expr table>/tr[m]/td[n]<expr table et n'importe quelle expression qui te permet de récupérer l'élément <table>.

PS : HTML est un langage de balisage, pas un langage de programmation. Il te permet de décrire la structure et le contenu d'une page, sa représentation graphique étant de plus en plus souvent décrite en CSS.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne